mirror of
https://github.com/kvcache-ai/sglang.git
synced 2026-11-05 01:07:39 +00:00
[PR #67] [CLOSED] [Elastic EP] Fix recovery lifecycle and add manual coverage #70
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
kvcache-ai/sglang#70
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/kvcache-ai/sglang/pull/67
Author: @UNIDY2002
Created: 7/20/2026
Status: ❌ Closed
Base:
main← Head:sunxun/recovery-fix📝 Commits (10+)
205a2f2Move LoRA cuda-graph buffers and logging into LoRAManager (#31151)caa85eaExtract init_torch_distributed and refactor into functions (#31152)0f20f52Introduce RemoteInstanceWeightTransporter component (#31153)d15f6a9Introduce NgramEmbeddingManager component (#31154)5b540b1Extract load_model helpers into a load_model_utils module (#31155)39e508bExtract layer-index setup into a module (#31156)17c0460Extract spec aux-hidden-state resolution into a module (#31157)440aebdExtract small single-function helpers into modules (#31158)08798dbExtract MoE/EP setup into a moe_ep_setup module (#31159)1dc48c2Absorb capturer setup and extract the shared-mooncake gate (#31160)📊 Changes
6548 files changed (+1274413 additions, -248942 deletions)
View changed files
➕
.claude/rules/forward-batch-init-new-purity.md(+17 -0)➕
.claude/rules/general-code-style.md(+19 -0)➕
.claude/rules/modify-component-must-read.md(+9 -0)➕
.claude/rules/no-dataclasses.md(+23 -0)➕
.claude/rules/no-getattr-defensive.md(+39 -0)➕
.claude/rules/schedule-batch-out-of-place-mutation.md(+30 -0)➕
.claude/rules/unit-test-admission.md(+72 -0)📝
.claude/skills/add-jit-kernel/SKILL.md(+225 -129)📝
.claude/skills/add-sgl-kernel/SKILL.md(+46 -37)➕
.claude/skills/ci-workflow-guide/SKILL.md(+406 -0)➕
.claude/skills/clean-startup-log/SKILL.md(+282 -0)➕
.claude/skills/cookbook-add-model/SKILL.md(+226 -0)➕
.claude/skills/cookbook-add-model/references/authoring-reference.md(+278 -0)➕
.claude/skills/cookbook-add-model/references/engine-axis.md(+274 -0)➕
.claude/skills/cookbook-add-model/references/mintlify-authoring.md(+116 -0)➕
.claude/skills/cookbook-add-model/references/vendor-logo.md(+76 -0)➕
.claude/skills/cookbook-add-model/templates/benchmarks.jsx.tmpl(+32 -0)➕
.claude/skills/cookbook-add-model/templates/config.jsx.tmpl(+407 -0)➕
.claude/skills/cookbook-add-model/templates/page.mdx.tmpl(+155 -0)➕
.claude/skills/cookbook-migrate-model/SKILL.md(+240 -0)...and 80 more files
📄 Description
Motivation
An initialization lifecycle refactor moved recover-joiner work away from the
ordering required by Elastic EP recovery. The recovery path must complete local
memory-pool setup, attention-backend initialization, warmup, and CUDA graph
capture before joining the recovered process groups. This PR restores that
ordering and adds a manual 4+4 recovery test that exercises the full path.
CC @yoray @zack: the changes preserve the scale-up path. Please run the
scale-up validation if you would like to confirm it against your workflow.
Modifications
post-capture KV-pool resize.
during launch-time setup.
test/manual/ep/test_elastic_recover.py, an 8-GPU single-host 4+4recovery test. It verifies initial serving, degraded serving after killing
one logical node, four-rank recovery, and post-recovery serving. The test
keeps CUDA graph enabled and uses a common explicit random seed for the
initial service and recover joiner.
Accuracy Tests
Validated on one H20 host with 8 GPUs, Mooncake Elastic EP, CUDA graph, and
RDMA. The manual test completed initial serving, degraded serving, recovery of
ranks
[4, 5, 6, 7], and three post-recovery requests successfully:Speed Tests and Profiling
This change does not add work to the steady-state inference path. CUDA graph
capture remains enabled in the recovery validation.
Checklist
Review and Merge Process
/tag-and-rerun-ci,/tag-run-ci-label,/rerun-failed-ci🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.