Views
No views yet
qwen3vl-8b-robocasa-v3-active-observation that fixes a training/eval consistency bug in how image observations were attached to training examples.last_agent — effectively conditioning on which agent had most recently produced the acting example, which in practice let the model infer the correct next tool call from whether an image was present at all, rather than from genuine visual/task reasoning. This "cheat code" (image present → call a comm/physical tool; image absent → call get_image) is not available at inference time in the same closed-loop way it appeared during training, so it broke causal consistency between train and eval.causal_single_cache mode that tracks an explicit active_observation_agent cache during example construction. The cached image owner only updates when a get_image call occurs, and resets to None whenever a different agent takes a non-communicate/non-task-complete action. Image attachment now depends only on this causally-prior state, not on which tool call comes next in the trajectory.run_config.json for the full task list), tool-call SFT format.o_proj, q_proj, k_proj, v_proj, down_proj, gate_proj, up_proj--predict-acting-agent --train-get-image --causal-single-cache| Metric | Value |
|---|---|
| train_loss | 0.0365 |
| eval_loss | 0.0283 |
| train_runtime | 8822.9s (2h27m) |
| train_samples/sec | 15.79 |
1from peft import PeftModel
2from transformers import AutoModelForVision2Seq, AutoProcessor
3
4base_model = AutoModelForVision2Seq.from_pretrained("Qwen/Qwen3-VL-8B-Instruct")
5model = PeftModel.from_pretrained(base_model, "DorianAtSchool/qwen3vl-8b-robocasa-v3-active-observation-causal")
6processor = AutoProcessor.from_pretrained("Qwen/Qwen3-VL-8B-Instruct")