Training
- Instruct SFT: one pass over the LLaVA-OneVision-1.5-Instruct blend
(197 sources), 2274 steps at sequence length 16384.
- Decay anneal: 326 further steps over the same sources, reweighted
towards document and OCR data, with the learning rate decayed to zero.
- RL: one pass over
ViRL39K, 57 steps, with the
molt RL framework.
- Data: single-image rows that a trained 32B model does not always solve
(PassRate < 1), deduplicated by image hash and question, with every row whose
image matches a MathVista testmini image removed. 15,919 training prompts.
- Reward: 1 if the
\boxed{} answer matches the reference (math-equivalence and
multiple-choice matching), else 0.
- Algorithm: REINFORCE with a group-mean baseline (8 answers per prompt), PPO-style
clipping (0.2 / 0.28), no KL penalty. Groups where all 8 answers score the same are
dropped and refilled. Training-inference mismatch is handled with sequence-level
importance-ratio masking, and MoE routing is replayed from inference.
- 128 prompts per step, up to 8192 new tokens, temperature 1.0, Adam with a
constant learning rate of 1e-6, vision encoder frozen.
- 32 nodes of JUPITER (4x GH200 per node) for 4.9 hours.
Results
4 answers per question at temperature 1.0, up to 16384 new tokens, pass@1 averaged over
the answers. "SFT" is the model after stage 2.
Table with columns: Benchmark, SFT, CVC-Qwen3.5-35B-A3B, Qwen3.5-35B-A3B| Benchmark | SFT | CVC-Qwen3.5-35B-A3B | Qwen3.5-35B-A3B |
|---|
| MathVista testmini (1000) | 0.701 | 0.815 | 0.852 |
| - multiple choice (540) | 0.703 | 0.862 | 0.901 |
| - free form (460) | 0.698 | 0.760 | 0.795 |
| MathVista median answer length (tokens) | 633 | 566 | 1652 |
The RL stage targets visual math. GPQA Diamond (text-only science) is unchanged.
General multimodal benchmarks
lmms-eval + vLLM, thinking enabled,
max_new_tokens=2048 (more than any of the three models uses, so no answer is cut
short). mmbench_en_dev and hallusion_bench_image are excluded: their GPT-judge
scoring needs internet access the compute nodes don't have. Bold marks the best per row.
Table with columns: Benchmark, SFT, CVC-Qwen3.5-35B-A3B, Qwen3.5-35B-A3B| Benchmark | SFT | CVC-Qwen3.5-35B-A3B | Qwen3.5-35B-A3B |
|---|
| mmmu_val (acc) | 0.6811 | 0.6967 | 0.6267 |
| mme (perception) | 1754.0 | 1807.2 | 1560.8 |
| mme (cognition) | 772.5 | 775.4 | 751.8 |
| ai2d (exact_match) | 0.8562 | 0.8818 |
Although RL trained only on visual math, it improved most general benchmarks
(textvqa +13.5, mmstar +3.0, chartqa +3.8) while generating 40% fewer answer tokens
than the SFT model. Thinking matters for this model: with thinking turned off
(enable_thinking=False), docvqa drops to 0.55 and textvqa to 0.52.
Notes
- Uses the Qwen3.5 chat template, which renders
<think> blocks on every assistant
turn. Prompt for a final answer in \boxed{} to match the RL training format.
eos_token is <|im_end|>, and generation_config.json stops on both
<|im_end|> (248046) and <|endoftext|> (248044).
- With vLLM, set
mamba_ssm_cache_dtype="float32" for the linear-attention state,
as done in training and evaluation.