qiuly commited on
Commit
37c363c
·
verified ·
1 Parent(s): 2acbc12

Add files using upload-large-folder tool

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +21 -0
  2. README.md +185 -0
  3. configs/deploy_policy.yml +69 -0
  4. configs/execution_module_train_m1_mix.yaml +94 -0
  5. eval_results/observe_and_pickup/_result.txt +7 -0
  6. eval_results/observe_and_pickup/episode19.mp4 +3 -0
  7. eval_results/observe_and_pickup/episode2.mp4 +3 -0
  8. eval_results/observe_and_pickup/episode21.mp4 +0 -0
  9. eval_results/observe_and_pickup/episode24.mp4 +3 -0
  10. eval_results/observe_and_pickup/episode30.mp4 +3 -0
  11. eval_results/observe_and_pickup/episode31.mp4 +3 -0
  12. eval_results/observe_and_pickup/episode33.mp4 +3 -0
  13. eval_results/observe_and_pickup/episode36.mp4 +0 -0
  14. eval_results/observe_and_pickup/episode37.mp4 +0 -0
  15. eval_results/observe_and_pickup/episode44.mp4 +3 -0
  16. eval_results/observe_and_pickup/episode47.mp4 +3 -0
  17. eval_results/observe_and_pickup/episode51.mp4 +3 -0
  18. eval_results/observe_and_pickup/episode53.mp4 +3 -0
  19. eval_results/observe_and_pickup/episode59.mp4 +3 -0
  20. eval_results/observe_and_pickup/episode65.mp4 +3 -0
  21. eval_results/observe_and_pickup/episode75.mp4 +3 -0
  22. eval_results/observe_and_pickup/episode79.mp4 +3 -0
  23. eval_results/observe_and_pickup/episode83.mp4 +3 -0
  24. eval_results/observe_and_pickup/episode84.mp4 +3 -0
  25. eval_results/observe_and_pickup/episode85.mp4 +3 -0
  26. eval_results/observe_and_pickup/eval_log.txt +103 -0
  27. eval_results/put_back_block/_result.txt +7 -0
  28. eval_results/put_back_block/eval_log.txt +103 -0
  29. eval_results/rearrange_blocks/_result.txt +7 -0
  30. eval_results/rearrange_blocks/eval_log.txt +103 -0
  31. eval_results/summary.md +44 -0
  32. eval_results/swap_T/_result.txt +7 -0
  33. eval_results/swap_T/episode16.mp4 +3 -0
  34. eval_results/swap_T/episode45.mp4 +3 -0
  35. eval_results/swap_T/episode86.mp4 +3 -0
  36. eval_results/swap_T/episode89.mp4 +3 -0
  37. eval_results/swap_T/eval_log.txt +103 -0
  38. eval_results/swap_blocks/_result.txt +7 -0
  39. eval_results/swap_blocks/eval_log.txt +103 -0
  40. norm_stats/norm_stats.json +6 -0
  41. qwen_base_config/README_Qwen3-VL-2B-Instruct.md +192 -0
  42. qwen_base_config/chat_template.json +4 -0
  43. qwen_base_config/config.json +63 -0
  44. qwen_base_config/generation_config.json +14 -0
  45. qwen_base_config/merges.txt +0 -0
  46. qwen_base_config/preprocessor_config.json +21 -0
  47. qwen_base_config/tokenizer.json +0 -0
  48. qwen_base_config/tokenizer_config.json +239 -0
  49. qwen_base_config/video_preprocessor_config.json +21 -0
  50. qwen_base_config/vocab.json +0 -0
