Qwen/Qwen2.5-VL-7B-Instruct
to bootstrap the chart-to-code and self-correction behaviors before the
multi-turn RL stages.This is an intermediate checkpoint, not the final MM-ReCoder model. If you want the best chart-to-code performance, usecwbc/MM-ReCoderinstead. This checkpoint is released for researchers who want to reproduce or ablate the RL stages of the paper.
cwbc/MM-ReCoder.REF_MODEL_PATH=cwbc/MM-ReCoder-SFT-Cold-Start):1git clone https://github.com/ZitianTang/MM-ReCoder.git
2cd MM-ReCoder
3# Follow the Installation section in the repo README, then launch the
4# LLM-as-a-judge reward server (see the RL Training section).
5
6# Stage 1: multi-turn GRPO with a shared first turn.
7bash examples/mmrecoder/train/stage1-shared-first-turn.sh
8
9# Stage 2: multi-turn GRPO on the full trajectory, resumed from stage 1.
10bash examples/mmrecoder/train/stage2-full-trajectory.sh1# Download the cold-start checkpoint.
2hf download cwbc/MM-ReCoder-SFT-Cold-Start
3
4# Two-turn self-correction on ChartMimic, using the cold-start model.
5bash examples/mmrecoder/inference/chartmimic_2turns.sh \
6 model.path=cwbc/MM-ReCoder-SFT-Cold-Start \
7 data.output_path=generations/coldstart_chartmimic_2turns.jsoncwbc/MM-ReCoder
on multi-turn benchmarks; this is the intended baseline comparison.transformers to inspect
single-turn chart-to-code behavior:1from transformers import AutoProcessor, Qwen2_5_VLForConditionalGeneration
2import torch
3
4model_id = "cwbc/MM-ReCoder-SFT-Cold-Start"
5processor = AutoProcessor.from_pretrained(model_id)
6model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
7 model_id, torch_dtype=torch.bfloat16, device_map="auto"
8)1@inproceedings{tang2026mmrecoder,
2 title={MM-ReCoder: Advancing Chart-to-Code Generation with Reinforcement Learning and Self-Correction},
3 author={Zitian Tang and Xu Zhang and Jianbo Yuan and Yang Zou and Varad Gunjal and Songyao Jiang and Davide Modolo},
4 booktitle={CVPR},
5 year={2026}
6}