Skip to content

docs+examples: credit slime and fix examples README consistency - #180

Merged
CalvinXKY merged 6 commits into
mainfrom
content-trim
Jun 8, 2026
Merged

docs+examples: credit slime and fix examples README consistency#180
CalvinXKY merged 6 commits into
mainfrom
content-trim

Conversation

@aoshen02

@aoshen02 aoshen02 commented Jun 8, 2026

Copy link
Copy Markdown
Collaborator

What

A content-trim pass over docs/ and examples/, verified against upstream slime (8a5397e).

1. Attribution — docs claimed slime's work as vime's own

The Sphinx docs contradicted the top-level README.md (which correctly says vime is "built on slime"):

  • index.rst (en+zh) stated "vime is the RL-framework behind GLM-4.7, GLM-4.6 and GLM-4.5." slime trained those releases; vime is a fork built on slime. Reworded to credit slime, mirroring the README.
  • advanced/arch-support-beyond-megatron.md (en+zh) said vime "introduces" the import-and-wrap-HF-into-Megatron approach. That design is slime's (the file is otherwise a verbatim rebrand). Changed "introduces" -> "inherits slime's" (zh "提出了" -> "沿用了 slime 提出的").
  • zh colon consistency nit (full-width) from review.

2. examples/ README drift + incomplete example

  • Removed dead links eval_multi_task (no such dir) and reproducibility (it's a docs page, not an example) from examples/README.md.
  • Added coding_agent_rl (complete example, was on disk but unlisted).
  • Removed examples/retool/ -- an incomplete stub (only generate_with_retool.py + tool_sandbox.py, no README/run scripts; unreferenced anywhere, grep-verified).
  • Fixed a broken self-link in examples/geo3k_vlm/README.md (geo_3k_vlm typo).

3. Dead reference to a missing example

examples/DrGRPO/custom_reducer.py never existed. Removed the dead pointer from customization.md (en+zh) and from the --custom-pg-loss-reducer-function-path help string in vime/utils/arguments.py (which also had a mismatched Dr.GRPO spelling). The feature is unchanged; conceptual "Dr.GRPO" mentions with the paper link are kept.

Scope

Docs/examples plus one help-string text edit in arguments.py -- no behavior change.

The Sphinx docs claimed slime's work as vime's own, contradicting the
top-level README (which correctly states vime is "built on slime"):

- index.rst (en+zh) stated "vime is the RL-framework behind GLM-4.7/4.6/4.5".
  slime trained those releases; vime is a fork built on slime. Reworded to
  credit slime, mirroring the README's attribution.
- arch-support-beyond-megatron.md (en+zh) said vime "introduces" the
  import-and-wrap-HF-into-Megatron approach. That design is slime's (the
  file is otherwise a verbatim rebrand of slime's doc). Changed to credit
  slime.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the English and Chinese documentation to clarify that the vime framework is built on top of slime. It specifies that vime inherits slime's training stack, data-generation design, and model support, while utilizing vLLM as its default rollout backend. There are no review comments, so I have no feedback to provide.

aoshen02 and others added 2 commits June 8, 2026 04:14
Codex review nit: docs/zh/index.rst ended the intro line with an ASCII
colon while the rest of the file uses full-width :. Align it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The examples/README directory listing had drifted from the actual
contents:

- Removed dead links to `eval_multi_task` and `reproducibility` — neither
  directory exists under examples/ (reproducibility is a docs/ page, not
  an example).
- Added the existing `coding_agent_rl` example, which was present on disk
  but unlisted.
- Removed `examples/retool/`: it was an incomplete stub (only
  generate_with_retool.py + tool_sandbox.py, no README and no run
  scripts), unreferenced anywhere else in the repo, and was likewise
  unlisted in the README.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@aoshen02 aoshen02 changed the title docs: credit slime for GLM provenance and HF-wrap design docs+examples: credit slime and fix examples README consistency Jun 8, 2026
aoshen02 and others added 3 commits June 8, 2026 04:30
The SFT command linked ./examples/geo_3k_vlm/run_geo3k_vlm_sft.sh
(typo "geo_3k_vlm"); the actual script is under examples/geo3k_vlm/.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
`examples/DrGRPO/custom_reducer.py` does not exist (the example was
never present). Remove the dead pointer from customization.md (en+zh)
and from the --custom-pg-loss-reducer-function-path help string in
arguments.py (which also had a mismatched spelling, "Dr.GRPO"). The
feature is unchanged; only the broken example reference is removed.
The conceptual "Dr.GRPO" mentions (with the paper link) are kept.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
reproducibility.md (en+zh) instructed `bash script/run-qwen2.5-0.5B-
reproducibility.sh`, but vime had dropped that run script during the
run-*.sh trim, leaving the determinism recipe with a dead final step.

Port slime's run-qwen2.5-0.5B-reproducibility.sh onto vime's run-script
conventions:
- SGLANG_ARGS -> VLLM_ARGS; --sglang-mem-fraction-static 0.7 ->
  --vllm-gpu-memory-utilization 0.7; --sglang-* -> --vllm-* for the
  deterministic-inference and attention-backend flags.
- Adopt vime boilerplate (NVLINK/NUM_GPUS detection, VIME_ROOT,
  MASTER_ADDR ray launch, --train-backend megatron), matching
  run-qwen3-4B.sh.
- Preserve the determinism env vars (NCCL_ALGO=Ring,
  NVTE_ALLOW_NONDETERMINISTIC_ALGO=0, CUBLAS_WORKSPACE_CONFIG=:4096:8)
  and --deterministic-mode / --calculate-per-token-loss.

Also fix the doc path typo `script/` -> `scripts/` in both languages.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@CalvinXKY
CalvinXKY merged commit 6335492 into main Jun 8, 2026
11 of 14 checks passed
@aoshen02
aoshen02 deleted the content-trim branch June 8, 2026 14:17
aoshen02 added a commit that referenced this pull request Jun 9, 2026
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>
CalvinXKY pushed a commit that referenced this pull request Jun 9, 2026
…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>
CalvinXKY pushed a commit that referenced this pull request Jun 9, 2026
…istic inference (#202)

* fix(vllm_engine): actually export VLLM_BATCH_INVARIANT=1 for deterministic inference

--vllm-enable-deterministic-inference's help text promises it "exports
VLLM_BATCH_INVARIANT=1 to the vLLM subprocess so attention / comm / MM kernels
pick batch-invariant variants", but no code did so -- the flag only forwarded a
per-sample seed, and (being an orchestration-only dest) is never passed to
`vllm serve`. The only thing that ever set the env was a line in
run-qwen2.5-0.5B-reproducibility.sh's runtime-env, which #180 dropped when it
re-created the script, leaving nothing to set it.

Set VLLM_BATCH_INVARIANT=1 in build_vllm_subprocess_env when the flag is on, so
the flag delivers on its documented behavior and seed+kernel determinism both
hold without depending on the launch script. Adds two unit tests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* rollout: drop dead VIME_ENABLE_PROFILING env (no reader in vime)

slime sets SLIME_ENABLE_PROFILING here and reads it via its sglang *source
patch* (docker/patch/*/sglang.patch: envs.SLIME_ENABLE_PROFILING.get()), which
gates prefill/decode timing instrumentation in sglang's scheduler. vime runs
vLLM and does not patch that instrumentation in, and nothing in the tree reads
VIME_ENABLE_PROFILING -- it was a mechanical slime->vime rename of a flag whose
backing reader never came along, so setting it did nothing. Remove it (and the
now-unused `import os`); vime profiling is driven by --vllm-profiler-config.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Update vllm_engine.py

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>
momo609 pushed a commit that referenced this pull request Jun 10, 2026
…180)

* docs: credit slime for GLM provenance and HF-wrap design

The Sphinx docs claimed slime's work as vime's own, contradicting the
top-level README (which correctly states vime is "built on slime"):

- index.rst (en+zh) stated "vime is the RL-framework behind GLM-4.7/4.6/4.5".
  slime trained those releases; vime is a fork built on slime. Reworded to
  credit slime, mirroring the README's attribution.
- arch-support-beyond-megatron.md (en+zh) said vime "introduces" the
  import-and-wrap-HF-into-Megatron approach. That design is slime's (the
  file is otherwise a verbatim rebrand of slime's doc). Changed to credit
  slime.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs(zh): use full-width colon for consistency

Codex review nit: docs/zh/index.rst ended the intro line with an ASCII
colon while the rest of the file uses full-width :. Align it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* examples: fix README drift and remove incomplete retool example

The examples/README directory listing had drifted from the actual
contents:

- Removed dead links to `eval_multi_task` and `reproducibility` — neither
  directory exists under examples/ (reproducibility is a docs/ page, not
  an example).
- Added the existing `coding_agent_rl` example, which was present on disk
  but unlisted.
- Removed `examples/retool/`: it was an incomplete stub (only
  generate_with_retool.py + tool_sandbox.py, no README and no run
  scripts), unreferenced anywhere else in the repo, and was likewise
  unlisted in the README.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* examples: fix broken self-link in geo3k_vlm README

The SFT command linked ./examples/geo_3k_vlm/run_geo3k_vlm_sft.sh
(typo "geo_3k_vlm"); the actual script is under examples/geo3k_vlm/.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs/args: drop dead reference to missing DrGRPO example

`examples/DrGRPO/custom_reducer.py` does not exist (the example was
never present). Remove the dead pointer from customization.md (en+zh)
and from the --custom-pg-loss-reducer-function-path help string in
arguments.py (which also had a mismatched spelling, "Dr.GRPO"). The
feature is unchanged; only the broken example reference is removed.
The conceptual "Dr.GRPO" mentions (with the paper link) are kept.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* scripts: port qwen2.5-0.5B reproducibility run script from slime

reproducibility.md (en+zh) instructed `bash script/run-qwen2.5-0.5B-
reproducibility.sh`, but vime had dropped that run script during the
run-*.sh trim, leaving the determinism recipe with a dead final step.

Port slime's run-qwen2.5-0.5B-reproducibility.sh onto vime's run-script
conventions:
- SGLANG_ARGS -> VLLM_ARGS; --sglang-mem-fraction-static 0.7 ->
  --vllm-gpu-memory-utilization 0.7; --sglang-* -> --vllm-* for the
  deterministic-inference and attention-backend flags.
- Adopt vime boilerplate (NVLINK/NUM_GPUS detection, VIME_ROOT,
  MASTER_ADDR ray launch, --train-backend megatron), matching
  run-qwen3-4B.sh.
- Preserve the determinism env vars (NCCL_ALGO=Ring,
  NVTE_ALLOW_NONDETERMINISTIC_ALGO=0, CUBLAS_WORKSPACE_CONFIG=:4096:8)
  and --deterministic-mode / --calculate-per-token-loss.

Also fix the doc path typo `script/` -> `scripts/` in both languages.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
momo609 pushed a commit that referenced this pull request Jun 10, 2026
…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>
momo609 pushed a commit that referenced this pull request Jun 10, 2026
…istic inference (#202)

* fix(vllm_engine): actually export VLLM_BATCH_INVARIANT=1 for deterministic inference

--vllm-enable-deterministic-inference's help text promises it "exports
VLLM_BATCH_INVARIANT=1 to the vLLM subprocess so attention / comm / MM kernels
pick batch-invariant variants", but no code did so -- the flag only forwarded a
per-sample seed, and (being an orchestration-only dest) is never passed to
`vllm serve`. The only thing that ever set the env was a line in
run-qwen2.5-0.5B-reproducibility.sh's runtime-env, which #180 dropped when it
re-created the script, leaving nothing to set it.

Set VLLM_BATCH_INVARIANT=1 in build_vllm_subprocess_env when the flag is on, so
the flag delivers on its documented behavior and seed+kernel determinism both
hold without depending on the launch script. Adds two unit tests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* rollout: drop dead VIME_ENABLE_PROFILING env (no reader in vime)

slime sets SLIME_ENABLE_PROFILING here and reads it via its sglang *source
patch* (docker/patch/*/sglang.patch: envs.SLIME_ENABLE_PROFILING.get()), which
gates prefill/decode timing instrumentation in sglang's scheduler. vime runs
vLLM and does not patch that instrumentation in, and nothing in the tree reads
VIME_ENABLE_PROFILING -- it was a mechanical slime->vime rename of a flag whose
backing reader never came along, so setting it did nothing. Remove it (and the
now-unused `import os`); vime profiling is driven by --vllm-profiler-config.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Update vllm_engine.py

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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants