Mem-0 Execution Module β Mn tasks (RMBench / RoboTwin 2.0)
Per-task Mem-0 execution-module checkpoints for four RMBench Mn tasks:
battery_try, blocks_ranking_try, cover_blocks, press_button.
Each task has its own executor β trained only on that task's 50-episode
demo_clean dataset β and its own normalization stats (unlike the
m1_mix release, which used one
joint checkpoint for all five M1 tasks).
- Backbone: Qwen3-VL-2B-Instruct (fine-tuned; weights bundled in each checkpoint)
- Action head: DiT-B flow-matching policy (16-D action)
- Memory: MemoryBank (instant + anchor memory fusion across the episode)
- Aux head: subtask-end classifier
- β 2.67 B params per checkpoint; 30,000 training steps per task
Results
task_config = demo_clean, instruction_type = unseen, 100 episodes per task.
action_horizon is the per-task inference-time setting used for these numbers.
| Task | action_horizon | Success Rate | Reward |
|---|---|---|---|
| battery_try | 15 | 0.21 | 0.00 |
| blocks_ranking_try | 15 | 0.15 | 0.00 |
| cover_blocks | 8 | 0.76 | 0.82 |
| press_button | 30 | 0.02 | 0.00 |
| Average | β | 0.285 | β |
Rollout videos (100 per task) and raw score files are under eval_results/
(see eval_results/results.md).
Contents
mn_submit/
βββ README.md
βββ checkpoints/
β βββ <task>/final_step30000.pt (+ .sha256) # one full ckpt per task, ~15.3 GB each
βββ norm_stats/
β βββ <task>/norm_stats.json # per-task min-max state/action stats
βββ eval_results/
βββ results.md # scores + per-task action_horizon
βββ <task>/ # _result.txt, episode*.mp4 (Γ100)
Checkpoints
Each checkpoints/<task>/final_step30000.pt is a single, unsplit full training
checkpoint (~15.3 GB): model_state_dict + optimizer_state_dict +
scheduler_state_dict, global_step 30000. Verify integrity with the .sha256
file next to it:
sha256sum -c final_step30000.pt.sha256
The model_state_dict is self-contained β it already includes the fine-tuned
Qwen3-VL-2B backbone weights. Optional inference-only slimming (~15.3 GB β ~6 GB):
import torch
ck = torch.load("final_step30000.pt", map_location="cpu", weights_only=False)
torch.save({"model_state_dict": ck["model_state_dict"], "global_step": ck["global_step"]},
"final_step30000_inference.pt")
Base VLM
Model instantiation requires the official Qwen/Qwen3-VL-2B-Instruct directory
(architecture + tokenizer/processor; Apache-2.0). Its weights are overwritten by the
checkpoint at load time, but the directory must exist locally:
huggingface-cli download Qwen/Qwen3-VL-2B-Instruct \
--local-dir policy/Mem-0/checkpoints/Qwen3-VL-2B-Instruct
Normalization
State and action are min-max normalized to [-1, 1] using the per-task stats in
norm_stats/<task>/norm_stats.json. Always pair a checkpoint with its own task's
stats at inference; predicted actions are denormalized with the same file.
License & attribution
Base VLM Qwen3-VL-2B-Instruct is Β© the Qwen team, licensed Apache-2.0; the checkpoints embed fine-tuned Qwen weights, so that license applies to the corresponding components. RMBench / RoboTwin and the Mem-0 policy code are governed by their respective upstream licenses.