Training data
Table with columns: Component, Rows| Component | Rows |
|---|
AgenticData original tasks (2,007 with <think>) | 6,007 |
CodeDance SFT (multi-turn <code> tool use, no <think>) | 13,828 |
TIR synthetic thinking attachment (all with <think>) | 6,680 |
Total (8,687 rows with <think>) | 26,515 |
Known limitations of this mixture for thinking-mode training, carried over from the legacy recipe: only 33% of rows contain a <think> block, the reasoning is short (median 141 characters for AgenticData, 525 for the synthetic set), and 4,000 AgenticData rows are bare single-answer responses without reasoning or code.
Training configuration
- Base model:
Qwen/Qwen3.5-9B; full-parameter SFT, vision tower and aligner frozen
- Recipe: thinking (
add_non_thinking_prefix=false, loss_scale=default+ignore_empty_think, truncation_strategy=left, max_pixels=2408448)
- Learning rate 1e-5, min 1e-6, cosine decay, warmup fraction 0.05, weight decay 0.1, clip grad 1.0
- Maximum length 32,768; global batch 64; micro batch 1; TP=2, PP=1, sequence parallel; bf16; flash attention
- One epoch = 414/414 optimizer steps, elapsed 5h 29m 6s, final training loss 0.14426088
- Full arguments:
training/args.json; per-step log: training/logging.jsonl
Evaluation
Not yet evaluated at publication time. Results on TIR-Bench and the huawei_benchmark suite (FVQA, SimpleVQA, MMBrowseComp, GAIA) will be added alongside the legacy checkpoint for comparison.
Inference
vllm serve HEART77/TIR-Qwen3.5-9B-Thinking --port 8000 --max-model-len 32768 --reasoning-parser qwen3
The model uses the TIR agent format: assistant turns may open with <think>...</think>, emit Python in <code> blocks, receive results as a user turn beginning with Code execution result:, and finish with <answer>...</answer>.