Skip to content

[4/4] build: align training with the pinned SGLang revision - #1066

Merged
curnane-lab merged 3 commits into
mainfrom
split/capture-04-pin-dependencies
Nov 7, 2026
Merged

curnane-lab merged 3 commits into
mainfrom
split/capture-04-pin-dependencies

Conversation

@jiapingW

@jiapingW jiapingW commented Nov 1, 2026 •

Copy link
Copy Markdown
Collaborator

Training still pins the old SGLang release while part 1's server uses the required native extension APIs. Pin pyproject.toml to c757c4bb7c55d1eb69fdb2bdc6e6fb8507acb7a0 and align Torch/Transformers to its required 2.14.1/5.19.0 versions. Update the ROCm/XPU manifests and installation documentation accordingly.

The capture environment now reads its SGLang requirement from pyproject.toml, eliminating the temporary duplicate SHA in CI. Both virtual environments continue to reuse their caches without forced refresh. Update the static CLI alias table for the pinned revision, so configuration validation still imports no SGLang code.

Validation: full pre-commit run --all-files passed. H20 config/capture/native-plugin regression against the exact SGLang source revision: 152 passed, 1 skipped (standalone Mooncake-master opt-in). Before the follow-up CI regression fix, the final Git tree exactly matched the original PR plus its four-file lint fix (546ba189), whose full-stack live GPU capture tests passed previously. This validation reused .sgl dependencies and the pinned source checkout; a fresh two-environment installation, rebuilt FlashAttention and non-CUDA hardware remain for CI/platform testing. The host used SGLang's Python radix-tree backend because its Cargo is older than the required version; CI installs Rust 1.92.

Includes the shared CI dependency-test fix from #1063 via forward merges. All 8 CI dependency tests passed on Linux for this layer; the feature diff is unchanged.

Review and merge order:

  1. [1/4] capture: prepare the native plugin runtime and CI server
  2. [2/4] offline: prepare target features through the capture plugin
  3. [3/4] capture: remove legacy SGLang patch support
  4. [4/4] build: align training with the pinned SGLang revision

Each PR compares against the previous layer. Shared follow-up fixes are merged forward without rewriting published history. After merging a predecessor, retarget the next PR to main; if using squash merges, rebase the remaining stack before retargeting. The GPU workflow filters PRs targeting main, so later layers receive that CI run when retargeted. Lint runs on every layer.

This stack replaces #1062. Its combined feature changes match #1062 plus the lint fix; subsequent CI regression fixes are shared across the stack.

Comment thread pyproject.toml Outdated
"pyyaml",
"safetensors",
"sglang==0.5.18",
"sglang @ git+https://github.com/sgl-project/sglang.git@c757c4bb7c55d1eb69fdb2bdc6e6fb8507acb7a0#subdirectory=python",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

The Git URL in project.dependencies will make PyPI reject the release. Should we move the SHA pin to a separate requirements file or CI config?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

You're right. I'll add a seperate sglang install command.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed. Please cc.

Base automatically changed from split/capture-03-remove-patches to main November 7, 2026 00:48
@curnane-lab

Copy link
Copy Markdown
Collaborator

LGTM. I’ll follow up on the Ascend adaptation as soon as possible.

@curnane-lab
curnane-lab merged commit be611e4 into main Nov 7, 2026
1 check passed
@curnane-lab
curnane-lab deleted the split/capture-04-pin-dependencies branch November 7, 2026 00:52
@curnane-lab
curnane-lab restored the split/capture-04-pin-dependencies branch November 7, 2026 02:08
curnane-lab pushed a commit to curnane-lab/SpecForge that referenced this pull request Nov 7, 2026
The pinned-SGLang install rework (sgl-project#1066) changed the unit-test environment
(torch 2.13.0 -> 2.14.1, sglang from a git pin, --no-build-isolation) and
broke the job in four places, none of which ran before the merge:

- Trust the workspace in the persistent global git config after checkout.
  With setuptools-scm installed into the sf venv, building specforge with
  --no-build-isolation invokes git through setuptools-scm's file finder,
  and the self-hosted container rejects the workspace as dubious ownership.
  checkout@v4 only whitelists the path in its own temporary git config.
- Build flash-attn 2.8.3 with C++20: torch 2.14's headers use
  std::strong_ordering, but FA's setup.py appends -std=c++17 last. Fetch the
  sdist from PyPI, patch the flag, build via setup.py bdist_wheel, and cache
  the wheel under the existing per-ABI build_key (uv caches neither sdist
  patches nor local directory builds).
- test(arena): unwrap the stub server's list-wrapped spec_capture rows;
  test_mooncake_arena was not updated when _StubCaptureServer started
  mimicking the real plugin server (sgl-project#1065).
- test: use --cuda-graph-bs-decode; the pinned SGLang split --cuda-graph-bs
  into decode/prefill flags, making the abbreviated form ambiguous.

Update the CI dependency tests for the download/patch/build flow: the curl
stub serves the PyPI JSON plus a tarball whose setup.py genuinely builds a
wheel only after the -std patch is applied.
cursor Bot pushed a commit to curnane-lab/SpecForge that referenced this pull request Nov 7, 2026
sgl-project#1065 and sgl-project#1066 were opened against their stacked parents and retargeted
to main once the parent merged. Changing the base fires only an edited
event, which the default pull_request types omit, so unit-test never ran
on either before merge and the broken pinned-SGLang toolchain reached main.

Add edited to the trigger types and run the GPU jobs for it only when the
base changed. Title and body edits also fire edited; give those runs their
own concurrency group so they do not cancel or replace a running or queued
test, and skip their jobs.

Co-authored-by: curnane-lab <curnane-lab@users.noreply.github.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