Training
Two supervised finetuning stages, both at sequence length 16384 on 64 nodes of
JUPITER (4x GH200 per node):
- Instruct SFT — one pass over the LLaVA-OneVision-1.5-Instruct + Nemotron-VLM-V2
(197 sources), 2274 steps, 16.7B tokens
- Decay anneal — a further 326 steps over the same sources reweighted
towards document and OCR data, with the learning rate decayed to zero. ~2B tokens.
Benchmark Results
Evaluated with lmms-eval +
vLLM on JUPITER (8 nodes, 32x GH200).
Table with columns: Benchmark, CVC-35B-A3B-Instruct, Qwen3.5-35B-A3B-Base, Qwen3.5-35B-A3B| Benchmark | CVC-35B-A3B-Instruct | Qwen3.5-35B-A3B-Base | Qwen3.5-35B-A3B |
|---|
| MMU_val (acc) | 0.6833 | 0.6056 | 0.6267 |
| MME (perception) | 1769.7 | 1666.4 | 1560.8 |
| MME (cognition) | 762.9 | 740.4 | 751.8 |
| AI2D (exact_match) | 0.8598 | 0.0929 | 0.6758 |
| OCRBench (accuracy) | 0.8760 | 0.8920 | 0.9120 |
| MMStar (average) | 0.7373 | 0.7381 | 0.7289 |
| ChartQA (relaxed_overall) | 0.7720 | 0.2620 | 0.7572 |
| MMLongBenchDoc (acc) | 0.1790 | 0.2000 | 0.1980 |
| MMLongBenchDoc (f1) | 0.0360 | 0.0110 | 0.0060 |
| DocVQA_val (anls) | 0.9130 | 0.6515 | 0.9539 |
| TextVQA_val (exact_match) | 0.6573 | 0.2669 | 0.7665 |
| InfoVQA_val (anls) | 0.8570 | 0.3412 | 0.8622 |
| SeedBench (seed_all) | 0.7429 | 0.7479 | 0.7152 |
| RealWorldQA (exact_match) | 0.7438 | 0.6288 | 0.7739 |
Training data mixture
Both stages draw from the same 197-source LLaVA-OneVision-1.5-Instruct with Nemotron-VLM-Dataset-V2. The two stages differ only in how that blend is
sampled. The exact list of subsets can be found on DATA_MIX.md.
Stable (instruct SFT) blend_epochized, every sample seen once
(one deterministic full pass, ~16.7B tokens total). Composition follows each
source's natural size:
Table with columns: Category, Share of stable-phase tokens, Example subsets| Category | Share of stable-phase tokens | Example subsets |
|---|
| OCR / scene-text (core) | 1.34% | textvqa, st_vqa, textocr_gpt4v, ocrvqa, llavar, textcaps, sroie_data |
| Document VQA (core) | 0.31% | docvqa_train, infographic_vqa |
Decay (anneal) switched to a weighted blend (continuous sampling,
~2B-token budget) with four target categories deliberately upweighted:
Table with columns: Category, Share of decay-phase tokens| Category | Share of decay-phase tokens |
|---|
| OCR / scene-text (core, upweighted) | 25% |
| Document VQA (core, upweighted) | 15% |
| Spatial / real-world (core, upweighted) | 12% |
| Chart / plot (core, upweighted) | 8% |
| Text-only reasoning/math/code (replay) | 13.79% |
| General captioning/instruct (replay) | 9.97% |
| Nemotron-v2 text (replay) | 8.10% |
| Document/OCR-adjacent, not core (replay) | 6.72% |
Notes
- Uses the Qwen3.5 chat template. Unlike the upstream instruct template, this
one renders
<think> blocks on every assistant turn rather than only the
last, matching how the model was trained.
eos_token is <|im_end|>, and generation_config.json stops on both
<|im_end|> (248046) and <|endoftext|> (248044).