.gitattributes CHANGED
@@ -33,3 +33,24 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ eval_results/observe_and_pickup/episode2.mp4 filter=lfs diff=lfs merge=lfs -text
37
+ eval_results/observe_and_pickup/episode47.mp4 filter=lfs diff=lfs merge=lfs -text
38
+ eval_results/observe_and_pickup/episode19.mp4 filter=lfs diff=lfs merge=lfs -text
39
+ eval_results/observe_and_pickup/episode31.mp4 filter=lfs diff=lfs merge=lfs -text
40
+ eval_results/observe_and_pickup/episode84.mp4 filter=lfs diff=lfs merge=lfs -text
41
+ eval_results/observe_and_pickup/episode75.mp4 filter=lfs diff=lfs merge=lfs -text
42
+ eval_results/observe_and_pickup/episode83.mp4 filter=lfs diff=lfs merge=lfs -text
43
+ eval_results/observe_and_pickup/episode85.mp4 filter=lfs diff=lfs merge=lfs -text
44
+ eval_results/swap_T/episode89.mp4 filter=lfs diff=lfs merge=lfs -text
45
+ eval_results/observe_and_pickup/episode53.mp4 filter=lfs diff=lfs merge=lfs -text
46
+ eval_results/observe_and_pickup/episode59.mp4 filter=lfs diff=lfs merge=lfs -text
47
+ eval_results/observe_and_pickup/episode79.mp4 filter=lfs diff=lfs merge=lfs -text
48
+ eval_results/observe_and_pickup/episode44.mp4 filter=lfs diff=lfs merge=lfs -text
49
+ eval_results/observe_and_pickup/episode33.mp4 filter=lfs diff=lfs merge=lfs -text
50
+ eval_results/observe_and_pickup/episode30.mp4 filter=lfs diff=lfs merge=lfs -text
51
+ eval_results/swap_T/episode86.mp4 filter=lfs diff=lfs merge=lfs -text
52
+ eval_results/observe_and_pickup/episode51.mp4 filter=lfs diff=lfs merge=lfs -text
53
+ eval_results/observe_and_pickup/episode24.mp4 filter=lfs diff=lfs merge=lfs -text
54
+ eval_results/observe_and_pickup/episode65.mp4 filter=lfs diff=lfs merge=lfs -text
55
+ eval_results/swap_T/episode16.mp4 filter=lfs diff=lfs merge=lfs -text
56
+ eval_results/swap_T/episode45.mp4 filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,185 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Mem-0 Execution Module — `m1_mix` (RMBench / RoboTwin 2.0)
2
+
3
+ A single **Mem-0** low-level execution-module checkpoint trained jointly on all five
4
+ RMBench **M1** tasks (the `m1_mix` dataset) and evaluated on each task in turn. M1 tasks
5
+ require only the execution module — **no high-level planner / vLLM is needed for
6
+ inference.**
7
+
8
+ - **Backbone:** Qwen3-VL-2B-Instruct (vision-language) — *weights fine-tuned and bundled in the checkpoint*
9
+ - **Action head:** DiT-B flow-matching policy (action chunk of 30, 16-D action)
10
+ - **Memory:** MemoryBank (instant + anchor memory fusion across the episode)
11
+ - **Aux head:** subtask-end classifier (used for Mn multi-stage tasks; inert for M1)
12
+ - **Total parameters:** ≈ 2.67 B
13
+
14
+ ---
15
+
16
+ ## Results
17
+
18
+ `task_config = demo_clean`, `instruction_type = unseen`, 100 episodes per task, `action_horizon = 30`.
19
+ The **same** checkpoint and **same** `m1_mix` normalization stats are used for every task.
20
+
21
+ | Task | Success Rate | Reward |
22
+ |---------------------|:------------:|:------:|
23
+ | put_back_block | **1.00** | 1.00 |
24
+ | rearrange_blocks | **0.86** | 0.86 |
25
+ | swap_blocks | **0.81** | 0.81 |
26
+ | swap_T | **0.13** | 0.13 |
27
+ | observe_and_pickup | **0.03** | 0.00 |
28
+ | **Average** | **0.566** | — |
29
+
30
+ Per-episode logs and rollout videos for all five tasks are under `eval_results/`.
31
+ See `eval_results/summary.md` for details and `task_instructions.json` for the exact
32
+ per-task language instruction used.
33
+
34
+ ---
35
+
36
+ ## Contents of this bundle
37
+
38
+ ```
39
+ m1_mix_submit/
40
+ ├── README.md # this file
41
+ ├── task_instructions.json # verbatim --global_task per task + scores
42
+ ├── checkpoint/
43
+ │ └── m1_mix_final_step50000.pt # 15.3 GB full training checkpoint (see below)
44
+ ├── norm_stats/
45
+ │ └── norm_stats.json # min-max state/action stats → [-1, 1]
46
+ ├── configs/
47
+ │ ├── execution_module_train_m1_mix.yaml # training config (reproducibility)
48
+ │ └── deploy_policy.yml # inference / deployment config
49
+ ├── qwen_base_config/ # Qwen3-VL-2B-Instruct config/processor ONLY
50
+ │ ├── config.json, generation_config.json
51
+ │ ├── tokenizer*.json, vocab.json, merges.txt
52
+ │ ├── preprocessor_config.json, video_preprocessor_config.json, chat_template.json
53
+ │ └── README_Qwen3-VL-2B-Instruct.md # upstream model card (Apache-2.0)
54
+ └── eval_results/
55
+ ├── summary.md
56
+ └── <task>/ # _result.txt, eval_log.txt, episode*.mp4 (×100)
57
+ ```
58
+
59
+ ### About the checkpoint
60
+
61
+ `checkpoint/m1_mix_final_step50000.pt` is the **full training checkpoint** at step 50000:
62
+
63
+ | key | content |
64
+ |------------------------|----------------------------------------------------------------------|
65
+ | `model_state_dict` | 910 tensors, ≈ 2.67 B params (`qwen_model` ≈ 2.44 B, `action_model` ≈ 160 M, `memory_bank` ≈ 39 M, `classifier` ≈ 32 M); bf16 + fp32 |
66
+ | `optimizer_state_dict` | AdamW moments — for resume/fine-tune only |
67
+ | `scheduler_state_dict` | cosine LR scheduler state |
68
+ | `global_step` | 50000 |
69
+
70
+ The `model_state_dict` is **self-contained**: it already includes the fine-tuned
71
+ Qwen3-VL-2B backbone weights. The bundled `qwen_base_config/` provides only the
72
+ *architecture/tokenizer/processor* config — the base model weights (`model.safetensors`,
73
+ ~4 GB) are **not** re-distributed here; download them from the official repo (see below).
74
+
75
+ **Inference-only slimming** (15.3 GB → ≈ 6 GB) if you don't need to resume training:
76
+
77
+ ```python
78
+ import torch
79
+ ck = torch.load("checkpoint/m1_mix_final_step50000.pt", map_location="cpu", weights_only=False)
80
+ torch.save({"model_state_dict": ck["model_state_dict"], "global_step": ck["global_step"]},
81
+ "m1_mix_inference.pt")
82
+ ```
83
+
84
+ The deploy loader reads `payload["model_state_dict"]` and calls
85
+ `load_state_dict(..., strict=False)`, so either the full or the slimmed file works
86
+ unchanged.
87
+
88
+ ---
89
+
90
+ ## Dependencies
91
+
92
+ 1. **Code:** the RMBench / Mem-0 repository (this checkpoint targets its
93
+ `policy/Mem-0` execution module and `script/eval_policy.py`). Follow the repo README
94
+ for the RoboTwin 2.0 simulator environment setup.
95
+ 2. **Base VLM:** `Qwen/Qwen3-VL-2B-Instruct` (Apache-2.0). Required at model
96
+ instantiation for the architecture + image/text processor. Its weights are
97
+ overwritten by this checkpoint at load time (`strict=False`), but the directory must
98
+ exist and contain `model.safetensors`:
99
+
100
+ ```bash
101
+ huggingface-cli download Qwen/Qwen3-VL-2B-Instruct \
102
+ --local-dir policy/Mem-0/checkpoints/Qwen3-VL-2B-Instruct
103
+ ```
104
+
105
+ The small config/processor files in `qwen_base_config/` are exactly the ones used for
106
+ training and evaluation; you may overlay them onto the downloaded directory if the
107
+ upstream revision differs.
108
+
109
+ ---
110
+
111
+ ## How to run evaluation
112
+
113
+ Point the deploy config at the checkpoint and the `m1_mix` stats, then run one task at a
114
+ time. This mirrors exactly how the numbers above were produced:
115
+
116
+ ```bash
117
+ python script/eval_policy.py --config policy/Mem-0/deploy_policy.yml --overrides \
118
+ --task_name swap_blocks \
119
+ --execution_ckpt /path/to/m1_mix_final_step50000.pt \
120
+ --state_stats_path /path/to/norm_stats/norm_stats.json \
121
+ --ckpt_setting m1mix \
122
+ --global_task "There are three traies on the table, and two blocks are placed in two different traies. You may move only one block at a time, and each tray can hold at most one block. Swap the positions of the two blocks. Finally press the button." \
123
+ --action_horizon 30
124
+ ```
125
+
126
+ - Replace `--task_name` and `--global_task` with each of the five tasks (strings in
127
+ `task_instructions.json`). The checkpoint and `--state_stats_path` stay the same.
128
+ - `--ckpt_setting m1mix` only labels the output directory
129
+ (`eval_result/<task>/Mem-0/demo_clean/m1mix/<timestamp>/`).
130
+ - `--vllm_url` is accepted but unused for M1 tasks (the global instruction is set
131
+ directly; the planner client is constructed but never queried).
132
+ - Ensure `execution_module.qwen_vl.model_path` in `deploy_policy.yml` points to your
133
+ downloaded Qwen3-VL-2B-Instruct directory.
134
+
135
+ ---
136
+
137
+ ## Model architecture (from `configs/`)
138
+
139
+ - **VLM backbone** — Qwen3-VL-2B-Instruct, 224×224 head-camera image + language
140
+ instruction, last-layer hidden states (hidden size 2048).
141
+ - **MemoryBank** — `window_size 30`, `initial_anchor_size 1`, `num_heads 8`,
142
+ `memory_accumulation 8`, `dropout 0.1`; fuses an instant-memory and an anchor-memory
143
+ token; concatenated with the text feature → a 3-token summary `(B, 3, 2048)`.
144
+ - **DiT-B action head** (`FlowmatchingActionHead`) — `num_layers 16`,
145
+ `cross_attention_dim 2048`, `action_dim 16`, `state_dim 16`, `action_horizon 30`,
146
+ `num_inference_timesteps 8`; flow-matching regression of a 30-step action chunk.
147
+ - **Subtask-end classifier** — MLP `hidden_sizes [6144, 2048, 512]`, `pos_weight 10.0`,
148
+ `focal_gamma 1.0`, `threshold 0.5`. Drives stage transitions in Mn tasks; for M1 the
149
+ episode is a single stage so it does not affect rollout.
150
+
151
+ ## Training (from `configs/execution_module_train_m1_mix.yaml`)
152
+
153
+ - **Data:** `m1_mix` (the five M1 tasks merged into one LeRobot dataset with globally
154
+ unique `episode_id`s). Features: head-camera image, state, action, subtask,
155
+ subtask_end, episode_id.
156
+ - **Schedule:** `train_steps 50000`, `batch_size 56`, cosine scheduler,
157
+ `warmup_ratio 0.05`, `grad_clip_norm 2.5`, `weight_decay 0.005`, `seed 42`.
158
+ - **Learning rates:** base `1e-5`, qwen_model `1e-5`, action_model `1e-4`,
159
+ classifier `1e-4` (min LRs `1e-6 / 1e-6 / 5e-6 / 5e-6`).
160
+ - **Loss:** `lambda_action 1.0`, `lambda_classifier 0.2`.
161
+
162
+ ## Normalization
163
+
164
+ State and action are min-max normalized to `[-1, 1]` over the 14 arm dimensions using
165
+ `norm_stats/norm_stats.json` (`NORM_WAY = "minmax"` in `deploy_policy.py`). Use the same
166
+ stats file at inference; predicted actions are denormalized with it before being sent to
167
+ the environment. Action chunks from overlapping predictions are averaged (mean smoothing)
168
+ before execution.
169
+
170
+ ## Limitations
171
+
172
+ - **swap_T (0.13)** and **observe_and_pickup (0.03)** are weak: the former needs precise
173
+ T-block position *and* orientation alignment; the latter needs cross-view target
174
+ re-identification after a visual occlusion followed by a pickup. The joint `m1_mix`
175
+ model does not solve these reliably.
176
+ - Numbers are on RoboTwin 2.0 `demo_clean` with `unseen` instruction phrasings; other
177
+ task configs / domain randomization will differ.
178
+
179
+ ## License & attribution
180
+
181
+ - Base VLM **Qwen3-VL-2B-Instruct** is © the Qwen team, licensed **Apache-2.0**
182
+ (see `qwen_base_config/README_Qwen3-VL-2B-Instruct.md`). Because the checkpoint
183
+ embeds fine-tuned Qwen weights, that license applies to the corresponding components.
184
+ - RMBench / RoboTwin and the Mem-0 policy code are governed by their respective upstream
185
+ licenses; refer to the source repository.
configs/deploy_policy.yml ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Basic experiment configuration (overridable via eval.sh --overrides)
2
+ policy_name: Mem-0
3
+ task_name: x # TODO
4
+ task_config: demo_clean
5
+ ckpt_setting: default
6
+ seed: 0
7
+ instruction_type: unseen
8
+
9
+ # Runtime/inference settings
10
+ device: cuda:0
11
+ camera_key: head_camera
12
+ image_size: [224, 224]
13
+ execution_ckpt: ./policy/Mem-0/checkpoints/x.pt # TODO
14
+ state_stats_path: ./policy/Mem-0/assets/x/norm_stats.json # TODO
15
+
16
+ planning_module_config_path: ./policy/Mem-0/source/config/planning_module_inference.yaml
17
+ vllm_url: http://localhost:8000 # TODO
18
+
19
+ action_horizon: 30
20
+ threshold: 2 # when subtask end signal count reaches this value, we consider the subtask ended and move to the next one
21
+ global_task: null
22
+
23
+ execution_module:
24
+ # Qwen Model
25
+ qwen_vl:
26
+ model_path: ./policy/Mem-0/checkpoints/Qwen3-VL-2B-Instruct
27
+ system_prompt: null
28
+ # Memory Bank
29
+ memory_bank:
30
+ window_size: 30
31
+ initial_anchor_size: 1
32
+ num_heads: 8
33
+ dropout: 0.1
34
+ memory_accumulation: 8
35
+ # DiT Action Model
36
+ action_model:
37
+ action_model_type: DiT-B
38
+ hidden_size: 2048
39
+ add_pos_embed: True
40
+ max_seq_len: 1024
41
+ action_dim: 16
42
+ state_dim: 16
43
+ action_horizon: 30
44
+ repeated_diffusion_steps: 8
45
+ noise_beta_alpha: 1.5
46
+ noise_beta_beta: 1.0
47
+ noise_s: 0.999
48
+ num_timestep_buckets: 1000
49
+ num_inference_timesteps: 8
50
+ diffusion_model_cfg: # DiT transformer parameters
51
+ cross_attention_dim: 2048 # VLM hidden dim
52
+ dropout: 0.2
53
+ final_dropout: true
54
+ interleave_self_attention: true
55
+ norm_type: "ada_norm"
56
+ num_layers: 16
57
+ output_dim: 2048
58
+ positional_embeddings: null
59
+ # Subtask End Classifier
60
+ classifier:
61
+ hidden_sizes: [6144, 2048, 512]
62
+ dropout: 0.1
63
+ pos_weight: 10.0 # counter class imbalance (false-dominant)
64
+ focal_gamma: 1.0 # optional focal term; set 0.0 to disable
65
+ threshold: 0.5 # probability threshold for positive subtask prediction
66
+ # Loss Weights
67
+ loss_weights:
68
+ lambda_action: 1.0
69
+ lambda_classifier: 0.2
configs/execution_module_train_m1_mix.yaml ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ seed: 42
2
+ wandb_entity: null
3
+ wandb_project: Mem-0
4
+ is_debug: false
5
+ execution_module:
6
+ qwen_vl:
7
+ model_path: ./checkpoints/Qwen3-VL-2B-Instruct
8
+ system_prompt: null
9
+ memory_bank:
10
+ window_size: 30
11
+ initial_anchor_size: 1
12
+ num_heads: 8
13
+ dropout: 0.1
14
+ memory_accumulation: 8
15
+ action_model:
16
+ action_model_type: DiT-B
17
+ hidden_size: 2048
18
+ add_pos_embed: true
19
+ max_seq_len: 1024
20
+ action_dim: 16
21
+ state_dim: 16
22
+ action_horizon: 30
23
+ repeated_diffusion_steps: 8
24
+ noise_beta_alpha: 1.5
25
+ noise_beta_beta: 1.0
26
+ noise_s: 0.999
27
+ num_timestep_buckets: 1000
28
+ num_inference_timesteps: 8
29
+ diffusion_model_cfg:
30
+ cross_attention_dim: 2048
31
+ dropout: 0.2
32
+ final_dropout: true
33
+ interleave_self_attention: true
34
+ norm_type: ada_norm
35
+ num_layers: 16
36
+ output_dim: 2048
37
+ positional_embeddings: null
38
+ classifier:
39
+ hidden_sizes:
40
+ - 6144
41
+ - 2048
42
+ - 512
43
+ dropout: 0.1
44
+ pos_weight: 10.0
45
+ focal_gamma: 1.0
46
+ threshold: 0.5
47
+ loss_weights:
48
+ lambda_action: 1.0
49
+ lambda_classifier: 0.2
50
+ dataloader:
51
+ type: rmbench_random_episode
52
+ num_workers: 2
53
+ shuffle_episodes: true
54
+ seed: 42
55
+ infinite: true
56
+ norm_stats_path: ./assets/m1_mix/norm_stats.json
57
+ trainer:
58
+ wandb_run_name: mem0_exec_m1_mix
59
+ resume: null
60
+ batch_size: 56
61
+ train_steps: 50000
62
+ eval_action_interval: 100
63
+ log_interval: 10
64
+ classifier_metrics_window_size: 20
65
+ enable_wandb: true
66
+ checkpoint_dir: /mnt/data/limingleyang/rmbench_assets/checkpoints/m1_mix
67
+ save_every_steps: 1000
68
+ save_final: true
69
+ scheduler: cosine
70
+ warmup_ratio: 0.05
71
+ grad_clip_norm: 2.5
72
+ weight_decay: 0.005
73
+ learning_rate:
74
+ base: 1.0e-05
75
+ qwen_model: 1.0e-05
76
+ action_model: 0.0001
77
+ classifier: 0.0001
78
+ min_lr:
79
+ base: 1.0e-06
80
+ qwen_model: 1.0e-06
81
+ action_model: 5.0e-06
82
+ classifier: 5.0e-06
83
+ freeze_modules: ''
84
+ download_videos: false
85
+ vla_dataset:
86
+ RMBench:
87
+ repo_id: /mnt/data/limingleyang/rmbench_assets/lerobot_datasets/m1_mix
88
+ features_to_load:
89
+ - observation.state
90
+ - action
91
+ - subtask
92
+ - subtask_end
93
+ - episode_id
94
+ - observation.image.head_camera
eval_results/observe_and_pickup/_result.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ Timestamp: 2026-06-23 05:03:56
2
+
3
+ Instruction Type: unseen
4
+
5
+ Success Rate: 0.03
6
+
7
+ Reward: 0.0
eval_results/observe_and_pickup/episode19.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0c277591f3fe46e4f6dcab1721f96b71a7467e4e0cbb47ff99179d0fb4a50b96
3
+ size 132870
eval_results/observe_and_pickup/episode2.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5c3644155902829ffc7e37afb6a613ef1320f7fdc719fd10e80b07404f594640
3
+ size 137615
eval_results/observe_and_pickup/episode21.mp4 ADDED
Binary file (64.1 kB). View file
 
