translation: mechanical slime->vime / sglang->vllm cleanup (#107 follow-up) - #199
Conversation
…107 Low-risk follow-up to the #107 sync: finish the mechanical translation and trim vime-invented prose back to slime's brevity. No runtime-behavior changes. - tests, vime/ray/rollout.py, vime/rollout/_fanout_test_helpers.py, vime/utils/dp_schedule.py, scripts/run-minimax-m2.sh, .github/workflows/pr-test.yml: finish slime->vime / sglang->vllm / SLIME_TEST_*->VIME_TEST_* symbol translation left over from #107. - docs/{en,zh}/developer_guide/profiling.md, examples/qwen3-30B-A3B.md, examples/qwen3-4B.md: trim vime-invented sections to mirror slime; keep only genuine vLLM engine differences (profiler needs --vllm-profiler-config, EPLB config, cudagraph-capture-sizes). - docs/{en,zh}/developer_guide/debug.md: replace the (vime-expanded) Ray Distributed Debugger section with a one-line pointer to verl's Ray Debugging Tutorial. - examples/{fully_async,geo3k_vlm,geo3k_vlm_multi_turn}, scripts/run-qwen2.5- 0.5B-reproducibility.sh, vime/utils/external_utils/command_utils.py: drop vime-invented comments/prose. Keep the vLLM-0.22.0 enforce-eager note (Qwen3-VL logprob parity, vllm#43617) -- a real engine requirement. docs/{en,zh}/advanced/speculative-decoding.md intentionally left unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Code Review
This pull request primarily rebrands references of 'slime' to 'vime' across tests, scripts, and codebase comments, while significantly streamlining and simplifying the documentation for debugging, profiling, and multi-node training. The review feedback highlights grammatical and translation issues in the Chinese multi-node documentation, specifically recommending the removal of a trailing '之外' and correcting the mathematical term '乘除' to '倍数或约数' for accuracy.
| 对于多机环境,需要进行如下的几点修改: | ||
| - 将训练模型,数据放在所有机器都可以访问到的路径上; | ||
| - 设置各台机器都可以访问到的 `MASTER_ADDR` 之外; | ||
| - 去掉 CPU adam 相关的配置,因为使用了 distributed optimizer,所以多机环境下 optimizer 的显存占比会明显下降。 |
There was a problem hiding this comment.
The phrase "之外" (besides/except) at the end of this bullet point is grammatically incorrect and appears to be a translation artifact (likely left over from a sentence structure like "除了...之外"). It should be removed to make the sentence grammatically correct and clear.
| - 去掉 CPU adam 相关的配置,因为使用了 distributed optimizer,所以多机环境下 optimizer 的显存占比会明显下降。 | |
| - 设置各台机器都可以访问到的 MASTER_ADDR; |
| #### EPLB | ||
|
|
||
| 当总卡数并不能被 expert 总数整除时,可以开启 vLLM 的 EPLB(Expert Parallelism Load Balancer),通过 `--vllm-eplb-config` 配置冗余 expert。例如对于 24 卡的场景: | ||
| - 当总卡数并不能被 expert 总数乘除时,可以开启 vLLM 的 EPLB(Expert Parallelism Load Balancer),通过 `--vllm-eplb-config` 来增加冗余的 expert,例如对于 24 卡的场景,可以配置: |
There was a problem hiding this comment.
The term "乘除" (multiplication and division) is mathematically incorrect and awkward in this context. The English version uses "multiple or divisor", which translates more accurately to "倍数或约数" in Chinese.
| - 当总卡数并不能被 expert 总数乘除时,可以开启 vLLM 的 EPLB(Expert Parallelism Load Balancer),通过 `--vllm-eplb-config` 来增加冗余的 expert,例如对于 24 卡的场景,可以配置: | |
| - 当总卡数不是 expert 总数的倍数或约数时,可以开启 vLLM 的 EPLB(Expert Parallelism Load Balancer),通过 --vllm-eplb-config 来增加冗余的 expert,例如对于 24 卡的场景,可以配置: |
Reverts docs/** here; the doc-site trims now live in the dedicated docs-only PR #201 so this PR stays scoped to mechanical symbol translation + example/ script/command_utils prose cleanup. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Both files had drifted far from their slime originals; restore them to slime's content with only the sanctioned translations. run-qwen2.5-0.5B-reproducibility.sh: #180 re-created this file with vime-only scaffolding (NUM_GPUS var, VIME_ROOT on PYTHONPATH, --dashboard-* flags, MASTER_ADDR, a RUNTIME_ENV_JSON heredoc, --train-backend megatron) and dropped the engine-kill. Revert to slime's script verbatim, applying only: pkill -9 sglang -> pkill -9 -f "vllm serve"; slime-dev -> vime-dev; SGLANG_ARGS -> VLLM_ARGS (+ --vllm-gpu-memory-utilization / --vllm-attention-backend / --vllm-enable-deterministic-inference). --train-backend megatron is vime's only choice + default (redundant); VIME_ROOT is unneeded (run-qwen3-30B-A3B.sh and slime both omit it). Kept one fix vs slime: source "${SCRIPT_DIR}/models/..." (slime's "${SCRIPT_DIR}/scripts/models/..." doesn't resolve in this layout). fully_async/README.md: was a full vime-invented rewrite (even its "Creating new global async worker..." log lines don't match the code). Restore slime's README structure/prose, translated, pointing at vime's actual run-qwen3-4b-fully_async.sh and examples/coding_agent_rl, with args.sglang_server_concurrency -> args.vllm_server_concurrency. The "You should see" lines now match what vime/rollout/fully_async_rollout.py actually logs. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…dren pkill -9 -f 'vllm serve' only catches the parent; vLLM renames its subprocesses (VLLM::EngineCore / Worker_TP*). Match the renamed children too, mirroring vime/utils/external_utils/command_utils.py. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: aoshen02 <aoshen@inferact.ai>
…low-up) (#201) * docs: trim vime-invented sections to mirror slime's brevity (#107 follow-up) Split out of #199 (docs-only). Trim the doc-site pages that had grown vime-invented sections well beyond slime's, keeping only genuine vLLM engine differences. No code or example/script changes. - developer_guide/profiling.md (en+zh): drop the long invented flow/verify/ troubleshooting + ~150-line runnable script; keep slime's sleep/engine-list/ tooling/stress sections plus one compact "Enabling the vLLM Profiler" note (vLLM only registers /start_profile with --vllm-profiler-config; a real engine difference vs sglang). - examples/qwen3-30B-A3B.md (en+zh): drop the invented multinode topology/Ray/ smoke-test/param tables; restore slime's 3-bullet form + the redundant-expert example (--sglang-ep-num-redundant-experts -> --vllm-eplb-config). - examples/qwen3-4B.md (en+zh): drop invented IPC/Ray/decoupled blocks; restore slime's dp_size note + concurrency/cudagraph block (--sglang-* -> --vllm-*). - developer_guide/debug.md (en+zh): replace the (vime-expanded) Ray Distributed Debugger section with a one-line pointer to verl's Ray Debugging Tutorial. docs/{en,zh}/advanced/speculative-decoding.md intentionally left unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs: narrow #201 to cruft-removal only (restore over-trimmed docs) Earlier this PR trimmed four docs hard toward slime's brevity, which dropped correct, useful vime content. Walk that back to remove only what's wrong / redundant / unnecessary: - profiling.md (en+zh): keep the full vLLM-profiler workflow (sleep_rollout, --vllm-profiler-config, router/worker discovery, tools/profile_rollout.py, trace viewing, troubleshooting, the VLLM_RPC_TIMEOUT gotcha). Remove only: the fabricated `--rollout-backend vllm` flag (no such vime arg), the VIME_ROOT scope-creep on PYTHONPATH (-> /root/Megatron-LM), and the redundant 150-line embedded run_profiling_demo.sh (restates the steps above, hardcodes /root/*). - examples/qwen3-30B-A3B.md, examples/qwen3-4B.md (en+zh): restored to main -- the multinode (topology/Ray/smoke/params/troubleshooting), EPLB, and vLLM-args/decoupled/--train-memory-margin-bytes content is correct and useful, not fabricated. - developer_guide/debug.md (en+zh): restored to main, which already carries the Ray Distributed Debugger tutorial equivalent to slime #2001 (no slime/sglang tokens to translate). Dropped the interim verl one-liner. Net effect of this PR vs main: profiling.md cruft removal only. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs(profiling): fix only the broken bits, keep the rest Per review: keep profiling.md as-is and fix only what's actually wrong: - drop the fabricated `--rollout-backend vllm` flag (vime has no such arg; it would make the train.py example fail). - use the robust engine-kill pattern `pkill -9 -f '[v]llm serve|VLL[M]::'` (matches vime/utils/external_utils/command_utils.py; also catches the renamed VLLM::EngineCore / Worker_TP* children). All other content (workflow, the runnable example, PYTHONPATH, etc.) is left untouched. The other docs restored earlier in this PR stay at main. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs(profiling): also drop repo-root from PYTHONPATH Per review, the PYTHONPATH scope-creep is also worth fixing: vime is importable without the repo root on PYTHONPATH (slime and vime's run-qwen3-30B-A3B.sh both use just /root/Megatron-LM). Drop it from both the §2.1 example (/root/vime:/root/Megatron-LM) and the §8 script (${VIME_ROOT}:/root/Megatron-LM). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ow-up) (#199) * translation: mechanical slime->vime / sglang->vllm cleanup missed in #107 Low-risk follow-up to the #107 sync: finish the mechanical translation and trim vime-invented prose back to slime's brevity. No runtime-behavior changes. - tests, vime/ray/rollout.py, vime/rollout/_fanout_test_helpers.py, vime/utils/dp_schedule.py, scripts/run-minimax-m2.sh, .github/workflows/pr-test.yml: finish slime->vime / sglang->vllm / SLIME_TEST_*->VIME_TEST_* symbol translation left over from #107. - docs/{en,zh}/developer_guide/profiling.md, examples/qwen3-30B-A3B.md, examples/qwen3-4B.md: trim vime-invented sections to mirror slime; keep only genuine vLLM engine differences (profiler needs --vllm-profiler-config, EPLB config, cudagraph-capture-sizes). - docs/{en,zh}/developer_guide/debug.md: replace the (vime-expanded) Ray Distributed Debugger section with a one-line pointer to verl's Ray Debugging Tutorial. - examples/{fully_async,geo3k_vlm,geo3k_vlm_multi_turn}, scripts/run-qwen2.5- 0.5B-reproducibility.sh, vime/utils/external_utils/command_utils.py: drop vime-invented comments/prose. Keep the vLLM-0.22.0 enforce-eager note (Qwen3-VL logprob parity, vllm#43617) -- a real engine requirement. docs/{en,zh}/advanced/speculative-decoding.md intentionally left unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs: move doc-site trims to their own PR (#201) Reverts docs/** here; the doc-site trims now live in the dedicated docs-only PR #201 so this PR stays scoped to mechanical symbol translation + example/ script/command_utils prose cleanup. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * examples/scripts: mirror slime for repro script + fully_async README Both files had drifted far from their slime originals; restore them to slime's content with only the sanctioned translations. run-qwen2.5-0.5B-reproducibility.sh: #180 re-created this file with vime-only scaffolding (NUM_GPUS var, VIME_ROOT on PYTHONPATH, --dashboard-* flags, MASTER_ADDR, a RUNTIME_ENV_JSON heredoc, --train-backend megatron) and dropped the engine-kill. Revert to slime's script verbatim, applying only: pkill -9 sglang -> pkill -9 -f "vllm serve"; slime-dev -> vime-dev; SGLANG_ARGS -> VLLM_ARGS (+ --vllm-gpu-memory-utilization / --vllm-attention-backend / --vllm-enable-deterministic-inference). --train-backend megatron is vime's only choice + default (redundant); VIME_ROOT is unneeded (run-qwen3-30B-A3B.sh and slime both omit it). Kept one fix vs slime: source "${SCRIPT_DIR}/models/..." (slime's "${SCRIPT_DIR}/scripts/models/..." doesn't resolve in this layout). fully_async/README.md: was a full vime-invented rewrite (even its "Creating new global async worker..." log lines don't match the code). Restore slime's README structure/prose, translated, pointing at vime's actual run-qwen3-4b-fully_async.sh and examples/coding_agent_rl, with args.sglang_server_concurrency -> args.vllm_server_concurrency. The "You should see" lines now match what vime/rollout/fully_async_rollout.py actually logs. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * scripts(repro): use command_utils pkill pattern for renamed vLLM children pkill -9 -f 'vllm serve' only catches the parent; vLLM renames its subprocesses (VLLM::EngineCore / Worker_TP*). Match the renamed children too, mirroring vime/utils/external_utils/command_utils.py. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Update README.md Signed-off-by: aoshen02 <aoshen@inferact.ai> --------- Signed-off-by: aoshen02 <aoshen@inferact.ai> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…low-up) (#201) * docs: trim vime-invented sections to mirror slime's brevity (#107 follow-up) Split out of #199 (docs-only). Trim the doc-site pages that had grown vime-invented sections well beyond slime's, keeping only genuine vLLM engine differences. No code or example/script changes. - developer_guide/profiling.md (en+zh): drop the long invented flow/verify/ troubleshooting + ~150-line runnable script; keep slime's sleep/engine-list/ tooling/stress sections plus one compact "Enabling the vLLM Profiler" note (vLLM only registers /start_profile with --vllm-profiler-config; a real engine difference vs sglang). - examples/qwen3-30B-A3B.md (en+zh): drop the invented multinode topology/Ray/ smoke-test/param tables; restore slime's 3-bullet form + the redundant-expert example (--sglang-ep-num-redundant-experts -> --vllm-eplb-config). - examples/qwen3-4B.md (en+zh): drop invented IPC/Ray/decoupled blocks; restore slime's dp_size note + concurrency/cudagraph block (--sglang-* -> --vllm-*). - developer_guide/debug.md (en+zh): replace the (vime-expanded) Ray Distributed Debugger section with a one-line pointer to verl's Ray Debugging Tutorial. docs/{en,zh}/advanced/speculative-decoding.md intentionally left unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs: narrow #201 to cruft-removal only (restore over-trimmed docs) Earlier this PR trimmed four docs hard toward slime's brevity, which dropped correct, useful vime content. Walk that back to remove only what's wrong / redundant / unnecessary: - profiling.md (en+zh): keep the full vLLM-profiler workflow (sleep_rollout, --vllm-profiler-config, router/worker discovery, tools/profile_rollout.py, trace viewing, troubleshooting, the VLLM_RPC_TIMEOUT gotcha). Remove only: the fabricated `--rollout-backend vllm` flag (no such vime arg), the VIME_ROOT scope-creep on PYTHONPATH (-> /root/Megatron-LM), and the redundant 150-line embedded run_profiling_demo.sh (restates the steps above, hardcodes /root/*). - examples/qwen3-30B-A3B.md, examples/qwen3-4B.md (en+zh): restored to main -- the multinode (topology/Ray/smoke/params/troubleshooting), EPLB, and vLLM-args/decoupled/--train-memory-margin-bytes content is correct and useful, not fabricated. - developer_guide/debug.md (en+zh): restored to main, which already carries the Ray Distributed Debugger tutorial equivalent to slime #2001 (no slime/sglang tokens to translate). Dropped the interim verl one-liner. Net effect of this PR vs main: profiling.md cruft removal only. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs(profiling): fix only the broken bits, keep the rest Per review: keep profiling.md as-is and fix only what's actually wrong: - drop the fabricated `--rollout-backend vllm` flag (vime has no such arg; it would make the train.py example fail). - use the robust engine-kill pattern `pkill -9 -f '[v]llm serve|VLL[M]::'` (matches vime/utils/external_utils/command_utils.py; also catches the renamed VLLM::EngineCore / Worker_TP* children). All other content (workflow, the runnable example, PYTHONPATH, etc.) is left untouched. The other docs restored earlier in this PR stay at main. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs(profiling): also drop repo-root from PYTHONPATH Per review, the PYTHONPATH scope-creep is also worth fixing: vime is importable without the repo root on PYTHONPATH (slime and vime's run-qwen3-30B-A3B.sh both use just /root/Megatron-LM). Drop it from both the §2.1 example (/root/vime:/root/Megatron-LM) and the §8 script (${VIME_ROOT}:/root/Megatron-LM). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Split out of #196 (part 2 of 2). The low-risk half: mechanical translation + trimming vime-invented prose back to slime's brevity. No runtime-behavior changes.
What
tests/**,vime/ray/rollout.py,vime/rollout/_fanout_test_helpers.py,vime/utils/dp_schedule.py,scripts/run-minimax-m2.sh,.github/workflows/pr-test.yml): finishslime→vime/sglang→vllm/SLIME_TEST_*→VIME_TEST_*left over from RFC: Sync upstream slime PRs into vime (tracking) #107.docs/{en,zh}/developer_guide/profiling.md,examples/qwen3-30B-A3B.md,examples/qwen3-4B.md): trim vime-invented sections to mirror slime; keep only genuine vLLM engine differences (profiler needs--vllm-profiler-config, EPLB config, cudagraph-capture-sizes).docs/{en,zh}/developer_guide/debug.md: replace the (vime-expanded) Ray Distributed Debugger section with a one-line pointer to verl's Ray Debugging Tutorial.examples/{fully_async,geo3k_vlm,geo3k_vlm_multi_turn},scripts/run-qwen2.5-0.5B-reproducibility.sh,vime/utils/external_utils/command_utils.py): drop vime-invented comments. Kept the vLLM-0.22.0--vllm-enforce-eagernote (Qwen3-VL logprob parity, vllm#43617) — a real engine requirement.Intentionally unchanged
docs/{en,zh}/advanced/speculative-decoding.mdleft as-is.Why split
Sibling of #198 (the parsing/tokenizer code translation). This PR is pure cleanup and safe to merge independently.
🤖 Generated with Claude Code