[Sync] Support request-scoped streaming aborts - #410
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces a request-level abort mechanism for vLLM streaming rollouts, allowing individual active HTTP streams to be cancelled instead of aborting all in-flight requests on the server. It also adds a check to raise a RuntimeError if a streaming response ends without a terminal finish reason, along with corresponding unit tests. The review feedback highlights two critical issues where AttributeErrors could be raised when using custom generators that return lists of samples: first, in _run_request_abortable_generate when setting the abort status, and second, in the abort function when processing and updating metadata on nested sample groups. Both issues can be resolved by explicitly checking for and handling list types.
| async def _run_request_abortable_generate( | ||
| state: GenerateState, | ||
| sample: Sample, | ||
| generate_call: Awaitable[Sample | list[Sample]], | ||
| ) -> Sample | list[Sample]: | ||
| task = asyncio.current_task() | ||
| assert task is not None | ||
| state.cancellable_tasks.add(task) | ||
| try: | ||
| return await generate_call | ||
| except asyncio.CancelledError: | ||
| if task in state.cancellable_tasks: | ||
| raise | ||
| sample.status = Sample.Status.ABORTED | ||
| return sample | ||
| finally: | ||
| state.cancellable_tasks.discard(task) |
There was a problem hiding this comment.
In _run_request_abortable_generate, the sample parameter can be either a single Sample or a list[Sample] (e.g., when using custom generators that return multiple samples, such as multi-turn agent rollouts). If sample is a list, attempting to set sample.status = Sample.Status.ABORTED will raise an AttributeError. We should check if sample is a list and update the status of each sample accordingly.
async def _run_request_abortable_generate(
state: GenerateState,
sample: Sample | list[Sample],
generate_call: Awaitable[Sample | list[Sample]],
) -> Sample | list[Sample]:
task = asyncio.current_task()
assert task is not None
state.cancellable_tasks.add(task)
try:
return await generate_call
except asyncio.CancelledError:
if task in state.cancellable_tasks:
raise
if isinstance(sample, list):
for s in sample:
s.status = Sample.Status.ABORTED
else:
sample.status = Sample.Status.ABORTED
return sample
finally:
state.cancellable_tasks.discard(task)| group = task.result() | ||
| if not any(sample.status == Sample.Status.ABORTED and sample.response_length > 0 for sample in group): | ||
| continue | ||
| for sample in group: | ||
| if sample.response and "start_rollout_id" not in sample.metadata: | ||
| sample.metadata["start_rollout_id"] = rollout_id |
There was a problem hiding this comment.
In the abort function, group is obtained from task.result(), which can be a list[Sample | list[Sample]] when custom generators return multiple samples. If any item in group is a list, accessing sample.status, sample.response_length, sample.response, or sample.metadata directly will raise an AttributeError. We should flatten the group first to safely perform these checks and metadata updates.
group = task.result()
flat_group = []
for item in group:
if isinstance(item, list):
flat_group.extend(item)
else:
flat_group.append(item)
if not any(sample.status == Sample.Status.ABORTED and sample.response_length > 0 for sample in flat_group):
continue
for sample in flat_group:
if sample.response and \"start_rollout_id\" not in sample.metadata:
sample.metadata[\"start_rollout_id\"] = rollout_idSigned-off-by: aoshen02 <aoshen@inferact.ai>
1d41877 to
855a056
Compare
Signed-off-by: aoshen02 <aoshen@inferact.ai>
836d8a5 to
c8e20f7
Compare
Signed-off-by: aoshen02 <aoshen@inferact.ai>
7c839dd to
cf4de1f
Compare
Signed-off-by: aoshen02 <aoshen@inferact.ai>
Signed-off-by: aoshen02 <aoshen@inferact.ai>
|
Added the Vime translation of Slime #2334 release tooling in c852b3d.
Validated with the positive release check, a negative COPY-without-apply fixture, |
3fb501f to
15b611f
Compare
Signed-off-by: aoshen02 <aoshen@inferact.ai>
15b611f to
c852b3d
Compare
Signed-off-by: aoshen02 <aoshen@inferact.ai>
PR-by-PR omission re-auditScope: Slime Root cause: sync-ledger explicitly excluded #2334 release tooling together with build_conda and versioned SGLang patches. This was an overbroad exclusion, not a lost Git merge. The candidate now carries the two release-tool files; this follow-up restores the upstream date-format check. Existing feature-gap ledger items remain open and are not declared implemented by this audit. Method: enumerate every PR and changed path including renames/deletions; compare final translated upstream content with candidate; check missing additions against subsequent upstream edits and signed Vime overlays; verify deleted paths and Buildkite test registration. Literal differences alone are not omissions. Slime #2286SGLang older-version alias and router compatibility only; Vime retains its pinned vLLM API. No old-SGLang fallback copied. Upstream commit: Slime #2216Backend-neutral accelerator modules and call-site changes are present; environment names are translated. SGLang transport internals, NPU image patches and GitHub workflows retain platform-specific dispositions; CPU accelerator coverage is registered in Buildkite. Upstream commit: Slime #2294ring_flash_attn dependency removed; layer comparator moved into tests. Historical Vime alignment-test differences retained. Upstream commit: Slime #2296Eval-only optimizer/scheduler construction changes present in checkpoint/model code. Upstream commit: Slime #2114Raw PPO KL preservation, loss call sites and test_ppo_kl_metric.py present; test registered in Buildkite. Upstream commit: Slime #2085Teacher rollout temperature applied through the vLLM teacher-scoring contract. Upstream commit: Slime #2297Non-positive rollout-temperature validation and test present. Upstream commit: Slime #2298Observability moves, new rollout/train helpers and import rewrites present. Final profile_utils.py matches translated Slime; intermediate additions removed by later upstream commits are not omissions. vLLM metric field mappings retain documented engine gaps. Upstream commit: Slime #2312Stale delta+NCCL recommendation removed in both external-engine documents. Upstream commit: Slime #2316Obsolete Megatron memory patch and package removed; corresponding test updated. Upstream commit: Slime #2317Test cleanup and additions mapped to Buildkite CPU/utils/agent suites. No removed upstream test paths remain. Upstream commit: Slime #2318fanout_test_helpers moved to tests; runtime import/counter environment translated. Upstream commit: Slime #2320Dead branches and iterator base removed. Vime-specific IPC/NCCL and DSpark adapters preserved; no removed paths remain. Upstream commit: Slime #2321create_weight_updater extraction and test_update_weight_factory.py present; test registered in Buildkite. Upstream commit: Slime #2322rollout_validation module/tests removed; placement validation owned by engine_group after #2323. Upstream commit: Slime #2323deployment/disaggregation/engine_group split present. Router ports, vLLM worker lifecycle and PD wiring use existing Vime equivalents. Upstream commit: Slime #2326README reading paths updated. Existing Vime CONTRIBUTING ownership retained rather than importing Slime/Z.ai claims. Upstream commit: Slime #2327UE8M0 force flag, quantizer and converter changes present. Upstream commit: Slime #2330Documentation path/anchor/example fixes and test_docs_consistency.py present. Search-R1 remains excluded by user instruction; Buildkite docs and Docker README retain Vime policy. Upstream commit: Slime #2334Confirmed erroneous exclusion: release skill/checker omitted alongside engine-specific files. Both are now restored in #410. Restore upstream date-tag format validation as well. build_conda/NPU/versioned SGLang patches remain intentionally excluded; package/docs are already 0.3.2. Upstream commit: Slime #2272Request-scoped streaming cancellation and partial-sample behavior translated into existing vLLM rollout files/tests. SGLang cumulative-stream accumulator is protocol-specific and not copied. Upstream commit: Slime #2340Router-to-worker cancellation represented by closing the selected vLLM router request; existing #410 behavior evidence retained. Upstream commit: |
Signed-off-by: aoshen02 <aoshen@inferact.ai>
Slime 最近 100 PR 扩展漏项审计(2026-09-08)范围:Slime 方法:并行按训练/utils/plugins、agent/examples/docs、Docker/CI、rollout/engine 分域审计,检查历史变更在当前 tip 是否存活,后续删除是否已镜像,并对签名的引擎翻译/自有覆盖单独判定。路径清单是覆盖索引,不等于每个功能都做了 GPU E2E。 本轮发现的确定遗漏见下表‘补齐’项;测试与最终提交记录见 PR #410 更新。G4/G6/G7/G8 与 G5 剩余阶段指标仍在 feature-gap ledger,未在本轮冒充闭合。保留既有自有覆盖,不恢复用户排除的 retool/search-r1、build_conda、旧 SGLang/NPU patch 或改 Docker README。
|
Signed-off-by: aoshen02 <aoshen@inferact.ai>
Latest-200 audit inventory — catch-up
|
| # | PR / direct commit | Title | Historical changed paths | Evidence routes |
|---|---|---|---|---|
| 1 | #1916 (2091f7af) |
[docker] update torch memory saver (#1916) | 1 | docker-ci-scripts |
| 2 | #1919 (b8f59d2a) |
add critic wandb config (#1919) | 2 | training-utils |
| 3 | #1920 (f0bce74a) |
Move fully_async example to main codebase (#1920) | 9 | docker-ci-scripts; examples-agent; engine-weights; training-utils |
| 4 | #1921 (35e8767f) |
Add example for streaming output (#1921) | 4 | docker-ci-scripts; engine-weights; main-owner findings; training-utils |
| 5 | #1924 (1c810731) |
Reduce host memory with upgraded tms (#1924) | 6 | docker-ci-scripts; training-utils; engine-weights |
| 6 | #1926 (2f4bd0d8) |
Move micro-batch scheduling from training side to rollout side (#1926) | 12 | docker-ci-scripts; examples-agent; training-utils; engine-weights; main-owner findings |
| 7 | #1932 (d8841781) |
save host menmroy (#1932) | 1 | training-utils |
| 8 | #1930 (6961f597) |
Support training with variable global batch size (#1930) | 7 | training-utils; engine-weights; main-owner findings |
| 9 | #1938 (79989380) |
fix: guard sglang_speculative_algorithm read in --debug-train-only mode (#1938) | 1 | engine-weights; main-owner findings |
| 10 | #1933 (7405851f) |
[2/N] Support training with variable global batch size (#1933) | 18 | docker-ci-scripts; examples-agent; training-utils; engine-weights; main-owner findings |
| 11 | #1939 (ae818a37) |
add more cpu ci (#1939) | 9 | docker-ci-scripts; training-utils |
| 12 | #1940 (e51aaaba) |
run cpu test on main branch (#1940) | 2 | docker-ci-scripts |
| 13 | #1934 (e7134570) |
Add GPU placement validation before starting rollout engines (#1934) | 3 | engine-weights; main-owner findings; training-utils |
| 14 | #1941 (3b19068a) |
Add multi-sample test (#1941) | 5 | docker-ci-scripts; engine-weights; training-utils |
| 15 | #1942 (fda7075c) |
update docs (#1942) | 8 | examples-agent |
| 16 | #1943 (f3309c15) |
remove redundant file (#1943) | 2 | training-utils |
| 17 | #1944 (99229174) |
register validate_server_group_gpu_indices to ci (#1944) | 3 | docker-ci-scripts; training-utils |
| 18 | #1806 (987b3149) |
feat: delta weight sync (disk + nccl transports) (#1806) | 17 | docker-ci-scripts; engine-weights; examples-agent; training-utils |
| 19 | #1946 (38eb3626) |
Add backward compatibility to delta weight updation (#1946) | 3 | training-utils; engine-weights |
| 20 | #1945 (56740126) |
[docker] upgrade to sglang v0.5.12.post1 (#1945) | 8 | docker-ci-scripts; engine-weights; training-utils |
| 21 | #1949 (875ab40d) |
[docker] fix sglang pd prefill abort request (#1949) | 2 | docker-ci-scripts; engine-weights |
| 22 | #1923 (b6764131) |
[examples] add coding_agent_rl: agent-in-sandbox RL minimal demo (#1923) | 6 | examples-agent; docker-ci-scripts |
| 23 | #1956 (d84dad7b) |
Add slime/agent/ and move sandbox impl inside (#1956) | 6 | examples-agent; docker-ci-scripts |
| 24 | #1957 (e2391132) |
Minor refactor for coding agent rl logic and remove SWE_LIST_TRAJECTORY (#1957) | 3 | examples-agent; docker-ci-scripts |
| 25 | #1958 (223ef1f6) |
Move coding_agent_rl's helper function to sandbox.py (#1958) | 2 | examples-agent |
| 26 | #1952 (d3490718) |
disable param backup (#1952) | 4 | docker-ci-scripts; training-utils; engine-weights |
| 27 | #1953 (b5625a6e) |
[sglang_utils] flush_cache: log non-200 responses and back off before… (#1953) | 1 | engine-weights |
| 28 | #1960 (ad3b8744) |
Extract more util code from coding_agent_rl example (#1960) | 6 | examples-agent; docker-ci-scripts |
| 29 | #1961 (5007e32f) |
[docs] Add docs for agent rl (#1961) | 6 | examples-agent |
| 30 | #1959 (7ee0c14e) |
rollout: add forge_load to replay dumped rollouts with sglang alive (#1959) | 2 | engine-weights; training-utils |
| 31 | #1954 (82101244) |
[coding_agent_rl] middleware: shutdown_session drains in-flight handl… (#1954) | 2 | examples-agent |
| 32 | #1962 (39a77193) |
lint (#1962) | 1 | engine-weights |
| 33 | #1963 (afc323fb) |
Fix trajectory merging logic (#1963) | 9 | examples-agent; docker-ci-scripts; training-utils |
| 34 | #1965 (09c70450) |
Don't use sample.index as default rollout_id (#1965) | 1 | engine-weights; main-owner findings |
| 35 | #1947 (b5994e68) |
feat: add FlashQLA backend for Qwen GDN and skip selected comm memory checks (#1947) | 11 | docker-ci-scripts; examples-agent; training-utils |
| 36 | #1968 (a5770f84) |
[ci] add check for train_rollout_logprob_abs_diff (#1968) | 1 | training-utils |
| 37 | #1969 (def718c7) |
support --save-hf for raw mode (#1969) | 10 | docker-ci-scripts; training-utils; engine-weights |
| 38 | #1972 (aeb0a29e) |
[docker] fix mooncake offload in sglang v0.5.12 (#1972) | 2 | docker-ci-scripts; engine-weights |
| 39 | #1973 (4bb3136d) |
[docker] fix patch (#1973) | 1 | docker-ci-scripts; engine-weights |
| 40 | #1974 (c01b647a) |
[docs] Add finer explanation for re-tokenizationi issue (#1974) | 1 | examples-agent |
| 41 | #1977 (dbfcda96) |
[docker] fix GLM4.7 flash for sglang v0.5.12 (#1977) | 1 | docker-ci-scripts; engine-weights |
| 42 | #1978 (3c5d2033) |
[docker] Fix qwen3 30B + deepep with sglang 0.5.12 (#1978) | 1 | docker-ci-scripts; engine-weights |
| 43 | #1979 (acac6616) |
[agent] Add openai and anthropic adapters (#1979) | 16 | docker-ci-scripts; examples-agent; training-utils |
| 44 | #1980 (55d3e416) |
[Fix] Fix FLOPs accounting for non-MLA attention (#1980) | 1 | training-utils |
| 45 | #1981 (41c94f4b) |
[agent] extract Adapter class (#1981) | 10 | examples-agent; training-utils |
| 46 | #1982 (cc50ea51) |
[agent] Fix dropping overlong sample (#1982) | 5 | examples-agent; training-utils |
| 47 | #1983 (963a3526) |
[docker] fix GLM4.7 Flash in sglang v0.5.12 (#1983) | 2 | docker-ci-scripts; engine-weights |
| 48 | #1984 (a3c5462a) |
rename rollout_ids to group_ids (#1984) | 20 | examples-agent; training-utils; engine-weights; main-owner findings |
| 49 | #1985 (ac3c6d6c) |
[test] make tests shorter (#1985) | 29 | docker-ci-scripts; training-utils |
| 50 | #1986 (07782178) |
[docs] optimize readme (#1986) | 18 | examples-agent; training-utils |
| 51 | #1987 (988ac776) |
[ci] don't compare ref_logprob and logprob when R3 is on (#1987) | 1 | training-utils |
| 52 | #1988 (106ec33f) |
[docs] optimize docs (#1988) | 11 | examples-agent |
| 53 | #1989 (0975e42c) |
[docs] fix doc (#1989) | 2 | examples-agent root-doc addendum |
| 54 | #1990 (e40b8231) |
[ci] fix kl check on R3 (#1990) | 2 | training-utils |
| 55 | #1967 (05370bf9) |
Fix PYTHONBUFFERED typo to PYTHONUNBUFFERED=1 (#1967) | 48 | docker-ci-scripts; examples-agent; training-utils |
| 56 | #1991 (b4bff4ab) |
[ci] Add e2e test for delta weight update (#1991) | 5 | docker-ci-scripts; training-utils; engine-weights |
| 57 | #1950 (5f258746) |
fix: drop incorrect critic GPU add to rollout_num_gpus in colocate mode (#1950) | 1 | training-utils |
| 58 | #1929 (53cb7393) |
Feat/minimax m2.5 support (#1929) | 9 | docker-ci-scripts; training-utils |
| 59 | #1928 (d9d149dc) |
fix: avoid applying rollout temperature to critic values (#1928) | 2 | training-utils |
| 60 | #1992 (d527ba8b) |
cleanup (#1992) | 4 | docker-ci-scripts |
| 61 | #1993 (7a7aba4e) |
Patch sglang 0.5.12.post1 for delta sync (#1993) | 1 | docker-ci-scripts; engine-weights |
| 62 | #1975 (bf14dc21) |
[release] bump to v0.3.0 (#1975) | 10 | docker-ci-scripts; engine-weights; training-utils |
| 63 | #2001 (d3912f4e) |
[docs] Add step-by-step debug tutorial (#2001) | 2 | examples-agent |
| 64 | #1995 (d719f036) |
fix(multi-agent): preserve rollout logprobs (#1995) | 2 | examples-agent; docker-ci-scripts |
| 65 | #2013 (44d29ee5) |
Revert "rename rollout_ids to group_ids" (#2013) | 20 | examples-agent; training-utils; engine-weights; main-owner findings |
| 66 | #2016 (e1b9c90b) |
Fully support --rollout-external-engine-addrs (#2016) | 19 | examples-agent; docker-ci-scripts; training-utils; engine-weights; main-owner findings |
| 67 | #2020 (89fad404) |
Accelerate raw HF save with node writers (#2020) | 2 | training-utils |
| 68 | #2021 (a096428f) |
Support update_from_disk (#2021) | 18 | examples-agent; docker-ci-scripts; training-utils; engine-weights |
| 69 | #2022 (9c0751f1) |
Add docs for external servers (#2022) | 12 | examples-agent |
| 70 | #2017 (71c2679b) |
feat: add --balance-by-flops for FLOPs-balanced micro-batching (#2017) | 3 | training-utils |
| 71 | #2028 (1cfc60e4) |
remove abundant function (#2028) | 1 | training-utils |
| 72 | #2029 (8a5397e2) |
use balance_by_flops as balance data across mbs (#2029) | 3 | training-utils |
| 73 | #2030 (a73a1496) |
[examples]: add qwen3.5-9b model config and fully_async example (#2030) | 3 | examples-agent; docker-ci-scripts |
| 74 | #2024 (1de8347e) |
Log progress while waiting for placement group (#2024) | 1 | engine-weights |
| 75 | #2031 (2bfa5693) |
Allow only set rollout_id for prompt that return multiple responses (#2031) | 1 | engine-weights; main-owner findings |
| 76 | #2027 (10a8b108) |
Only upload per sample stats to wandb (#2027) | 15 | docker-ci-scripts; engine-weights; examples-agent; main-owner findings; training-utils |
| 77 | #2034 (564fd9c2) |
[docs] Add AgentCore RL Toolkit to ecosystem list (#2034) | 2 | examples-agent root-doc addendum |
| 78 | #2035 (8fc32230) |
Don't upload 'count' to wandb (#2035) | 1 | engine-weights; main-owner findings |
| 79 | #2041 (09e59f63) |
[docker] always re-register mooncake addr during offloading (#2041) | 2 | docker-ci-scripts; engine-weights |
| 80 | #2042 (c4a53fa3) |
[docker] update sgl-router (#2042) | 1 | docker-ci-scripts |
| 81 | #2046 (1dbad75c) |
Revert "[docker] always re-register mooncake addr during offloading" (#2046) | 2 | docker-ci-scripts; engine-weights |
| 82 | #2045 (74dd6551) |
docs: add vime to the ecosystem section in README (#2045) | 2 | examples-agent root-doc addendum |
| 83 | #2044 (1c4517cc) |
support rich image config for vlm (#2044) | 1 | training-utils |
| 84 | #2047 (39c50151) |
[docs] add Miles to slime ecosystem (#2047) | 1 | examples-agent root-doc addendum |
| 85 | #2050 (06aec613) |
Set RAY_USE_UVLOOP=0 for Ray actors (#2050) | 7 | engine-weights; training-utils; main-owner findings |
| 86 | #2055 (d4aa9c0d) |
[ci] clean up ci (#2055) | 6 | docker-ci-scripts; examples-agent; training-utils |
| 87 | #2056 (ee72ab5a) |
Use /v1/loads to re-abort server (#2056) | 2 | engine-weights |
| 88 | #2058 (74591435) |
[docs] update miles description and chinese version (#2058) | 2 | examples-agent root-doc addendum |
| 89 | #2057 (0efcab01) |
Allow zero-GPU rollout router startup (#2057) | 11 | examples-agent; training-utils; engine-weights; main-owner findings |
| 90 | #2070 (1b0415a2) |
[docker] expose sglang load inflight details (#2070) | 2 | docker-ci-scripts; engine-weights |
| 91 | #2036 (5d7296a7) |
fix(search-r1): stop generation at and (#2036) | 1 | examples-agent |
| 92 | #2072 (fec3da9b) |
[docker] upgrade sglang to v0.5.13 (#2072) | 4 | docker-ci-scripts; engine-weights; training-utils |
| 93 | #2080 (b7fd1abd) |
cleanup (#2080) | 1 | engine-weights; main-owner findings |
| 94 | #2081 (4c058f65) |
sync from internal and cleanup (#2081) | 4 | engine-weights; training-utils |
| 95 | #2067 (a1dddef1) |
[algo] Add CISPO advantage estimator (MiniMax-M1) (#2067) | 9 | docker-ci-scripts; examples-agent; training-utils; engine-weights; main-owner findings |
| 96 | #2082 (e46ca0a2) |
Overlapping data loading and sglang initialization (#2082) | 3 | engine-weights; main-owner findings; training-utils |
| 97 | #2086 (96cb409a) |
Add ci badge to readme (#2086) | 2 | examples-agent root-doc addendum |
| 98 | #2087 (23c6b0d3) |
Fix CI badge (#2087) | 2 | examples-agent root-doc addendum |
| 99 | #2088 (6269f20d) |
Add rollout_data_transport nixl (#2088) | 9 | training-utils; engine-weights; main-owner findings |
| 100 | #2093 (872504c1) |
Support GLM-5.2 (#2093) | 29 | examples-agent; docker-ci-scripts; training-utils |
| 101 | #2005 (243773cf) |
[coding-agent-rl] Refactor coding-agent RL: turn-node TrajectoryManager + pluggable harness layer (#2005) | 27 | docker-ci-scripts; examples-agent; training-utils |
| 102 | #2100 (77037513) |
Remove bshd support (#2100) | 11 | examples-agent; docker-ci-scripts; training-utils |
| 103 | #2096 (21b1b33d) |
docs: drop dangling Dr.GRPO custom-reducer example reference (#2096) | 3 | examples-agent; training-utils |
| 104 | #2102 (8f5e2151) |
Support top_p mask (#2102) | 19 | docker-ci-scripts; engine-weights; training-utils; main-owner findings |
| 105 | #2101 (5c47ffbe) |
fix(examples/tau-bench): use RunConfig.agent_strategy in TAU_CONFIGS (#2101) | 2 | examples-agent |
| 106 | #2107 (3fd7927f) |
Fix wrongly removed RouterArgs registry (#2107) | 1 | engine-weights |
| 107 | #2108 (b9b122c5) |
Extract append_response_tokens to Sample (#2108) | 11 | examples-agent; engine-weights; main-owner findings; training-utils |
| 108 | #2110 (d495f61c) |
Extract append_response_tokens to Sample (#2110) | 2 | training-utils |
| 109 | #2111 (112da2c4) |
[codex] Add Dressage to ecosystem README (#2111) | 1 | examples-agent root-doc addendum |
| 110 | #2118 (8f732538) |
sync from internal (#2118) | 18 | docker-ci-scripts; training-utils; engine-weights; main-owner findings |
| 111 | #2121 (e3049ac5) |
Fix bug on non-float reward (#2121) | 1 | engine-weights |
| 112 | #2124 (34a533ba) |
fix(agent) SWE coding-agent RL stability bugs (abort handling, session cleanup) (#2124) | 5 | examples-agent; docker-ci-scripts |
| 113 | #2125 (a897e1f4) |
feat(coding_agent_rl): select claude_code/codex harness+adapter pair via SWE_AGENT (#2125) | 2 | examples-agent; docker-ci-scripts |
| 114 | #2143 (122ac0c2) |
Fix parallel update_from_disk in megatron server (#2143) | 1 | training-utils |
| 115 | #2145 (df926b6a) |
[docker] fix top_p mask speed issue (#2145) | 2 | docker-ci-scripts; engine-weights |
| 116 | #2135 (e734ee75) |
feat(gemma4): add Gemma4 dense and MoE support (#2135) | 33 | examples-agent; docker-ci-scripts; training-utils |
| 117 | #2134 (96188292) |
fix: handle empty colocated weight buckets (#2134) | 4 | docker-ci-scripts; training-utils; engine-weights |
| 118 | #2144 (6a0ee158) |
perf: fuse PPO logprob entropy computation (#2144) | 6 | docker-ci-scripts; training-utils |
| 119 | #2106 (a2158f1d) |
feat(examples/strands_sglang): update to strands-sglang 0.4.2 (#2106) | 5 | examples-agent; docker-ci-scripts |
| 120 | #2152 (ca7a7eaf) |
Optimize memory usage for _VocabParallelLogProbEntropy (#2152) | 3 | training-utils |
| 121 | #2153 (fa3c990a) |
bugfix (#2153) | 1 | training-utils |
| 122 | #2158 (2b0c9459) |
Remove ctx.set_materialize_grads(False) which may cause issues (#2158) | 1 | training-utils |
| 123 | #2160 (58fbd73a) |
Fix CI (#2160) | 2 | training-utils |
| 124 | #2123 (6ad61127) |
Fix training stuck on all-gather cp (#2123) | 1 | training-utils |
| 125 | #2151 (f8609b8d) |
fix(update_weight): bracket IPv6 master address in tcp:// init_method (#2151) | 1 | training-utils; engine-weights |
| 126 | #2161 (46d13b19) |
feat(coding_agent_rl): env-selectable grading protocol + sandbox RPC robustness (#2161) | 13 | examples-agent; docker-ci-scripts; training-utils |
| 127 | #2167 (90c212b5) |
Always requires rollout_top_p_token_ids when rollout_top_p is not 1.0 (#2167) | 1 | engine-weights; main-owner findings |
| 128 | #2089 (af3d7fff) |
Disk-level delta weight sync (#2089) | 24 | docker-ci-scripts; engine-weights; examples-agent; training-utils; main-owner findings |
| 129 | #2169 (22cdc6e1) |
Merging profiling info into router (#2169) | 6 | docker-ci-scripts; engine-weights; main-owner findings; training-utils |
| 130 | direct 23464705 (23464705) |
Fix router | 1 | docker-ci-scripts |
| 131 | #2173 (1b73ddc1) |
[docker] Update SGLang patch for PD R3 routed experts (#2173) | 5 | docker-ci-scripts; engine-weights; training-utils |
| 132 | #2172 (a4b8c9c8) |
[docker] Update training side dependencies (#2172) | 2 | docker-ci-scripts |
| 133 | #2175 (5c530c15) |
Fix R3 for allgather_cp (#2175) | 2 | training-utils |
| 134 | #2178 (e848052a) |
[docker] Update dependencies (#2178) | 2 | docker-ci-scripts |
| 135 | #2180 (c7487788) |
Add --release-train (#2180) | 17 | docker-ci-scripts; engine-weights; training-utils |
| 136 | direct 8cc298b7 (8cc298b7) |
[docker] fix dockerfile | 1 | docker-ci-scripts |
| 137 | direct 1168380a (1168380a) |
[docker] fix sglang patch | 1 | docker-ci-scripts; engine-weights |
| 138 | direct 53a87b0a (53a87b0a) |
[docker] fix patch | 2 | docker-ci-scripts; engine-weights |
| 139 | #2183 (2d909df5) |
cleanup (#2183) | 9 | training-utils; engine-weights; main-owner findings |
| 140 | #2184 (f27ef35c) |
sync source_names (#2184) | 5 | examples-agent; training-utils; engine-weights; main-owner findings |
| 141 | #2181 (474861aa) |
[3/n] Disaggregated rollout: engine-side /pull_weights (#2181) | 22 | docker-ci-scripts; engine-weights; examples-agent; training-utils; main-owner findings |
| 142 | #2185 (680824dd) |
Support routed_experts_start_len (#2185) | 2 | training-utils |
| 143 | #2208 (fb42ae45) |
Support reloading the default process group (#2208) | 7 | docker-ci-scripts; training-utils; engine-weights; main-owner findings |
| 144 | #2220 (6d485c42) |
Optimize update weight (#2220) | 15 | training-utils; engine-weights; main-owner findings |
| 145 | #2210 (50f2d944) |
Update qwen3-4B.md (#2210) | 1 | examples-agent |
| 146 | #2223 (ea9819f8) |
Fix --save-hf (#2223) | 1 | training-utils |
| 147 | #2228 (aaf5c209) |
[docker] upgrade sglang to v0.5.15.post1 (#2228) | 12 | docker-ci-scripts; engine-weights; training-utils |
| 148 | #2248 (e76876db) |
Support PYTORCH_ALLOC_CONF (#2248) | 3 | docker-ci-scripts; engine-weights |
| 149 | #2249 (66034ab7) |
Remove --train-memory-margin-bytes (#2249) | 4 | docker-ci-scripts; training-utils |
| 150 | #2250 (2a60f00d) |
Add lightweight rollout hooks and sampling controls (#2250) | 15 | docker-ci-scripts; training-utils; engine-weights; main-owner findings |
| 151 | #2251 (f655e13d) |
Internalize mbridge and remove megatron-bridge (#2251) | 119 | docker-ci-scripts; engine-weights; examples-agent; training-utils |
| 152 | #2252 (a6272da0) |
[release] bump to v0.3.1 (#2252) | 22 | docker-ci-scripts; engine-weights; training-utils |
| 153 | #2257 (06ffdbe2) |
[docker] support cuda 13 (#2257) | 4 | docker-ci-scripts |
| 154 | #2262 (a74ae3a0) |
feat(glm5): align Megatron DeepEP training with SGLang rollout (#2262) | 45 | docker-ci-scripts; engine-weights; examples-agent; training-utils; main-owner findings |
| 155 | #2264 (f033ebfc) |
fix: preserve consecutive tool responses in Qwen3 SFT tokenization (#2264) | 2 | training-utils |
| 156 | #2261 (26e859af) |
fix(rollout): restore partial continuation token budget (#2261) | 2 | engine-weights; main-owner findings |
| 157 | #2256 (dd4851f2) |
fix(tools): clamp block max in block_fp8 to avoid NaN weights from all-zero blocks (#2256) | 2 | training-utils |
| 158 | #2254 (351e559f) |
docs: correct reverse KL definition in OPD guide (#2254) | 2 | examples-agent |
| 159 | #2247 (78156c53) |
fix: forward dual-clip PPO epsilon (#2247) | 4 | docker-ci-scripts; training-utils |
| 160 | #2246 (95df894a) |
fix: cast gpu_id to int in sort_key to prevent lexicographic ordering (#2246) | 1 | engine-weights |
| 161 | #2241 (df3d293e) |
fix: restore negative dataset slice bounds (path@[-100:]) (#2241) | 4 | docker-ci-scripts; training-utils |
| 162 | #2237 (38d99de1) |
fix: keep dataset order in filter_long_prompt for mixed multimodal data (#2237) | 4 | docker-ci-scripts; training-utils |
| 163 | #2205 (2c6323b1) |
perf: vectorize REINFORCE++ discounted returns (#2205) | 4 | docker-ci-scripts; training-utils |
| 164 | #2138 (fb735f1f) |
docs(readme): add Dressage to Chinese ecosystem (#2138) | 1 | examples-agent root-doc addendum |
| 165 | #2133 (19abf05b) |
docs(examples): list coding_agent_rl in examples/README (#2133) | 2 | examples-agent |
| 166 | #2189 (3b3bce89) |
[Doc] Clarify PPO/Critic docs after #1856 (#2189) | 4 | examples-agent |
| 167 | #2132 (aed93211) |
fix(mtp): support multi-head MTP loss logging (mtp-num-layers > 1) (#2132) | 1 | training-utils |
| 168 | #2170 (916b33a6) |
Fix placement group crash for external engines under debug_rollout_only (#2170) | 3 | engine-weights; training-utils |
| 169 | #2243 (68a73476) |
fix: restore args.ckpt_step after load_other_checkpoint (#2243) | 1 | training-utils |
| 170 | #2239 (fcbd428b) |
fix: clear exec_and_wait's spawn lock between logical invocations (#2239) | 4 | docker-ci-scripts; examples-agent; training-utils |
| 171 | #2234 (c1dd9ab2) |
fix: pair --log-correct-samples rewards with the DP-local samples (#2234) | 5 | docker-ci-scripts; training-utils |
| 172 | #2235 (dd7f0379) |
fix: whiten advantages over the DP group that includes context parallel (#2235) | 4 | docker-ci-scripts; training-utils |
| 173 | #2236 (b91f59e2) |
fix: don't overwrite an explicitly set --start-rollout-id (#2236) | 2 | training-utils |
| 174 | #2213 (fb393e59) |
Fix tau-bench token deltas for reasoning templates (#2213) | 3 | examples-agent; training-utils |
| 175 | #2238 (7e02052e) |
fix: stop the fully-async rollout dropping completed groups (#2238) | 4 | docker-ci-scripts; engine-weights; training-utils |
| 176 | #2242 (d3c0e79a) |
fix: honor every eval.defaults key and restore per-dataset stop / min_new_tokens (#2242) | 5 | docker-ci-scripts; engine-weights; training-utils |
| 177 | #2199 (d38dc29c) |
fix(npu): bracket IPv6 hosts in distributed init methods (#2199) | 1 | docker-ci-scripts |
| 178 | #2266 (681b3adc) |
Refactor --save-debug-train-data (#2266) | 13 | docker-ci-scripts; examples-agent; training-utils |
| 179 | #2271 (2fa9a442) |
fix transform_ue8m0 in fp8 convert (#2271) | 6 | training-utils; engine-weights |
| 180 | #2274 (876cd89b) |
[ROCm] Support the INT4 QAT kernel on ROCm (#2274) | 2 | training-utils; docker-ci-scripts |
| 181 | #2267 (00986d75) |
Fix model convert when use latest megatron (#2267) | 5 | training-utils |
| 182 | #2276 (41014d1f) |
Add args check for --save-debug-train-data (#2276) | 2 | training-utils |
| 183 | #2286 (1494c500) |
fix: improve compatibility with older SGLang versions (#2286) | 2 | engine-weights; main-owner findings |
| 184 | #2216 (e593fa0a) |
feat: add backend-aware MUSA support (#2216) | 39 | docker-ci-scripts; training-utils; engine-weights; main-owner findings |
| 185 | #2294 (8f20503f) |
cleanup (#2294) | 4 | docker-ci-scripts; training-utils |
| 186 | #2296 (a0d6d26a) |
fix(train): skip optimizer and scheduler for eval-only (#2296) | 2 | training-utils; engine-weights |
| 187 | #2114 (045310b2) |
fix(ppo): preserve raw KL so rollout/kl logging is correct (#2114) | 4 | docker-ci-scripts; training-utils |
| 188 | #2085 (1da1bb19) |
fix(opd): score teacher logprobs at rollout temperature, not 0 (#2085) | 1 | engine-weights |
| 189 | #2297 (16c15fc2) |
fix: reject non-positive rollout temperature at parse time (#2297) | 2 | training-utils |
| 190 | #2298 (624b824a) |
[NFC] Add observability subfolder (#2298) | 47 | docker-ci-scripts; examples-agent; training-utils; main-owner findings; engine-weights |
| 191 | #2312 (1a3fb0a6) |
docs: remove stale delta NCCL recommendation (#2312) | 2 | examples-agent |
| 192 | #2316 (c403335d) |
Remove megatron_patch for memory optimization (#2316) | 4 | training-utils |
| 193 | #2317 (a37dd90b) |
[ci] Clean up tests (#2317) | 26 | docker-ci-scripts; training-utils; examples-agent |
| 194 | #2318 (d8ad1b57) |
[ci] move fanout_test_helpers to tests/ (#2318) | 2 | training-utils |
| 195 | #2320 (7fc5715c) |
[cleanup] remove dead code and merge never visited branches (#2320) | 32 | examples-agent; training-utils; engine-weights; main-owner findings |
| 196 | #2321 (7e4ac3be) |
[cleanup] extract create_weight_updater to make actor's init func cleaner (#2321) | 3 | training-utils; engine-weights |
| 197 | #2322 (daebd20b) |
[cleanup] Remove rollout_validation.py (#2322) | 3 | engine-weights; main-owner findings; training-utils |
| 198 | #2323 (d8ff51c4) |
[cleanup] Refactor rollout.py (#2323) | 8 | docker-ci-scripts; engine-weights; main-owner findings; training-utils |
| 199 | #2326 (a067ce6f) |
[doc] update doc (#2326) | 3 | examples-agent root-doc addendum |
| 200 | #2327 (08160d3f) |
feat: allow forcing UE8M0 FP8 scales (#2327) | 3 | training-utils |
| 201 | #2330 (a3f50097) |
[docs] fix out-dated doc (#2330) | 26 | docker-ci-scripts; examples-agent; training-utils |
| 202 | #2334 (3778dbf6) |
[release] bump to v0.3.2 (#2334) | 8 | examples-agent; docker-ci-scripts; engine-weights |
| 203 | #2272 (4c1ab402) |
feat: support streaming external rollouts (#2272) | 8 | docker-ci-scripts; engine-weights; main-owner findings; training-utils |
| 204 | #2340 (4c193f1f) |
fix(agent): abort timed-out SGLang requests via router workers (#2340) | 1 | examples-agent |
Latest-200 audit update —
6e07971dExpanded to 200 merged Slime PRs + four direct fixes (
2091f7af^..4c193f1f), covering 502 historical paths plus 83 final embedded SGLang patch targets. The earlier unchanged-divergence inventory is not a semantic sign-off; this deeper review found additional omissions.success=false; preserve source backoff/timeout.top_p < 1; do not silently train without masks.Validation: 229 passed, 3 skipped in isolated local CPU groups; changed-file pre-commit and whitespace checks passed. Skips require a real vLLM installation. A combined run exposed pre-existing test-stub pollution in two CLI tests; these run separately rather than adding environment workarounds. No new product test files, GPU/full-CI result, image rebuild, image push, or release claim. The image pin and published tags remain unchanged.
Still open — do not read this as complete engine parity:
The sync-skills translation table has been corrected for actual EP group size (DP × PCP × TP), the obsolete universal single-node rule, TITO fields and the inactive legacy watchdog env. No product parallel layout was changed. Signed Qwen3-Omni/DSpark overlays and exclusions remain intact; completed sync cutoff is not advanced.
Summary
Sync the portable parts of THUDM/slime#2272 into Vime:
abort_mode = "request"/abort_requestspath and periodic re-sweep for non-streaming generatorsfinish_reasonThe Vime-native
VIME_CI_IMAGEBuildkite change has been split into #411.Per-file disposition
slime/rollout/sglang_rollout.pyvllm_rollout.py; retain Vime #296's vLLM server-abort re-sweep for non-request generators.slime/rollout/sglang_streaming_rollout.pyslime/rollout/streaming_utils.pyslime/utils/arguments.pyabort_modecontract; omit the SGLang incremental-output flag.tests/test_streaming_rollout.pytests/test_vllm_rollout.py, without adding a parallel SGLang-shaped test module.GenerateStatelifecycle fields.Upstream window
3778dbf6d1a533ab478ecf5ddaa11449a47752b24c193f1f37509cca70f0e88807a9305b70f63f4eHistorical full-repository alignment audit (before the latest-100 catch-up)
Compared the complete PR candidate with the mechanical Slime
4c193f1fmirror, then compared every per-file divergence with the previous #2334/#402 pair:Earlier validation (not the final catch-up commit)
Engine feature-gap patches
vllm-pull_weights.patch: G1 host-local full/delta checkpoint pull.vllm.patch: G2/G3 TITO speculative statistics and request-bound weight version, plus the Qwen3-Omni TP fix still missing from the fixed vLLM pin.vllm-pd-request-metrics.patch: implemented G5 subset exposing per-request remote-KV wait time; Vime enables native per-request metrics and normalizes the response into the existing trace/rollout metric schema. The full Slime phase breakdown remains tracked.vllm-inflight-queue-diagnostics.patch: G9 bounded per-DP-rank in-flight queue diagnostics (vLLM #55274).Additional validation:
6f7df92a8e6cdc74a725b8f10b4d0b48ba2b37ef— passedRelease tooling catch-up
docker/README.md; Vime-native candidate-image selection remains isolated in [CI] Allow testing candidate Vime images #411.Per-PR omission re-audit
Rechecked the 22 merged Slime PRs in
41014d1f..4c193f1f, including the previous #402 window. The release tooling was explicitly excluded in the old sync ledger together with SGLang/conda-specific artifacts. The generic tools should have been translated separately. This PR restores them, including Slime's date-tag format validation. Existing engine feature gaps remain tracked separately.Latest-100 Slime PR omission audit —
638758e3Expanded beyond the previous 22-PR review to
243773cf^..4c193f1f: 100 PRs + 4 direct fixes, 398 historical changed paths. Reviewed surviving behavior as well as later upstream deletions and signed Vime-native overlays. The prior unchanged-divergence check was insufficient: configuration fields could exist yet be dropped at the outgoing request boundary.min_new_tokens→min_tokensandrepetition_penaltyin ordinary rollout and agent adapter requests.Sample.append_response_tokens; reuse the existing vLLM metadata parser instead of duplicating it.sample.response_length, not decoded text or re-tokenized prompts. Add portable cancellation, preserved-prefix, unrelated cancellation, mixed-group resume and metadata regressions to the existing test file.>=0.37.0requirement so the shell cannot interpret it as output redirection.Validation for this catch-up:
git diff --check: passed;ray.util. No extra environment-adaptation code was added;Known engine gaps (G4/G6/G7/G8 and the remaining G5 phase breakdown) remain open in the sync-skills ledger. The unsupported GLM deterministic GPU tests are not registered as supposedly passing CI. User-excluded retool/search-r1, conda/NPU/old SGLang patches and signed Qwen3-Omni/DSpark overlays keep their explicit dispositions.