eval_results/observe_and_pickup/episode24.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:27d09136c5b24ad5d55c8e56c1341f45192b5669566c14410e459b52841434ea
3
+ size 161617
eval_results/observe_and_pickup/episode30.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:80cf05d6225cdf2429833a3018cf2c835352b1b8f14eeb5adf00b56ef4e80aa6
3
+ size 137259
eval_results/observe_and_pickup/episode31.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fa7dfeb228a6ef5e3a5146d2735b0ff58244ffb848af6924ec95f012822e9211
3
+ size 132654
eval_results/observe_and_pickup/episode33.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:617aca924efc4e55bd5ee85a570aa719bf9b052ef5bb48880b737c32ab3ca7fd
3
+ size 135452
eval_results/observe_and_pickup/episode36.mp4 ADDED
Binary file (64.7 kB). View file
 
eval_results/observe_and_pickup/episode37.mp4 ADDED
Binary file (55.6 kB). View file
 
eval_results/observe_and_pickup/episode44.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b08adfa20dfda96bd615cd4f701f4c8ee4b21409d400d6c43924aff95755e453
3
+ size 139620
eval_results/observe_and_pickup/episode47.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b4b3ae69a6e2ca511445702721c93737fa43b3fa0d147735029757b5f5044e6f
3
+ size 133304
eval_results/observe_and_pickup/episode51.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c02ef9d4d48754278887b27fa2917bc353afe2dc6f53565fe51994bd07e41cd5
3
+ size 139551
eval_results/observe_and_pickup/episode53.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c63ba25de824a1b3b30c753d8738164741f2a3c6345e46471c5137a1e13fd629
3
+ size 139645
eval_results/observe_and_pickup/episode59.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:525b5f80c7b5b752996b20ed779b526cd485e2687d01424a5599396a938b30ec
3
+ size 166244
eval_results/observe_and_pickup/episode65.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8219151c4b12cca13af4f664212355cde9bbdd2426dfd95b93b0078b67300762
3
+ size 143595
eval_results/observe_and_pickup/episode75.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9961ac2a5992cfd18db59178e6de078eca9576ebe3563e66a43eb62ff13576fd
3
+ size 145096
eval_results/observe_and_pickup/episode79.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5cdc1a29152b179ae683add7e2c9595a07b675e0f1fe4ce61d60f79065628c99
3
+ size 152113
eval_results/observe_and_pickup/episode83.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ca7fa899b085e9249bc3d77f2097161e8a0912e8afa52e1d02680ad1d733a08a
3
+ size 139641
eval_results/observe_and_pickup/episode84.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f12856ab2e96d723c25235ab58d85eb58a2f6dc7934ffcd08f050a540fbf7413
3
+ size 137300
eval_results/observe_and_pickup/episode85.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d0739536c639c364ad0d6673cb13aa11a6f59312fef4c6509fb7cfe8aa2c39c7
3
+ size 128717
eval_results/observe_and_pickup/eval_log.txt ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Eval log for observe_and_pickup | Mem-0 | demo_clean | m1mix
2
+ Timestamp: 2026-06-23 05:03:56
3
+
4
+ episode_id=0, seed=100000, result=Fail
5
+ episode_id=1, seed=100001, result=Fail
6
+ episode_id=2, seed=100002, result=Fail
7
+ episode_id=3, seed=100003, result=Fail
8
+ episode_id=4, seed=100004, result=Fail
9
+ episode_id=5, seed=100005, result=Fail
10
+ episode_id=6, seed=100006, result=Fail
11
+ episode_id=7, seed=100007, result=Fail
12
+ episode_id=8, seed=100008, result=Fail
13
+ episode_id=9, seed=100009, result=Fail
14
+ episode_id=10, seed=100010, result=Fail
15
+ episode_id=11, seed=100011, result=Fail
16
+ episode_id=12, seed=100012, result=Fail
17
+ episode_id=13, seed=100013, result=Fail
18
+ episode_id=14, seed=100014, result=Fail
19
+ episode_id=15, seed=100015, result=Fail
20
+ episode_id=16, seed=100016, result=Fail
21
+ episode_id=17, seed=100017, result=Fail
22
+ episode_id=18, seed=100018, result=Fail
23
+ episode_id=19, seed=100019, result=Fail
24
+ episode_id=20, seed=100020, result=Fail
25
+ episode_id=21, seed=100021, result=Success
26
+ episode_id=22, seed=100022, result=Fail
27
+ episode_id=23, seed=100023, result=Fail
28
+ episode_id=24, seed=100024, result=Fail
29
+ episode_id=25, seed=100025, result=Fail
30
+ episode_id=26, seed=100026, result=Fail
31
+ episode_id=27, seed=100027, result=Fail
32
+ episode_id=28, seed=100028, result=Fail
33
+ episode_id=29, seed=100029, result=Fail
34
+ episode_id=30, seed=100030, result=Fail
35
+ episode_id=31, seed=100031, result=Fail
36
+ episode_id=32, seed=100032, result=Fail
37
+ episode_id=33, seed=100033, result=Fail
38
+ episode_id=34, seed=100034, result=Fail
39
+ episode_id=35, seed=100035, result=Fail
40
+ episode_id=36, seed=100036, result=Success
41
+ episode_id=37, seed=100037, result=Success
42
+ episode_id=38, seed=100038, result=Fail
43
+ episode_id=39, seed=100039, result=Fail
44
+ episode_id=40, seed=100040, result=Fail
45
+ episode_id=41, seed=100041, result=Fail
46
+ episode_id=42, seed=100042, result=Fail
47
+ episode_id=43, seed=100043, result=Fail
48
+ episode_id=44, seed=100044, result=Fail
49
+ episode_id=45, seed=100045, result=Fail
50
+ episode_id=46, seed=100046, result=Fail
51
+ episode_id=47, seed=100047, result=Fail
52
+ episode_id=48, seed=100048, result=Fail
53
+ episode_id=49, seed=100049, result=Fail
54
+ episode_id=50, seed=100050, result=Fail
55
+ episode_id=51, seed=100051, result=Fail
56
+ episode_id=52, seed=100052, result=Fail
57
+ episode_id=53, seed=100053, result=Fail
58
+ episode_id=54, seed=100054, result=Fail
59
+ episode_id=55, seed=100055, result=Fail
60
+ episode_id=56, seed=100056, result=Fail
61
+ episode_id=57, seed=100057, result=Fail
62
+ episode_id=58, seed=100058, result=Fail
63
+ episode_id=59, seed=100059, result=Fail
64
+ episode_id=60, seed=100060, result=Fail
65
+ episode_id=61, seed=100061, result=Fail
66
+ episode_id=62, seed=100062, result=Fail
67
+ episode_id=63, seed=100063, result=Fail
68
+ episode_id=64, seed=100064, result=Fail
69
+ episode_id=65, seed=100065, result=Fail
70
+ episode_id=66, seed=100066, result=Fail
71
+ episode_id=67, seed=100067, result=Fail
72
+ episode_id=68, seed=100068, result=Fail
73
+ episode_id=69, seed=100069, result=Fail
74
+ episode_id=70, seed=100070, result=Fail
75
+ episode_id=71, seed=100071, result=Fail
76
+ episode_id=72, seed=100072, result=Fail
77
+ episode_id=73, seed=100073, result=Fail
78
+ episode_id=74, seed=100074, result=Fail
79
+ episode_id=75, seed=100075, result=Fail
80
+ episode_id=76, seed=100076, result=Fail
81
+ episode_id=77, seed=100077, result=Fail
82
+ episode_id=78, seed=100078, result=Fail
83
+ episode_id=79, seed=100079, result=Fail
84
+ episode_id=80, seed=100080, result=Fail
85
+ episode_id=81, seed=100081, result=Fail
86
+ episode_id=82, seed=100082, result=Fail
87
+ episode_id=83, seed=100083, result=Fail
88
+ episode_id=84, seed=100084, result=Fail
89
+ episode_id=85, seed=100085, result=Fail
90
+ episode_id=86, seed=100086, result=Fail
91
+ episode_id=87, seed=100087, result=Fail
92
+ episode_id=88, seed=100088, result=Fail
93
+ episode_id=89, seed=100089, result=Fail
94
+ episode_id=90, seed=100091, result=Fail
95
+ episode_id=91, seed=100092, result=Fail
96
+ episode_id=92, seed=100094, result=Fail
97
+ episode_id=93, seed=100095, result=Fail
98
+ episode_id=94, seed=100096, result=Fail
99
+ episode_id=95, seed=100097, result=Fail
100
+ episode_id=96, seed=100098, result=Fail
101
+ episode_id=97, seed=100099, result=Fail
102
+ episode_id=98, seed=100100, result=Fail
103
+ episode_id=99, seed=100101, result=Fail
eval_results/put_back_block/_result.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ Timestamp: 2026-06-22 20:00:54
2
+
3
+ Instruction Type: unseen
4
+
5
+ Success Rate: 1.0
6
+
7
+ Reward: 1.0
eval_results/put_back_block/eval_log.txt ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Eval log for put_back_block | Mem-0 | demo_clean | m1mix
2
+ Timestamp: 2026-06-22 20:00:54
3
+
4
+ episode_id=0, seed=100000, result=Success
5
+ episode_id=1, seed=100001, result=Success
6
+ episode_id=2, seed=100002, result=Success
7
+ episode_id=3, seed=100003, result=Success
8
+ episode_id=4, seed=100004, result=Success
9
+ episode_id=5, seed=100005, result=Success
10
+ episode_id=6, seed=100006, result=Success
11
+ episode_id=7, seed=100007, result=Success
12
+ episode_id=8, seed=100008, result=Success
13
+ episode_id=9, seed=100009, result=Success
14
+ episode_id=10, seed=100010, result=Success
15
+ episode_id=11, seed=100011, result=Success
16
+ episode_id=12, seed=100012, result=Success
17
+ episode_id=13, seed=100013, result=Success
18
+ episode_id=14, seed=100014, result=Success
19
+ episode_id=15, seed=100015, result=Success
20
+ episode_id=16, seed=100016, result=Success
21
+ episode_id=17, seed=100017, result=Success
22
+ episode_id=18, seed=100018, result=Success
23
+ episode_id=19, seed=100019, result=Success
24
+ episode_id=20, seed=100020, result=Success
25
+ episode_id=21, seed=100021, result=Success
26
+ episode_id=22, seed=100022, result=Success
27
+ episode_id=23, seed=100023, result=Success
28
+ episode_id=24, seed=100024, result=Success
29
+ episode_id=25, seed=100025, result=Success
30
+ episode_id=26, seed=100026, result=Success
31
+ episode_id=27, seed=100027, result=Success
32
+ episode_id=28, seed=100028, result=Success
33
+ episode_id=29, seed=100029, result=Success
34
+ episode_id=30, seed=100030, result=Success
35
+ episode_id=31, seed=100031, result=Success
36
+ episode_id=32, seed=100032, result=Success
37
+ episode_id=33, seed=100033, result=Success
38
+ episode_id=34, seed=100034, result=Success
39
+ episode_id=35, seed=100035, result=Success
40
+ episode_id=36, seed=100036, result=Success
41
+ episode_id=37, seed=100037, result=Success
42
+ episode_id=38, seed=100038, result=Success
43
+ episode_id=39, seed=100039, result=Success
44
+ episode_id=40, seed=100040, result=Success
45
+ episode_id=41, seed=100041, result=Success
46
+ episode_id=42, seed=100042, result=Success
47
+ episode_id=43, seed=100043, result=Success
48
+ episode_id=44, seed=100044, result=Success
49
+ episode_id=45, seed=100045, result=Success
50
+ episode_id=46, seed=100046, result=Success
51
+ episode_id=47, seed=100047, result=Success
52
+ episode_id=48, seed=100048, result=Success
53
+ episode_id=49, seed=100049, result=Success
54
+ episode_id=50, seed=100050, result=Success
55
+ episode_id=51, seed=100051, result=Success
56
+ episode_id=52, seed=100052, result=Success
57
+ episode_id=53, seed=100053, result=Success
58
+ episode_id=54, seed=100054, result=Success
59
+ episode_id=55, seed=100055, result=Success
60
+ episode_id=56, seed=100056, result=Success
61
+ episode_id=57, seed=100057, result=Success
62
+ episode_id=58, seed=100058, result=Success
63
+ episode_id=59, seed=100059, result=Success
64
+ episode_id=60, seed=100060, result=Success
65
+ episode_id=61, seed=100061, result=Success
66
+ episode_id=62, seed=100062, result=Success
67
+ episode_id=63, seed=100063, result=Success
68
+ episode_id=64, seed=100064, result=Success
69
+ episode_id=65, seed=100065, result=Success
70
+ episode_id=66, seed=100066, result=Success
71
+ episode_id=67, seed=100067, result=Success
72
+ episode_id=68, seed=100068, result=Success
73
+ episode_id=69, seed=100069, result=Success
74
+ episode_id=70, seed=100070, result=Success
75
+ episode_id=71, seed=100071, result=Success
76
+ episode_id=72, seed=100072, result=Success
77
+ episode_id=73, seed=100073, result=Success
78
+ episode_id=74, seed=100074, result=Success
79
+ episode_id=75, seed=100075, result=Success
80
+ episode_id=76, seed=100076, result=Success
81
+ episode_id=77, seed=100077, result=Success
82
+ episode_id=78, seed=100078, result=Success
83
+ episode_id=79, seed=100079, result=Success
84
+ episode_id=80, seed=100080, result=Success
85
+ episode_id=81, seed=100081, result=Success
86
+ episode_id=82, seed=100082, result=Success
87
+ episode_id=83, seed=100083, result=Success
88
+ episode_id=84, seed=100084, result=Success
89
+ episode_id=85, seed=100085, result=Success
90
+ episode_id=86, seed=100086, result=Success
91
+ episode_id=87, seed=100087, result=Success
92
+ episode_id=88, seed=100088, result=Success
93
+ episode_id=89, seed=100089, result=Success
94
+ episode_id=90, seed=100090, result=Success
95
+ episode_id=91, seed=100091, result=Success
96
+ episode_id=92, seed=100092, result=Success
97
+ episode_id=93, seed=100093, result=Success
98
+ episode_id=94, seed=100094, result=Success
99
+ episode_id=95, seed=100095, result=Success
100
+ episode_id=96, seed=100096, result=Success
101
+ episode_id=97, seed=100097, result=Success
102
+ episode_id=98, seed=100098, result=Success
103
+ episode_id=99, seed=100099, result=Success
eval_results/rearrange_blocks/_result.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ Timestamp: 2026-06-22 09:35:33
2
+
3
+ Instruction Type: unseen
4
+
5
+ Success Rate: 0.86
6
+
7
+ Reward: 0.86
eval_results/rearrange_blocks/eval_log.txt ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Eval log for rearrange_blocks | Mem-0 | demo_clean | m1mix
2
+ Timestamp: 2026-06-22 09:35:33
3
+
4
+ episode_id=0, seed=100000, result=Success
5
+ episode_id=1, seed=100001, result=Success
6
+ episode_id=2, seed=100002, result=Success
7
+ episode_id=3, seed=100003, result=Success
8
+ episode_id=4, seed=100004, result=Success
9
+ episode_id=5, seed=100005, result=Success
10
+ episode_id=6, seed=100006, result=Success
11
+ episode_id=7, seed=100007, result=Success
12
+ episode_id=8, seed=100008, result=Success
13
+ episode_id=9, seed=100009, result=Fail
14
+ episode_id=10, seed=100010, result=Success
15
+ episode_id=11, seed=100011, result=Fail
16
+ episode_id=12, seed=100012, result=Success
17
+ episode_id=13, seed=100013, result=Success
18
+ episode_id=14, seed=100014, result=Success
19
+ episode_id=15, seed=100015, result=Success
20
+ episode_id=16, seed=100016, result=Success
21
+ episode_id=17, seed=100017, result=Success
22
+ episode_id=18, seed=100018, result=Fail
23
+ episode_id=19, seed=100019, result=Success
24
+ episode_id=20, seed=100020, result=Success
25
+ episode_id=21, seed=100021, result=Success
26
+ episode_id=22, seed=100022, result=Success
27
+ episode_id=23, seed=100023, result=Success
28
+ episode_id=24, seed=100024, result=Success
29
+ episode_id=25, seed=100025, result=Success
30
+ episode_id=26, seed=100026, result=Success
31
+ episode_id=27, seed=100027, result=Success
32
+ episode_id=28, seed=100028, result=Success
33
+ episode_id=29, seed=100029, result=Success
34
+ episode_id=30, seed=100030, result=Success
35
+ episode_id=31, seed=100031, result=Success
36
+ episode_id=32, seed=100032, result=Success
37
+ episode_id=33, seed=100033, result=Success
38
+ episode_id=34, seed=100034, result=Fail
39
+ episode_id=35, seed=100035, result=Success
40
+ episode_id=36, seed=100036, result=Success
41
+ episode_id=37, seed=100037, result=Success
42
+ episode_id=38, seed=100038, result=Fail
43
+ episode_id=39, seed=100039, result=Success
44
+ episode_id=40, seed=100040, result=Success
45
+ episode_id=41, seed=100041, result=Success
46
+ episode_id=42, seed=100042, result=Success
47
+ episode_id=43, seed=100043, result=Success
48
+ episode_id=44, seed=100044, result=Success
49
+ episode_id=45, seed=100045, result=Success
50
+ episode_id=46, seed=100046, result=Success
51
+ episode_id=47, seed=100047, result=Success
52
+ episode_id=48, seed=100048, result=Success
53
+ episode_id=49, seed=100049, result=Success
54
+ episode_id=50, seed=100050, result=Success
55
+ episode_id=51, seed=100051, result=Success
56
+ episode_id=52, seed=100052, result=Success
57
+ episode_id=53, seed=100053, result=Success
58
+ episode_id=54, seed=100054, result=Fail
59
+ episode_id=55, seed=100055, result=Fail
60
+ episode_id=56, seed=100056, result=Success
61
+ episode_id=57, seed=100057, result=Success
62
+ episode_id=58, seed=100058, result=Success
63
+ episode_id=59, seed=100059, result=Success
64
+ episode_id=60, seed=100060, result=Fail
65
+ episode_id=61, seed=100061, result=Fail
66
+ episode_id=62, seed=100062, result=Success
67
+ episode_id=63, seed=100063, result=Fail
68
+ episode_id=64, seed=100064, result=Success
69
+ episode_id=65, seed=100065, result=Success
70
+ episode_id=66, seed=100066, result=Success
71
+ episode_id=67, seed=100067, result=Success
72
+ episode_id=68, seed=100068, result=Success
73
+ episode_id=69, seed=100069, result=Success
74
+ episode_id=70, seed=100070, result=Success
75
+ episode_id=71, seed=100071, result=Success
76
+ episode_id=72, seed=100072, result=Success
77
+ episode_id=73, seed=100073, result=Success
78
+ episode_id=74, seed=100074, result=Success
79
+ episode_id=75, seed=100075, result=Success
80
+ episode_id=76, seed=100076, result=Success
81
+ episode_id=77, seed=100077, result=Fail
82
+ episode_id=78, seed=100078, result=Success
83
+ episode_id=79, seed=100079, result=Success
84
+ episode_id=80, seed=100080, result=Success
85
+ episode_id=81, seed=100081, result=Success
86
+ episode_id=82, seed=100082, result=Fail
87
+ episode_id=83, seed=100083, result=Success
88
+ episode_id=84, seed=100084, result=Success
89
+ episode_id=85, seed=100085, result=Success
90
+ episode_id=86, seed=100086, result=Success
91
+ episode_id=87, seed=100087, result=Success
92
+ episode_id=88, seed=100088, result=Success
93
+ episode_id=89, seed=100089, result=Success
94
+ episode_id=90, seed=100090, result=Fail
95
+ episode_id=91, seed=100091, result=Success
96
+ episode_id=92, seed=100092, result=Success
97
+ episode_id=93, seed=100093, result=Success
98
+ episode_id=94, seed=100094, result=Success
99
+ episode_id=95, seed=100095, result=Fail
100
+ episode_id=96, seed=100096, result=Success
101
+ episode_id=97, seed=100097, result=Success
102
+ episode_id=98, seed=100098, result=Success
103
+ episode_id=99, seed=100099, result=Success
eval_results/summary.md ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # m1_mix — Evaluation Summary
2
+
3
+ A single Mem-0 execution-module checkpoint (`checkpoint/m1_mix_final_step50000.pt`),
4
+ trained jointly on all five RMBench **M1** tasks (`m1_mix` dataset), evaluated on each
5
+ task in turn. Same checkpoint and same `m1_mix` normalization stats are used for every
6
+ task — only `--task_name` and the per-task `--global_task` instruction change.
7
+
8
+ ## Results (task_config = `demo_clean`, instruction_type = `unseen`, 100 episodes/task)
9
+
10
+ | Task | Success Rate | Reward | Eval timestamp |
11
+ |---------------------|:------------:|:------:|-----------------------|
12
+ | put_back_block | **1.00** | 1.00 | 2026-06-22 20:00:54 |
13
+ | rearrange_blocks | **0.86** | 0.86 | 2026-06-22 09:35:33 |
14
+ | swap_blocks | **0.81** | 0.81 | 2026-06-22 09:34:12 |
15
+ | swap_T | **0.13** | 0.13 | 2026-06-22 20:01:49 |
16
+ | observe_and_pickup | **0.03** | 0.00 | 2026-06-23 05:03:56 |
17
+ | **Average** | **0.566** | — | |
18
+
19
+ Block-manipulation tasks (put_back / rearrange / swap_blocks) are strong. The two weak
20
+ tasks are **swap_T** (fine T-block pose alignment — both position and orientation) and
21
+ **observe_and_pickup** (cross-view target identification after occlusion, then pickup).
22
+
23
+ ## Provenance — identical across all five evaluations
24
+
25
+ - **Checkpoint:** `checkpoints/m1_mix/final_step50000.pt` (global_step 50000)
26
+ - **Normalization stats:** `policy/Mem-0/assets/m1_mix/norm_stats.json` (min-max → [-1, 1])
27
+ - **Action horizon:** 30
28
+ - **Entry point:** `script/eval_policy.py --config policy/Mem-0/deploy_policy.yml --overrides ...`
29
+ - **vLLM / planner:** not used (M1 tasks set a single global instruction directly)
30
+
31
+ The exact `--global_task` string for each task is in `../task_instructions.json` and is
32
+ reproduced verbatim (including the original `traies` spelling in `swap_blocks`).
33
+
34
+ ## Per-task artifacts
35
+
36
+ Each `eval_results/<task>/` folder contains:
37
+
38
+ - `_result.txt` — final success rate and reward
39
+ - `eval_log.txt` — per-episode `episode_id, seed, result=Success/Fail` (seeds start at 100000)
40
+ - `episode<N>.mp4` — head-camera rollout video for all 100 evaluated episodes
41
+
42
+ > Note: the evaluation loop counts an episode only after it passes the simulator's
43
+ > expert-feasibility check, so the 100 episodes correspond to seeds drawn from 100000
44
+ > upward until 100 feasible inits are collected.
eval_results/swap_T/_result.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ Timestamp: 2026-06-22 20:01:49
2
+
3
+ Instruction Type: unseen
4
+
5
+ Success Rate: 0.13
6
+
7
+ Reward: 0.13
eval_results/swap_T/episode16.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a17c9bb95db6d2b73bd127c1470f43ebd16edda075bccf4d29e9626e71daaf9f
3
+ size 342482
eval_results/swap_T/episode45.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:75c6529a3cdd02a7a22a556be2efbacafb27254978327a6ed91fcc130ef663d6
3
+ size 342088
eval_results/swap_T/episode86.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f0377603652e7e88d46931c8c04c1c49c996ae97380119df8829922e2c8c98f6
3
+ size 689930
eval_results/swap_T/episode89.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d31471484d7e0484f0a6bff9c9bbb4a3044378af0652237dde6b3df7460ed26a
3
+ size 340486
eval_results/swap_T/eval_log.txt ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Eval log for swap_T | Mem-0 | demo_clean | m1mix
2
+ Timestamp: 2026-06-22 20:01:49
3
+
4
+ episode_id=0, seed=100000, result=Fail
5
+ episode_id=1, seed=100001, result=Fail
6
+ episode_id=2, seed=100002, result=Fail
7
+ episode_id=3, seed=100003, result=Fail
8
+ episode_id=4, seed=100004, result=Success
9
+ episode_id=5, seed=100005, result=Fail
10
+ episode_id=6, seed=100006, result=Fail
11
+ episode_id=7, seed=100007, result=Fail
12
+ episode_id=8, seed=100008, result=Fail
13
+ episode_id=9, seed=100009, result=Fail
14
+ episode_id=10, seed=100010, result=Fail
15
+ episode_id=11, seed=100011, result=Success
16
+ episode_id=12, seed=100012, result=Fail
17
+ episode_id=13, seed=100013, result=Fail
18
+ episode_id=14, seed=100014, result=Fail
19
+ episode_id=15, seed=100015, result=Fail
20
+ episode_id=16, seed=100016, result=Success
21
+ episode_id=17, seed=100017, result=Fail
22
+ episode_id=18, seed=100018, result=Fail
23
+ episode_id=19, seed=100019, result=Fail
24
+ episode_id=20, seed=100021, result=Fail
25
+ episode_id=21, seed=100022, result=Fail
26
+ episode_id=22, seed=100023, result=Fail
27
+ episode_id=23, seed=100024, result=Fail
28
+ episode_id=24, seed=100025, result=Fail
29
+ episode_id=25, seed=100026, result=Fail
30
+ episode_id=26, seed=100027, result=Fail
31
+ episode_id=27, seed=100028, result=Fail
32
+ episode_id=28, seed=100029, result=Fail
33
+ episode_id=29, seed=100031, result=Success
34
+ episode_id=30, seed=100032, result=Success
35
+ episode_id=31, seed=100033, result=Fail
36
+ episode_id=32, seed=100035, result=Fail
37
+ episode_id=33, seed=100036, result=Success
38
+ episode_id=34, seed=100037, result=Fail
39
+ episode_id=35, seed=100038, result=Fail
40
+ episode_id=36, seed=100039, result=Fail
41
+ episode_id=37, seed=100040, result=Fail
42
+ episode_id=38, seed=100041, result=Fail
43
+ episode_id=39, seed=100042, result=Fail
44
+ episode_id=40, seed=100043, result=Fail
45
+ episode_id=41, seed=100044, result=Fail
46
+ episode_id=42, seed=100046, result=Fail
47
+ episode_id=43, seed=100047, result=Success
48
+ episode_id=44, seed=100048, result=Fail
49
+ episode_id=45, seed=100049, result=Success
50
+ episode_id=46, seed=100050, result=Fail
51
+ episode_id=47, seed=100051, result=Fail
52
+ episode_id=48, seed=100052, result=Fail
53
+ episode_id=49, seed=100053, result=Fail
54
+ episode_id=50, seed=100054, result=Fail
55
+ episode_id=51, seed=100055, result=Success
56
+ episode_id=52, seed=100056, result=Fail
57
+ episode_id=53, seed=100057, result=Fail
58
+ episode_id=54, seed=100058, result=Fail
59
+ episode_id=55, seed=100059, result=Fail
60
+ episode_id=56, seed=100060, result=Fail
61
+ episode_id=57, seed=100061, result=Fail
62
+ episode_id=58, seed=100064, result=Fail
63
+ episode_id=59, seed=100065, result=Fail
64
+ episode_id=60, seed=100066, result=Fail
65
+ episode_id=61, seed=100067, result=Fail
66
+ episode_id=62, seed=100069, result=Fail
67
+ episode_id=63, seed=100070, result=Fail
68
+ episode_id=64, seed=100071, result=Fail
69
+ episode_id=65, seed=100072, result=Fail
70
+ episode_id=66, seed=100073, result=Fail
71
+ episode_id=67, seed=100074, result=Fail
72
+ episode_id=68, seed=100075, result=Fail
73
+ episode_id=69, seed=100076, result=Fail
74
+ episode_id=70, seed=100077, result=Fail
75
+ episode_id=71, seed=100078, result=Fail
76
+ episode_id=72, seed=100079, result=Fail
77
+ episode_id=73, seed=100080, result=Fail
78
+ episode_id=74, seed=100081, result=Fail
79
+ episode_id=75, seed=100082, result=Fail
80
+ episode_id=76, seed=100083, result=Fail
81
+ episode_id=77, seed=100084, result=Fail
82
+ episode_id=78, seed=100086, result=Fail
83
+ episode_id=79, seed=100087, result=Fail
84
+ episode_id=80, seed=100088, result=Success
85
+ episode_id=81, seed=100089, result=Fail
86
+ episode_id=82, seed=100090, result=Fail
87
+ episode_id=83, seed=100091, result=Fail
88
+ episode_id=84, seed=100092, result=Success
89
+ episode_id=85, seed=100093, result=Fail
90
+ episode_id=86, seed=100094, result=Fail
91
+ episode_id=87, seed=100095, result=Fail
92
+ episode_id=88, seed=100096, result=Fail
93
+ episode_id=89, seed=100097, result=Success
94
+ episode_id=90, seed=100098, result=Fail
95
+ episode_id=91, seed=100099, result=Fail
96
+ episode_id=92, seed=100101, result=Fail
97
+ episode_id=93, seed=100102, result=Fail
98
+ episode_id=94, seed=100103, result=Fail
99
+ episode_id=95, seed=100104, result=Success
100
+ episode_id=96, seed=100105, result=Fail
101
+ episode_id=97, seed=100106, result=Fail
102
+ episode_id=98, seed=100107, result=Fail
103
+ episode_id=99, seed=100108, result=Fail
eval_results/swap_blocks/_result.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ Timestamp: 2026-06-22 09:34:12
2
+
3
+ Instruction Type: unseen
4
+
5
+ Success Rate: 0.81
6
+
7
+ Reward: 0.81
eval_results/swap_blocks/eval_log.txt ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Eval log for swap_blocks | Mem-0 | demo_clean | m1mix
2
+ Timestamp: 2026-06-22 09:34:12
3
+
4
+ episode_id=0, seed=100001, result=Success
5
+ episode_id=1, seed=100008, result=Success
6
+ episode_id=2, seed=100009, result=Success
7
+ episode_id=3, seed=100012, result=Success
8
+ episode_id=4, seed=100013, result=Success
9
+ episode_id=5, seed=100014, result=Fail
10
+ episode_id=6, seed=100015, result=Success
11
+ episode_id=7, seed=100016, result=Success
12
+ episode_id=8, seed=100018, result=Success
13
+ episode_id=9, seed=100022, result=Success
14
+ episode_id=10, seed=100023, result=Success
15
+ episode_id=11, seed=100024, result=Success
16
+ episode_id=12, seed=100027, result=Success
17
+ episode_id=13, seed=100028, result=Fail
18
+ episode_id=14, seed=100030, result=Success
19
+ episode_id=15, seed=100031, result=Fail
20
+ episode_id=16, seed=100038, result=Success
21
+ episode_id=17, seed=100039, result=Success
22
+ episode_id=18, seed=100041, result=Success
23
+ episode_id=19, seed=100042, result=Fail
24
+ episode_id=20, seed=100043, result=Success
25
+ episode_id=21, seed=100044, result=Success
26
+ episode_id=22, seed=100048, result=Success
27
+ episode_id=23, seed=100051, result=Success
28
+ episode_id=24, seed=100052, result=Success
29
+ episode_id=25, seed=100053, result=Success
30
+ episode_id=26, seed=100054, result=Fail
31
+ episode_id=27, seed=100055, result=Success
32
+ episode_id=28, seed=100057, result=Success
33
+ episode_id=29, seed=100058, result=Success
34
+ episode_id=30, seed=100059, result=Fail
35
+ episode_id=31, seed=100061, result=Fail
36
+ episode_id=32, seed=100062, result=Success
37
+ episode_id=33, seed=100063, result=Success
38
+ episode_id=34, seed=100066, result=Success
39
+ episode_id=35, seed=100067, result=Success
40
+ episode_id=36, seed=100071, result=Success
41
+ episode_id=37, seed=100073, result=Success
42
+ episode_id=38, seed=100076, result=Success
43
+ episode_id=39, seed=100079, result=Success
44
+ episode_id=40, seed=100083, result=Success
45
+ episode_id=41, seed=100084, result=Fail
46
+ episode_id=42, seed=100085, result=Success
47
+ episode_id=43, seed=100086, result=Success
48
+ episode_id=44, seed=100088, result=Success
49
+ episode_id=45, seed=100089, result=Fail
50
+ episode_id=46, seed=100090, result=Success
51
+ episode_id=47, seed=100093, result=Success
52
+ episode_id=48, seed=100094, result=Success
53
+ episode_id=49, seed=100095, result=Success
54
+ episode_id=50, seed=100097, result=Success
55
+ episode_id=51, seed=100102, result=Fail
56
+ episode_id=52, seed=100103, result=Success
57
+ episode_id=53, seed=100104, result=Success
58
+ episode_id=54, seed=100106, result=Success
59
+ episode_id=55, seed=100112, result=Success
60
+ episode_id=56, seed=100113, result=Success
61
+ episode_id=57, seed=100114, result=Success
62
+ episode_id=58, seed=100115, result=Success
63
+ episode_id=59, seed=100119, result=Success
64
+ episode_id=60, seed=100127, result=Success
65
+ episode_id=61, seed=100128, result=Success
66
+ episode_id=62, seed=100129, result=Success
67
+ episode_id=63, seed=100132, result=Success
68
+ episode_id=64, seed=100133, result=Fail
69
+ episode_id=65, seed=100134, result=Success
70
+ episode_id=66, seed=100136, result=Success
71
+ episode_id=67, seed=100137, result=Success
72
+ episode_id=68, seed=100138, result=Success
73
+ episode_id=69, seed=100139, result=Success
74
+ episode_id=70, seed=100142, result=Success
75
+ episode_id=71, seed=100143, result=Success
76
+ episode_id=72, seed=100145, result=Success
77
+ episode_id=73, seed=100146, result=Success
78
+ episode_id=74, seed=100147, result=Success
79
+ episode_id=75, seed=100148, result=Success
80
+ episode_id=76, seed=100150, result=Success
81
+ episode_id=77, seed=100151, result=Success
82
+ episode_id=78, seed=100154, result=Success
83
+ episode_id=79, seed=100156, result=Success
84
+ episode_id=80, seed=100157, result=Success
85
+ episode_id=81, seed=100158, result=Fail
86
+ episode_id=82, seed=100162, result=Success
87
+ episode_id=83, seed=100163, result=Success
88
+ episode_id=84, seed=100165, result=Fail
89
+ episode_id=85, seed=100166, result=Success
90
+ episode_id=86, seed=100169, result=Fail
91
+ episode_id=87, seed=100170, result=Success
92
+ episode_id=88, seed=100171, result=Success
93
+ episode_id=89, seed=100173, result=Fail
94
+ episode_id=90, seed=100175, result=Success
95
+ episode_id=91, seed=100176, result=Success
96
+ episode_id=92, seed=100177, result=Fail
97
+ episode_id=93, seed=100178, result=Success
98
+ episode_id=94, seed=100179, result=Fail
99
+ episode_id=95, seed=100182, result=Fail
100
+ episode_id=96, seed=100185, result=Success
101
+ episode_id=97, seed=100187, result=Success
102
+ episode_id=98, seed=100190, result=Fail
103
+ episode_id=99, seed=100194, result=Success
norm_stats/norm_stats.json ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ {
2
+ "state_min": [-1.1595754623, -0.0055100000, -0.0020600001, -1.5093363523, -0.0559040420, -1.7210209370, 0.0000000000, -0.0264962781, -0.0000247254, -0.0018499237, -1.8759387732, -0.1070821211, -1.6282974482, 0.0000000000, 0.0000000000, 0.0000000000],
3
+ "state_max": [0.1306724101, 2.5744717121, 2.5036673546, 0.0019600000, 0.1001749635, 1.6141999960, 0.0000000000, 1.0941185951, 3.2526721954, 3.6101059914, 0.0000289166, 0.2560182810, 2.1380574703, 0.0000000000, 1.0000000000, 1.0000000000],
4
+ "action_min": [-1.1595754623, -0.0055100000, -0.0020600001, -1.5093363523, -0.0559040420, -1.7210209370, 0.0000000000, -0.0264962781, -0.0000247254, -0.0018499237, -1.8759387732, -0.1070821211, -1.6282974482, 0.0000000000, 0.0000000000, 0.0000000000],
5
+ "action_max": [0.1306724101, 2.5744717121, 2.5036673546, 0.0019600000, 0.1001749635, 1.6141999960, 0.0000000000, 1.0941185951, 3.2526721954, 3.6101059914, 0.0000289166, 0.2560182810, 2.1380574703, 0.0000000000, 1.0000000000, 1.0000000000]
6
+ }
qwen_base_config/README_Qwen3-VL-2B-Instruct.md ADDED
@@ -0,0 +1,192 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ pipeline_tag: image-text-to-text
4
+ library_name: transformers
5
+ ---
6
+ <a href="https://huggingface.co/spaces/akhaliq/Qwen3-VL-2B-Instruct" target="_blank" style="margin: 2px;">
7
+ <img alt="Demo" src="https://img.shields.io/badge/Demo-536af5" style="display: inline-block; vertical-align: middle;"/>
8
+ </a>
9
+
10
+
11
+ # Qwen3-VL-2B-Instruct
12
+
13
+
14
+ Meet Qwen3-VL — the most powerful vision-language model in the Qwen series to date.
15
+
16
+ This generation delivers comprehensive upgrades across the board: superior text understanding & generation, deeper visual perception & reasoning, extended context length, enhanced spatial and video dynamics comprehension, and stronger agent interaction capabilities.
17
+
18
+ Available in Dense and MoE architectures that scale from edge to cloud, with Instruct and reasoning‑enhanced Thinking editions for flexible, on‑demand deployment.
19
+
20
+
21
+ #### Key Enhancements:
22
+
23
+ * **Visual Agent**: Operates PC/mobile GUIs—recognizes elements, understands functions, invokes tools, completes tasks.
24
+
25
+ * **Visual Coding Boost**: Generates Draw.io/HTML/CSS/JS from images/videos.
26
+
27
+ * **Advanced Spatial Perception**: Judges object positions, viewpoints, and occlusions; provides stronger 2D grounding and enables 3D grounding for spatial reasoning and embodied AI.
28
+
29
+ * **Long Context & Video Understanding**: Native 256K context, expandable to 1M; handles books and hours-long video with full recall and second-level indexing.
30
+
31
+ * **Enhanced Multimodal Reasoning**: Excels in STEM/Math—causal analysis and logical, evidence-based answers.
32
+
33
+ * **Upgraded Visual Recognition**: Broader, higher-quality pretraining is able to “recognize everything”—celebrities, anime, products, landmarks, flora/fauna, etc.
34
+
35
+ * **Expanded OCR**: Supports 32 languages (up from 19); robust in low light, blur, and tilt; better with rare/ancient characters and jargon; improved long-document structure parsing.
36
+
37
+ * **Text Understanding on par with pure LLMs**: Seamless text–vision fusion for lossless, unified comprehension.
38
+
39
+
40
+ #### Model Architecture Updates:
41
+
42
+ <p align="center">
43
+ <img src="https://qianwen-res.oss-accelerate.aliyuncs.com/Qwen3-VL/qwen3vl_arc.jpg" width="80%"/>
44
+ <p>
45
+
46
+
47
+ 1. **Interleaved-MRoPE**: Full‑frequency allocation over time, width, and height via robust positional embeddings, enhancing long‑horizon video reasoning.
48
+
49
+ 2. **DeepStack**: Fuses multi‑level ViT features to capture fine‑grained details and sharpen image–text alignment.
50
+
51
+ 3. **Text–Timestamp Alignment:** Moves beyond T‑RoPE to precise, timestamp‑grounded event localization for stronger video temporal modeling.
52
+
53
+ This is the weight repository for Qwen3-VL-2B-Instruct.
54
+
55
+
56
+ ---
57
+
58
+ ## Model Performance
59
+
60
+ **Multimodal performance**
61
+
62
+ ![](https://qianwen-res.oss-accelerate.aliyuncs.com/Qwen3-VL/qwen3vl_2b_32b_vl_instruct.jpg)
63
+
64
+ **Pure text performance**
65
+ ![](https://qianwen-res.oss-accelerate.aliyuncs.com/Qwen3-VL/qwen3vl_2b_32b_text_instruct.jpg)
66
+
67
+ ## Quickstart
68
+
69
+ Below, we provide simple examples to show how to use Qwen3-VL with 🤖 ModelScope and 🤗 Transformers.
70
+
71
+ The code of Qwen3-VL has been in the latest Hugging Face transformers and we advise you to build from source with command:
72
+ ```
73
+ pip install git+https://github.com/huggingface/transformers
74
+ # pip install transformers==4.57.0 # currently, V4.57.0 is not released
75
+ ```
76
+
77
+ ### Using 🤗 Transformers to Chat
78
+
79
+ Here we show a code snippet to show how to use the chat model with `transformers`:
80
+
81
+ ```python
82
+ from transformers import Qwen3VLForConditionalGeneration, AutoProcessor
83
+
84
+ # default: Load the model on the available device(s)
85
+ model = Qwen3VLForConditionalGeneration.from_pretrained(
86
+ "Qwen/Qwen3-VL-2B-Instruct", dtype="auto", device_map="auto"
87
+ )
88
+
89
+ # We recommend enabling flash_attention_2 for better acceleration and memory saving, especially in multi-image and video scenarios.
90
+ # model = Qwen3VLForConditionalGeneration.from_pretrained(
91
+ # "Qwen/Qwen3-VL-2B-Instruct",
92
+ # dtype=torch.bfloat16,
93
+ # attn_implementation="flash_attention_2",
94
+ # device_map="auto",
95
+ # )
96
+
97
+ processor = AutoProcessor.from_pretrained("Qwen/Qwen3-VL-2B-Instruct")
98
+
99
+ messages = [
100
+ {
101
+ "role": "user",
102
+ "content": [
103
+ {
104
+ "type": "image",
105
+ "image": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-VL/assets/demo.jpeg",
106
+ },
107
+ {"type": "text", "text": "Describe this image."},
108
+ ],
109
+ }
110
+ ]
111
+
112
+ # Preparation for inference
113
+ inputs = processor.apply_chat_template(
114
+ messages,
115
+ tokenize=True,
116
+ add_generation_prompt=True,
117
+ return_dict=True,
118
+ return_tensors="pt"
119
+ )
120
+ inputs = inputs.to(model.device)
121
+
122
+ # Inference: Generation of the output
123
+ generated_ids = model.generate(**inputs, max_new_tokens=128)
124
+ generated_ids_trimmed = [
125
+ out_ids[len(in_ids) :] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
126
+ ]
127
+ output_text = processor.batch_decode(
128
+ generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False
129
+ )
130
+ print(output_text)
131
+ ```
132
+
133
+ ### Generation Hyperparameters
134
+ #### VL
135
+ ```bash
136
+ export greedy='false'
137
+ export top_p=0.8
138
+ export top_k=20
139
+ export temperature=0.7
140
+ export repetition_penalty=1.0
141
+ export presence_penalty=1.5
142
+ export out_seq_length=16384
143
+ ```
144
+
145
+ #### Text
146
+ ```bash
147
+ export greedy='false'
148
+ export top_p=1.0
149
+ export top_k=40
150
+ export repetition_penalty=1.0
151
+ export presence_penalty=2.0
152
+ export temperature=1.0
153
+ export out_seq_length=32768
154
+ ```
155
+
156
+
157
+ ## Citation
158
+
159
+ If you find our work helpful, feel free to give us a cite.
160
+
161
+ ```
162
+ @misc{qwen3technicalreport,
163
+ title={Qwen3 Technical Report},
164
+ author={Qwen Team},
165
+ year={2025},
166
+ eprint={2505.09388},
167
+ archivePrefix={arXiv},
168
+ primaryClass={cs.CL},
169
+ url={https://arxiv.org/abs/2505.09388},
170
+ }
171
+
172
+ @article{Qwen2.5-VL,
173
+ title={Qwen2.5-VL Technical Report},
174
+ author={Bai, Shuai and Chen, Keqin and Liu, Xuejing and Wang, Jialin and Ge, Wenbin and Song, Sibo and Dang, Kai and Wang, Peng and Wang, Shijie and Tang, Jun and Zhong, Humen and Zhu, Yuanzhi and Yang, Mingkun and Li, Zhaohai and Wan, Jianqiang and Wang, Pengfei and Ding, Wei and Fu, Zheren and Xu, Yiheng and Ye, Jiabo and Zhang, Xi and Xie, Tianbao and Cheng, Zesen and Zhang, Hang and Yang, Zhibo and Xu, Haiyang and Lin, Junyang},
175
+ journal={arXiv preprint arXiv:2502.13923},
176
+ year={2025}
177
+ }
178
+
179
+ @article{Qwen2VL,
180
+ title={Qwen2-VL: Enhancing Vision-Language Model's Perception of the World at Any Resolution},
181
+ author={Wang, Peng and Bai, Shuai and Tan, Sinan and Wang, Shijie and Fan, Zhihao and Bai, Jinze and Chen, Keqin and Liu, Xuejing and Wang, Jialin and Ge, Wenbin and Fan, Yang and Dang, Kai and Du, Mengfei and Ren, Xuancheng and Men, Rui and Liu, Dayiheng and Zhou, Chang and Zhou, Jingren and Lin, Junyang},
182
+ journal={arXiv preprint arXiv:2409.12191},
183
+ year={2024}
184
+ }
185
+
186
+ @article{Qwen-VL,
187
+ title={Qwen-VL: A Versatile Vision-Language Model for Understanding, Localization, Text Reading, and Beyond},
188
+ author={Bai, Jinze and Bai, Shuai and Yang, Shusheng and Wang, Shijie and Tan, Sinan and Wang, Peng and Lin, Junyang and Zhou, Chang and Zhou, Jingren},
189
+ journal={arXiv preprint arXiv:2308.12966},
190
+ year={2023}
191
+ }
192
+ ```
qwen_base_config/chat_template.json ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ {
2
+ "chat_template": "{%- if tools %}\n {{- '<|im_start|>system\\n' }}\n {%- if messages[0].role == 'system' %}\n {%- if messages[0].content is string %}\n {{- messages[0].content }}\n {%- else %}\n {%- for content in messages[0].content %}\n {%- if 'text' in content %}\n {{- content.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {{- '\\n\\n' }}\n {%- endif %}\n {{- \"# Tools\\n\\nYou may call one or more functions to assist with the user query.\\n\\nYou are provided with function signatures within <tools></tools> XML tags:\\n<tools>\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\\n</tools>\\n\\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\\n<tool_call>\\n{\\\"name\\\": <function-name>, \\\"arguments\\\": <args-json-object>}\\n</tool_call><|im_end|>\\n\" }}\n{%- else %}\n {%- if messages[0].role == 'system' %}\n {{- '<|im_start|>system\\n' }}\n {%- if messages[0].content is string %}\n {{- messages[0].content }}\n {%- else %}\n {%- for content in messages[0].content %}\n {%- if 'text' in content %}\n {{- content.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- set image_count = namespace(value=0) %}\n{%- set video_count = namespace(value=0) %}\n{%- for message in messages %}\n {%- if message.role == \"user\" %}\n {{- '<|im_start|>' + message.role + '\\n' }}\n {%- if message.content is string %}\n {{- message.content }}\n {%- else %}\n {%- for content in message.content %}\n {%- if content.type == 'image' or 'image' in content or 'image_url' in content %}\n {%- set image_count.value = image_count.value + 1 %}\n {%- if add_vision_id %}Picture {{ image_count.value }}: {% endif -%}\n <|vision_start|><|image_pad|><|vision_end|>\n {%- elif content.type == 'video' or 'video' in content %}\n {%- set video_count.value = video_count.value + 1 %}\n {%- if add_vision_id %}Video {{ video_count.value }}: {% endif -%}\n <|vision_start|><|video_pad|><|vision_end|>\n {%- elif 'text' in content %}\n {{- content.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"assistant\" %}\n {{- '<|im_start|>' + message.role + '\\n' }}\n {%- if message.content is string %}\n {{- message.content }}\n {%- else %}\n {%- for content_item in message.content %}\n {%- if 'text' in content_item %}\n {{- content_item.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {%- if message.tool_calls %}\n {%- for tool_call in message.tool_calls %}\n {%- if (loop.first and message.content) or (not loop.first) %}\n {{- '\\n' }}\n {%- endif %}\n {%- if tool_call.function %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {{- '<tool_call>\\n{\"name\": \"' }}\n {{- tool_call.name }}\n {{- '\", \"arguments\": ' }}\n {%- if tool_call.arguments is string %}\n {{- tool_call.arguments }}\n {%- else %}\n {{- tool_call.arguments | tojson }}\n {%- endif %}\n {{- '}\\n</tool_call>' }}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if loop.first or (messages[loop.index0 - 1].role != \"tool\") %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n<tool_response>\\n' }}\n {%- if message.content is string %}\n {{- message.content }}\n {%- else %}\n {%- for content in message.content %}\n {%- if content.type == 'image' or 'image' in content or 'image_url' in content %}\n {%- set image_count.value = image_count.value + 1 %}\n {%- if add_vision_id %}Picture {{ image_count.value }}: {% endif -%}\n <|vision_start|><|image_pad|><|vision_end|>\n {%- elif content.type == 'video' or 'video' in content %}\n {%- set video_count.value = video_count.value + 1 %}\n {%- if add_vision_id %}Video {{ video_count.value }}: {% endif -%}\n <|vision_start|><|video_pad|><|vision_end|>\n {%- elif 'text' in content %}\n {{- content.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {{- '\\n</tool_response>' }}\n {%- if loop.last or (messages[loop.index0 + 1].role != \"tool\") %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n{%- endif %}\n"
3
+ }
4
+
qwen_base_config/config.json ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "Qwen3VLForConditionalGeneration"
4
+ ],
5
+ "image_token_id": 151655,
6
+ "model_type": "qwen3_vl",
7
+ "text_config": {
8
+ "attention_bias": false,
9
+ "attention_dropout": 0.0,
10
+ "bos_token_id": 151643,
11
+ "dtype": "bfloat16",
12
+ "eos_token_id": 151645,
13
+ "head_dim": 128,
14
+ "hidden_act": "silu",
15
+ "hidden_size": 2048,
16
+ "initializer_range": 0.02,
17
+ "intermediate_size": 6144,
18
+ "max_position_embeddings": 262144,
19
+ "model_type": "qwen3_vl_text",
20
+ "num_attention_heads": 16,
21
+ "num_hidden_layers": 28,
22
+ "num_key_value_heads": 8,
23
+ "rms_norm_eps": 1e-06,
24
+ "rope_scaling": {
25
+ "mrope_interleaved": true,
26
+ "mrope_section": [
27
+ 24,
28
+ 20,
29
+ 20
30
+ ],
31
+ "rope_type": "default"
32
+ },
33
+ "rope_theta": 5000000,
34
+ "tie_word_embeddings": true,
35
+ "use_cache": true,
36
+ "vocab_size": 151936
37
+ },
38
+ "tie_word_embeddings": true,
39
+ "transformers_version": "4.57.0.dev0",
40
+ "video_token_id": 151656,
41
+ "vision_config": {
42
+ "deepstack_visual_indexes": [
43
+ 5,
44
+ 11,
45
+ 17
46
+ ],
47
+ "depth": 24,
48
+ "hidden_act": "gelu_pytorch_tanh",
49
+ "hidden_size": 1024,
50
+ "in_channels": 3,
51
+ "initializer_range": 0.02,
52
+ "intermediate_size": 4096,
53
+ "model_type": "qwen3_vl",
54
+ "num_heads": 16,
55
+ "num_position_embeddings": 2304,
56
+ "out_hidden_size": 2048,
57
+ "patch_size": 16,
58
+ "spatial_merge_size": 2,
59
+ "temporal_patch_size": 2
60
+ },
61
+ "vision_end_token_id": 151653,
62
+ "vision_start_token_id": 151652
63
+ }
qwen_base_config/generation_config.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token_id": 151643,
3
+ "pad_token_id": 151643,
4
+ "do_sample": true,
5
+ "eos_token_id": [
6
+ 151645,
7
+ 151643
8
+ ],
9
+ "top_p": 0.8,
10
+ "top_k": 20,
11
+ "temperature": 0.7,
12
+ "repetition_penalty": 1.0,
13
+ "transformers_version": "4.56.0"
14
+ }
qwen_base_config/merges.txt ADDED
The diff for this file is too large to render. See raw diff
 
