Delete the glm4-9B, mimo-7B, moonlight-16B and deepseek-r1 launch scripts - #2354
Conversation
…ipts Their models are dropped, so the launchers, their command snapshots and the doc pages built around them go with them. The Megatron model definitions stay: e2e tests and the low-precision / p2p examples still reference them. deepseek.md was the only page covering a surviving model, so it is rewritten around scripts/run_deepseek.py instead of the deleted shell recipe.
The previous commit kept scripts/models/glm4-9B.py because two things referenced it. Neither turns out to be a reason to keep the model: - tests/e2e/megatron/test_quick_start_glm4_9B.py registers itself with disabled="Not worthy for testing, too naive.", and run_suite.py keeps only entries whose `disabled` is None, so it has never run. - the p2p weight-transfer example carried a GLM-Z1-9B-0414 profile, which is the last consumer of the model definition and goes with the model. So the model definition, its expanded-args snapshot, the disabled e2e test, the p2p prepare/run configs, the GLM-Z1-9B.sh wrapper and the two recorded p2p argv snapshots are all removed, along with the profile name in test_self_executing_launchers.py. The p2p doc loses three rows: the Glm4ForCausalLM support row (whose only example was this model, and no code in the repo names that class), the node-count row, and the measured RDMA-vs-NCCL row. Dropping a measurement is deliberate: the configuration behind it no longer exists, so nobody can reproduce the number.
Moonlight's launcher went in the first commit, but the model definition stayed because two examples still used it. Both go now, so nothing in the repo names the model: - examples/infra_features/low_precision/run-moonlight-16B-A3B-int4.sh and its recorded commands. Three INT4 examples remain (qwen3-30B-A3B, qwen3-235B-A22B, kimi-k2-Thinking), so INT4 coverage survives, including on an MLA MoE via kimi-k2-Thinking. What is lost is the cheapest INT4 smoke test: Moonlight needed 4 GPUs on one node, and the smallest remaining one needs 8. - the p2p weight-transfer profile, its Moonlight-16B.sh wrapper and both recorded argv snapshots, plus the profile name in test_self_executing_launchers.py. scripts/models/moonlight.py, its expanded-args snapshot, and the two README entries go with them. The p2p doc loses the DeepseekV2ForCausalLM support row, the node-count row and the measured row -- the last one recorded the largest RDMA win in the table (-27.6%), and dropping it is deliberate: the configuration behind it is gone.
| submission. | ||
|
|
||
| ```bash | ||
| python scripts/run_deepseek.py train --num-nodes 16 --num-gpus-per-node 8 |
There was a problem hiding this comment.
[P1] Start and preserve Ray before preprocessing
This documented command fails on a clean host before the launcher reaches its own ray start --head. train() calls _prepare_megatron_ckpt() and _prepare_cp() first; both eventually call exec_command_multi_node(), whose first operation is ray.init(address="auto"), so they require an existing Ray head. The multi-node workaround is also lost by default because execute_train() stops that cluster unless MILES_SCRIPT_EXTERNAL_RAY=1, then starts only a new head. Since this PR makes run_deepseek.py the documented replacement, please either establish and preserve Ray before these preprocessing steps or document and wire an external-Ray workflow.
There was a problem hiding this comment.
solved in next PR
# Conflicts: # docs/index.md # docs/models/deepseek/deepseek.md # docs/models/deepseek/index.md # docs/models/glm/index.md # docs/models/index.md
# Conflicts: # docs/models/glm/glm4.md # docs/models/kimi/moonlight.md
#2391 replaced this page with a DeepSeek-V3.2 recipe, but V3 is still trainable: scripts/run_deepseek.py is the only launcher for the `deepseek-v3` model type, and no other launcher covers it (run_deepseek_v32.py is `deepseek-v32`, run_deepseek_v4.py is V4). Without the page the launcher had no documentation at all. The page comes back at its original path, so #2391's redirect from it to the V3.2 page is dropped -- it would otherwise shadow the restored page. The nav entry and the V3 rows in the three model tables are restored alongside it.
run_deepseek.py's train and run_deepseek_v32.py's full_train chained their prepare steps ahead of execute_train, but _prepare_megatron_ckpt and _prepare_cp fan out with exec_command_multi_node, whose first act is ray.init(address="auto"). So on a clean host they died before the launcher ever reached its own `ray start --head`, and starting a cluster by hand to get past that did not help either: execute_train's preamble runs `ray stop --force` and then brings up a fresh single-node head, so a multi-node conversion was followed by single-node training. Both now pass those steps as execute_train's before_ray_job_submit hook, which runs after the head is up and before the job is submitted -- and still runs under MILES_SCRIPT_EXTERNAL_RAY=1, where the pre-joined cluster is left alone. That covers both intended flows without touching execute_train's contract. The snapshot diff is the fix itself: `ray stop` / `ray start --head` moved ahead of the conversion and the rsyncs. Reported by @guapisolo on #2354.
Resolves the docs.json redirects conflict: keep this branch's three redirects and main's platforms/fp8 entries, and drop the stale /models/deepseek/deepseek redirect — #2354 restored that page on main, so redirecting it would shadow a live nav entry.
First of three chained PRs cleaning up
scripts/. Stack: #2354 (this) → #2355 → #2356.These four models are being dropped, so their launchers go, along with the recorded command snapshots and the doc pages built around them.
What is deleted
run-glm4-9B.sh,run-glm4-9B-4xgpu-radixtree.sh,run-mimo-7B-rl-eagle.sh,run-moonlight-16B-A3B.sh,run-deepseek-r1.shtests/snapshots/launch_scripts/sh/scripts/*.txtdocs/models/glm/glm4.md,docs/models/mimo/mimo.md,docs/models/kimi/moonlight.mdWhat deliberately stays
Three of the four Megatron model definitions under
scripts/models/are not deleted, because something that still runs references them:mimo-7B-rl.py—tests/e2e/megatron/test_mimo_7B_mtp_only_grad.py, which is registered onstage-c-4-gpu-h200andstage-c-4-gpu-mi350with nodisabled=moonlight.py—examples/infra_features/low_precision/run-moonlight-16B-A3B-int4.shand the p2p profiledeepseek-v3.py—scripts/run_deepseek.pyand the V3.2 launchersglm4-9B.pyis deleted, in the second commit. It initially looked referenced, but neither reference held up:tests/e2e/megatron/test_quick_start_glm4_9B.pyregisters itselfdisabled="Not worthy for testing, too naive."andrun_suite.pyruns only entries whosedisabledis None, so it has never executed; and the p2p weight-transfer profile was the only real consumer, so it goes with the model. The disabled test, the p2p prepare/run configs, theGLM-Z1-9B.shwrapper, both recorded p2p argv snapshots and three rows ofdocs/advanced/p2p-weight-transfer.mdare removed with it. Dropping the measured RDMA-vs-NCCL row is deliberate — the configuration behind that number no longer exists.deepseek.mdis rewritten rather than deletedIt was the only page covering a model that survives: DeepSeek-V3 is still supported through
scripts/run_deepseek.py. The page's whole recipe section was transcribed from the deleted shell script, so it is rewritten around the python launcher's actual values (TP/PP/CP/EP ladder keyed off--num-nodes, thedeepep low_latencysglang block, the--max-tokens-per-gpu 2048placeholder flagged as such). R1-specific content is gone; index pages anddocs.jsonare updated.docs/user-guide/training-script-walkthrough.mdusedrun-glm4-9B.shas its reference script and is re-pointed at a surviving one.Testing
pytest tests/manual/launch_scripts tests/fast/launch_scripts— 524 passed. The discovery test that asserts snapshot-set == script-set is what proves nothing was left dangling.