# ttground-r1-ckpts Ground-R1 reproduction checkpoints for the demystify study. ## Naming convention Checkpoints are namespaced **by training stage**, because ablation/variant names overlap between the two matrices (a `baseline`, `ground` or `vanilla` row can exist on both sides): ``` rl/_seed_ckpt e.g. rl/baseline_seed42_ckpt1000 sft/_seed_ckpt e.g. sft/ground_seed42_ckpt125 ``` Always include the seed. A checkpoint whose seed is not recorded cannot be placed in a seeded matrix row -- see `williamium/ttground-r1-ckpts/baseline_ckpt1000_LEGACY` for the counter-example that motivated this rule. ## What is stored Weights + configs only (model shards, index, tokenizer, `preprocessor_config.json`, `chat_template.json`, `trainer_state.json`). The DeepSpeed `global_step*/` optimizer state is **not** uploaded: it is ~87G per RL checkpoint and has no use once a run has reached its step target. These checkpoints are therefore suitable for evaluation and warm-start, **not** for exact optimizer-state resume. ## Provenance - **RL** rows initialise from base `Qwen2.5-VL-7B-Instruct`. The paper is explicit that it does not cold-start RL from an SFT checkpoint ("we do not employ curated SFT dataset for cold-start training..."), and the upstream `run_grpo_video.sh` default matches. - **SFT** runs use effective batch 128 (per-device 4 x grad-accum 4 x 8 GPUs), 125 steps ~ 0.494 epoch. A checkpoint whose `trainer_state.json` does not show `epoch ~ 0.494` at step 125 was not trained at the reference batch size.