Where this checkpoint sits
Table | |
|---|
| global_step | 500 / 4,039 (12.4%) |
| epoch | 0.124 |
| training loss at save | 0.3002 |
Output format has been learned; the navigation task has barely been learned.
The loss curve drops 2.07 → 0.36 within the first 30 steps (acquiring the output
grammar), then flattens into a slow decline. This checkpoint sits early in that
flat region. It is released to isolate the performance of a model that has
learned the format but little else — a control point for comparison against
the untrained model (0% strict format compliance) and against the fully trained one.
Training setup
- Base:
Qwen/Qwen3.5-2B (2.27B, image-text-to-text)
- Data: AgentVLN-Instruct,
R2R portion, 1/4 subsample
- scene-proportional allocation, task-level (trajectory-level) sampling, seed 0
- 2,703 tasks / 129,246 samples / all 61 scenes retained
- Distributed: DeepSpeed ZeRO-2 with CPU optimizer offload, 4 × RTX A5000
- Full fine-tune (vision encoder frozen), bf16, gradient checkpointing
- lr 2e-5 (LLM) / 2e-6 (vision) / 1e-5 (projector), cosine, warmup 118
- batch 1 × grad_accum 8 × 4 GPUs = effective batch 32
attn_implementation=sdpa, max_seq_length=4096
Label reconstruction (important)
The public AgentVLN-Instruct release uses schema v1, and the public training
code therefore disables two label types automatically. The code says so itself:
[VLNNavDataset] Legacy schema detected: STOP and target samples are disabled;skipped_stop=10822, disabled_target_frames=494978
Those two are the only paths by which agent_stopped becomes True at
evaluation time, so training on the data as-is yields a model whose success rate
is structurally zero. They were restored with wrappers, without modifying the
upstream code:
- STOP — plain restoration.
action == 0 is present in the data (100% of
tasks end with STOP); the loader merely filters those steps out. They were put
back into the sample index. Nothing was invented.
<target> — reconstruction. Upstream schema v3 defines
trajectory_is_endpoint as trajectory_goal_distances[s] <= endpoint_target_radius_m,
but the public release contains neither field. A proxy was used instead:
trajectory_world[s] == trajectory_world[last].
Rationale: trajectory_world converges exactly to its final value late in each
trajectory and stays there (median distance to the final value is 0.00 m for the
last 0–8 steps; 65.2% of tasks hold the identical value for ≥12 steps). Widening
the tolerance from 0 to 0.25 m changes the endpoint-step count by only 2.5%, so
the boundary is sharp and the rule has no free parameter.
There is no guarantee this matches the original. Treat it as a
reconstruction, not a reproduction.
Restored on the full dataset: STOP +10,822, <target> +189,040.
Qwen3.5 compatibility patches
AgentVLN's collator targets Qwen3-VL and does not pass mm_token_type_ids, which
Qwen3.5 requires for M-RoPE. It was reconstructed as
(input_ids == image_token_id) and added to the batch — verified to match the
processor's own output exactly. The training code also targets transformers 4.x,
so the removal of warmup_ratio and save_safetensors in 5.x was handled in a
wrapper.
Usage
from transformers import AutoProcessor, AutoModelForImageTextToText m = "cyhoaoen/agentvln-qwen35-2b-r2r-quarter-step500"processor = AutoProcessor.from_pretrained(m, trust_remote_code=True)model = AutoModelForImageTextToText.from_pretrained( m, torch_dtype="bfloat16", trust_remote_code=True)
Apply the chat template with enable_thinking=False. When a completed
assistant turn is rendered during training, Qwen3.5's template emits an empty
<think></think> block; using enable_thinking=False at inference makes the
prompt byte-identical to what the model saw. Leaving it at the default (True)
ends the prompt with an open <think> and the model will not emit an answer
within a small token budget.
Provenance and licensing
- Base model: Qwen/Qwen3.5-2B — Apache-2.0
- Training data: allenxinn/AgentVLN-Instruct
— no license is declared on that dataset, and the AgentVLN code repository
contains no LICENSE file. The weights here are a derivative of an Apache-2.0
base model and do not redistribute the dataset, but if you intend to use this
model beyond research, check terms with the original authors.
The underlying imagery derives from Matterport3D, which has its own terms of use.
- Method and training code: AgentVLN (Xin et al., 2026)
- Reproduction code for this checkpoint: https://github.com/chynl63/vln-reproduce
This is not an official AgentVLN checkpoint, and it does not reproduce the
numbers reported in the paper. The authors' own checkpoints have not been released.