qwen_base_config/preprocessor_config.json ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "size": {
3
+ "longest_edge": 16777216,
4
+ "shortest_edge": 65536
5
+ },
6
+ "patch_size": 16,
7
+ "temporal_patch_size": 2,
8
+ "merge_size": 2,
9
+ "image_mean": [
10
+ 0.5,
11
+ 0.5,
12
+ 0.5
13
+ ],
14
+ "image_std": [
15
+ 0.5,
16
+ 0.5,
17
+ 0.5
18
+ ],
19
+ "processor_class": "Qwen3VLProcessor",
20
+ "image_processor_type": "Qwen2VLImageProcessorFast"
21
+ }
qwen_base_config/tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
qwen_base_config/tokenizer_config.json ADDED
@@ -0,0 +1,239 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_bos_token": false,
3
+ "add_prefix_space": false,
4
+ "added_tokens_decoder": {
5
+ "151643": {
6
+ "content": "<|endoftext|>",
7
+ "lstrip": false,
8
+ "normalized": false,
9
+ "rstrip": false,
10
+ "single_word": false,
11
+ "special": true
12
+ },
13
+ "151644": {
14
+ "content": "<|im_start|>",
15
+ "lstrip": false,
16
+ "normalized": false,
17
+ "rstrip": false,
18
+ "single_word": false,
19
+ "special": true
20
+ },
21
+ "151645": {
22
+ "content": "<|im_end|>",
23
+ "lstrip": false,
24
+ "normalized": false,
25
+ "rstrip": false,
26
+ "single_word": false,
27
+ "special": true
28
+ },
29
+ "151646": {
30
+ "content": "<|object_ref_start|>",
31
+ "lstrip": false,
32
+ "normalized": false,
33
+ "rstrip": false,
34
+ "single_word": false,
35
+ "special": true
36
+ },
37
+ "151647": {
38
+ "content": "<|object_ref_end|>",
39
+ "lstrip": false,
40
+ "normalized": false,
41
+ "rstrip": false,
42
+ "single_word": false,
43
+ "special": true
44
+ },
45
+ "151648": {
46
+ "content": "<|box_start|>",
47
+ "lstrip": false,
48
+ "normalized": false,
49
+ "rstrip": false,
50
+ "single_word": false,
51
+ "special": true
52
+ },
53
+ "151649": {
54
+ "content": "<|box_end|>",
55
+ "lstrip": false,
56
+ "normalized": false,
57
+ "rstrip": false,
58
+ "single_word": false,
59
+ "special": true
60
+ },
61
+ "151650": {
62
+ "content": "<|quad_start|>",
63
+ "lstrip": false,
64
+ "normalized": false,
65
+ "rstrip": false,
66
+ "single_word": false,
67
+ "special": true
68
+ },
69
+ "151651": {
70
+ "content": "<|quad_end|>",
71
+ "lstrip": false,
72
+ "normalized": false,
73
+ "rstrip": false,
74
+ "single_word": false,
75
+ "special": true
76
+ },
77
+ "151652": {
78
+ "content": "<|vision_start|>",
79
+ "lstrip": false,
80
+ "normalized": false,
81
+ "rstrip": false,
82
+ "single_word": false,
83
+ "special": true
84
+ },
85
+ "151653": {
86
+ "content": "<|vision_end|>",
87
+ "lstrip": false,
88
+ "normalized": false,
89
+ "rstrip": false,
90
+ "single_word": false,
91
+ "special": true
92
+ },
93
+ "151654": {
94
+ "content": "<|vision_pad|>",
95
+ "lstrip": false,
96
+ "normalized": false,
97
+ "rstrip": false,
98
+ "single_word": false,
99
+ "special": true
100
+ },
101
+ "151655": {
102
+ "content": "<|image_pad|>",
103
+ "lstrip": false,
104
+ "normalized": false,
105
+ "rstrip": false,
106
+ "single_word": false,
107
+ "special": true
108
+ },
109
+ "151656": {
110
+ "content": "<|video_pad|>",
111
+ "lstrip": false,
112
+ "normalized": false,
113
+ "rstrip": false,
114
+ "single_word": false,
115
+ "special": true
116
+ },
117
+ "151657": {
118
+ "content": "<tool_call>",
119
+ "lstrip": false,
120
+ "normalized": false,
121
+ "rstrip": false,
122
+ "single_word": false,
123
+ "special": false
124
+ },
125
+ "151658": {
126
+ "content": "</tool_call>",
127
+ "lstrip": false,
128
+ "normalized": false,
129
+ "rstrip": false,
130
+ "single_word": false,
131
+ "special": false
132
+ },
133
+ "151659": {
134
+ "content": "<|fim_prefix|>",
135
+ "lstrip": false,
136
+ "normalized": false,
137
+ "rstrip": false,
138
+ "single_word": false,
139
+ "special": false
140
+ },
141
+ "151660": {
142
+ "content": "<|fim_middle|>",
143
+ "lstrip": false,
144
+ "normalized": false,
145
+ "rstrip": false,
146
+ "single_word": false,
147
+ "special": false
148
+ },
149
+ "151661": {
150
+ "content": "<|fim_suffix|>",
151
+ "lstrip": false,
152
+ "normalized": false,
153
+ "rstrip": false,
154
+ "single_word": false,
155
+ "special": false
156
+ },
157
+ "151662": {
158
+ "content": "<|fim_pad|>",
159
+ "lstrip": false,
160
+ "normalized": false,
161
+ "rstrip": false,
162
+ "single_word": false,
163
+ "special": false
164
+ },
165
+ "151663": {
166
+ "content": "<|repo_name|>",
167
+ "lstrip": false,
168
+ "normalized": false,
169
+ "rstrip": false,
170
+ "single_word": false,
171
+ "special": false
172
+ },
173
+ "151664": {
174
+ "content": "<|file_sep|>",
175
+ "lstrip": false,
176
+ "normalized": false,
177
+ "rstrip": false,
178
+ "single_word": false,
179
+ "special": false
180
+ },
181
+ "151665": {
182
+ "content": "<tool_response>",
183
+ "lstrip": false,
184
+ "normalized": false,
185
+ "rstrip": false,
186
+ "single_word": false,
187
+ "special": false
188
+ },
189
+ "151666": {
190
+ "content": "</tool_response>",
191
+ "lstrip": false,
192
+ "normalized": false,
193
+ "rstrip": false,
194
+ "single_word": false,
195
+ "special": false
196
+ },
197
+ "151667": {
198
+ "content": "<think>",
199
+ "lstrip": false,
200
+ "normalized": false,
201
+ "rstrip": false,
202
+ "single_word": false,
203
+ "special": false
204
+ },
205
+ "151668": {
206
+ "content": "</think>",
207
+ "lstrip": false,
208
+ "normalized": false,
209
+ "rstrip": false,
210
+ "single_word": false,
211
+ "special": false
212
+ }
213
+ },
214
+ "additional_special_tokens": [
215
+ "<|im_start|>",
216
+ "<|im_end|>",
217
+ "<|object_ref_start|>",
218
+ "<|object_ref_end|>",
219
+ "<|box_start|>",
220
+ "<|box_end|>",
221
+ "<|quad_start|>",
222
+ "<|quad_end|>",
223
+ "<|vision_start|>",
224
+ "<|vision_end|>",
225
+ "<|vision_pad|>",
226
+ "<|image_pad|>",
227
+ "<|video_pad|>"
228
+ ],
229
+ "bos_token": null,
230
+ "chat_template": "{%- if tools %}\n {{- '<|im_start|>system\\n' }}\n {%- if messages[0].role == 'system' %}\n {%- if messages[0].content is string %}\n {{- messages[0].content }}\n {%- else %}\n {%- for content in messages[0].content %}\n {%- if 'text' in content %}\n {{- content.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {{- '\\n\\n' }}\n {%- endif %}\n {{- \"# Tools\\n\\nYou may call one or more functions to assist with the user query.\\n\\nYou are provided with function signatures within <tools></tools> XML tags:\\n<tools>\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\\n</tools>\\n\\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\\n<tool_call>\\n{\\\"name\\\": <function-name>, \\\"arguments\\\": <args-json-object>}\\n</tool_call><|im_end|>\\n\" }}\n{%- else %}\n {%- if messages[0].role == 'system' %}\n {{- '<|im_start|>system\\n' }}\n {%- if messages[0].content is string %}\n {{- messages[0].content }}\n {%- else %}\n {%- for content in messages[0].content %}\n {%- if 'text' in content %}\n {{- content.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- set image_count = namespace(value=0) %}\n{%- set video_count = namespace(value=0) %}\n{%- for message in messages %}\n {%- if message.role == \"user\" %}\n {{- '<|im_start|>' + message.role + '\\n' }}\n {%- if message.content is string %}\n {{- message.content }}\n {%- else %}\n {%- for content in message.content %}\n {%- if content.type == 'image' or 'image' in content or 'image_url' in content %}\n {%- set image_count.value = image_count.value + 1 %}\n {%- if add_vision_id %}Picture {{ image_count.value }}: {% endif -%}\n <|vision_start|><|image_pad|><|vision_end|>\n {%- elif content.type == 'video' or 'video' in content %}\n {%- set video_count.value = video_count.value + 1 %}\n {%- if add_vision_id %}Video {{ video_count.value }}: {% endif -%}\n <|vision_start|><|video_pad|><|vision_end|>\n {%- elif 'text' in content %}\n {{- content.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"assistant\" %}\n {{- '<|im_start|>' + message.role + '\\n' }}\n {%- if message.content is string %}\n {{- message.content }}\n {%- else %}\n {%- for content_item in message.content %}\n {%- if 'text' in content_item %}\n {{- content_item.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {%- if message.tool_calls %}\n {%- for tool_call in message.tool_calls %}\n {%- if (loop.first and message.content) or (not loop.first) %}\n {{- '\\n' }}\n {%- endif %}\n {%- if tool_call.function %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {{- '<tool_call>\\n{\"name\": \"' }}\n {{- tool_call.name }}\n {{- '\", \"arguments\": ' }}\n {%- if tool_call.arguments is string %}\n {{- tool_call.arguments }}\n {%- else %}\n {{- tool_call.arguments | tojson }}\n {%- endif %}\n {{- '}\\n</tool_call>' }}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if loop.first or (messages[loop.index0 - 1].role != \"tool\") %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n<tool_response>\\n' }}\n {%- if message.content is string %}\n {{- message.content }}\n {%- else %}\n {%- for content in message.content %}\n {%- if content.type == 'image' or 'image' in content or 'image_url' in content %}\n {%- set image_count.value = image_count.value + 1 %}\n {%- if add_vision_id %}Picture {{ image_count.value }}: {% endif -%}\n <|vision_start|><|image_pad|><|vision_end|>\n {%- elif content.type == 'video' or 'video' in content %}\n {%- set video_count.value = video_count.value + 1 %}\n {%- if add_vision_id %}Video {{ video_count.value }}: {% endif -%}\n <|vision_start|><|video_pad|><|vision_end|>\n {%- elif 'text' in content %}\n {{- content.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {{- '\\n</tool_response>' }}\n {%- if loop.last or (messages[loop.index0 + 1].role != \"tool\") %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n{%- endif %}\n",
231
+ "clean_up_tokenization_spaces": false,
232
+ "eos_token": "<|im_end|>",
233
+ "errors": "replace",
234
+ "model_max_length": 262144,
235
+ "pad_token": "<|endoftext|>",
236
+ "split_special_tokens": false,
237
+ "tokenizer_class": "Qwen2Tokenizer",
238
+ "unk_token": null
239
+ }
qwen_base_config/video_preprocessor_config.json ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "size": {
3
+ "longest_edge": 25165824,
4
+ "shortest_edge": 4096
5
+ },
6
+ "patch_size": 16,
7
+ "temporal_patch_size": 2,
8
+ "merge_size": 2,
9
+ "image_mean": [
10
+ 0.5,
11
+ 0.5,
12
+ 0.5
13
+ ],
14
+ "image_std": [
15
+ 0.5,
16
+ 0.5,
17
+ 0.5
18
+ ],
19
+ "processor_class": "Qwen3VLProcessor",
20
+ "video_processor_type": "Qwen3VLVideoProcessor"
21
+ }
qwen_base_config/vocab.json ADDED
The diff for this file is too large to render. See raw diff