Add files using upload-large-folder tool
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- .gitattributes +21 -0
- README.md +185 -0
- configs/deploy_policy.yml +69 -0
- configs/execution_module_train_m1_mix.yaml +94 -0
- eval_results/observe_and_pickup/_result.txt +7 -0
- eval_results/observe_and_pickup/episode19.mp4 +3 -0
- eval_results/observe_and_pickup/episode2.mp4 +3 -0
- eval_results/observe_and_pickup/episode21.mp4 +0 -0
- eval_results/observe_and_pickup/episode24.mp4 +3 -0
- eval_results/observe_and_pickup/episode30.mp4 +3 -0
- eval_results/observe_and_pickup/episode31.mp4 +3 -0
- eval_results/observe_and_pickup/episode33.mp4 +3 -0
- eval_results/observe_and_pickup/episode36.mp4 +0 -0
- eval_results/observe_and_pickup/episode37.mp4 +0 -0
- eval_results/observe_and_pickup/episode44.mp4 +3 -0
- eval_results/observe_and_pickup/episode47.mp4 +3 -0
- eval_results/observe_and_pickup/episode51.mp4 +3 -0
- eval_results/observe_and_pickup/episode53.mp4 +3 -0
- eval_results/observe_and_pickup/episode59.mp4 +3 -0
- eval_results/observe_and_pickup/episode65.mp4 +3 -0
- eval_results/observe_and_pickup/episode75.mp4 +3 -0
- eval_results/observe_and_pickup/episode79.mp4 +3 -0
- eval_results/observe_and_pickup/episode83.mp4 +3 -0
- eval_results/observe_and_pickup/episode84.mp4 +3 -0
- eval_results/observe_and_pickup/episode85.mp4 +3 -0
- eval_results/observe_and_pickup/eval_log.txt +103 -0
- eval_results/put_back_block/_result.txt +7 -0
- eval_results/put_back_block/eval_log.txt +103 -0
- eval_results/rearrange_blocks/_result.txt +7 -0
- eval_results/rearrange_blocks/eval_log.txt +103 -0
- eval_results/summary.md +44 -0
- eval_results/swap_T/_result.txt +7 -0
- eval_results/swap_T/episode16.mp4 +3 -0
- eval_results/swap_T/episode45.mp4 +3 -0
- eval_results/swap_T/episode86.mp4 +3 -0
- eval_results/swap_T/episode89.mp4 +3 -0
- eval_results/swap_T/eval_log.txt +103 -0
- eval_results/swap_blocks/_result.txt +7 -0
- eval_results/swap_blocks/eval_log.txt +103 -0
- norm_stats/norm_stats.json +6 -0
- qwen_base_config/README_Qwen3-VL-2B-Instruct.md +192 -0
- qwen_base_config/chat_template.json +4 -0
- qwen_base_config/config.json +63 -0
- qwen_base_config/generation_config.json +14 -0
- qwen_base_config/merges.txt +0 -0
- qwen_base_config/preprocessor_config.json +21 -0
- qwen_base_config/tokenizer.json +0 -0
- qwen_base_config/tokenizer_config.json +239 -0
- qwen_base_config/video_preprocessor_config.json +21 -0
- 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 |
+

|
| 63 |
+
|
| 64 |
+
**Pure text performance**
|
| 65 |
+

|
| 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
|
|
|