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.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support