Update XoRL submodule branches and SGLang pin - #41
kiddyboots216 wants to merge 5 commits into
Conversation
Broly Security ScanNote ✅ Clean scan Note Re-scan this PR anytime with
|
qywu
left a comment
There was a problem hiding this comment.
LGTM. Both gitlinks resolve to objects that exist on the live remotes (xorl-client 2a3a60a7, xorl-sglang 1fc3396a — "Reject invalid exact GLM LoRA scaling"), and declaring branch = main in .gitmodules only affects submodule update --remote, so the immutable pins still govern checkout.
Worth noting this is the only PR in the current stack that lint CI has actually run on: .github/workflows/lint.yml triggers on pull_request: branches: [main], and #42–#52 all target intermediate branches. Widening that to branches: ['**'] would be a one-line change and would have caught real ruff-format failures on #50, #51, and #52.
|
Superseded by #57, which consolidates the complete exact trainer-serving stack directly onto main. |
…g receiver
Selecting full / lora / fp8_lora once now derives and validates the paired
trainer and serving settings instead of duplicating fragile edits across the
server YAML and a hand-written sglang.launch_server command.
- xorl.server.train_serve_profile (torch-free): per-profile pinned trainer
fields (derived when unset, rejected with the full mismatch list when
explicitly contradicted -- the block_fp8_qlora_training requirements/
mismatches precedent) plus overridable aligned defaults (fills). fp8_lora
is an FP8 block-e4m3 FROZEN BASE with bf16 LoRA ADAPTERS (block_fp8 QLoRA
trainer + --quantization fp8 receiver); no profile quantizes the adapters,
and the vocabulary keeps that distinction explicit.
- Expansion runs where explicit keys are still distinguishable from
dataclass defaults: launcher.load_server_arguments (YAML + CLI overrides)
and server_arguments.parse_server_args (runner path). __post_init__
re-validates the pinned invariants for directly constructed instances.
- /add_inference_endpoint now fail-fast validates every registered receiver
against the profile (base quantization fp8-vs-bf16, --enable-lora,
max_lora_rank ceiling >= trainer max_lora_rank) -- previously
server_info.enable_lora/max_lora_rank were captured but never checked.
- Deterministic serving translation: python -m xorl.server.train_serve_profile
<config.yaml> prints the paired sglang.launch_server flags (fp8_lora ->
--quantization fp8 --enable-lora --max-lora-rank R --lora-target-modules
...; trainer-only target names such as Qwen3.5's g_proj fall back to the
'all' sentinel).
- Examples: examples/server/configs/profiles/qwen3_8b_{full,lora,fp8_lora}.yaml.
Docs: config-reference/server.md (derivation + receiver-requirement tables),
server-training/sglang.mdx (launch-flag derivation + compatibility mapping).
- Tests (cpu): tests/server/test_train_serve_profile.py covers derivation,
defaults, explicit overrides, backward compatibility (profile-less configs
parse unchanged), launch-flag translation, and admission accept/reject;
test_inference_endpoints.py exercises the wired /add_inference_endpoint
gate end-to-end against fake receivers.
Companion xorl-sglang test (same branch as PR #41) pins the /server_info
field surface this admission reads, so an upstream rename fails visibly
naming the consumer.
fd192a1af14914e2e5b7009274cab5d9507b93cc = togethercomputer/xorl-sglang#41 (xorl/exact-qwen-parity): 0010556a66 (the revision the four K3=0 parity lanes and the serving-side sweeps ran against) plus the overlay forward_batch twin None-default fix that sweep surfaced. The delta is behaviorally inert on the exact serving path (None is falsy at every read site; LogitsMetadata coerces to the same bool), so the lane evidence carries over unchanged.
ea87120a479aee8c22ea0ba662d6a953746e2b24: fd192a1af1 (the qualified revision) + the origin dev-sync merge whose net diff is two lines of scripts/ci/representative_gpu_tests.txt (dev advanced only by the FA4 seqused_k fix this branch already carried) + one upstream unit test adapted to the fork's fail-closed rl_on_policy_target contract. No serving-path change relative to the lane-qualified bytes.
Summary
mainas the tracked branch forxorl-clientandxorl-sglang.xorl-clientpin at2a3a60a783c98e2a8ff722bad06dab18caee350c.xorl-sglangto the final exact-serving PR Drop internal-only cross-references from the public tree #15 head at1fc3396aa122e0f8eb7b1ea4fe0051250cf1bc3c.The parent repository continues to pin immutable commits; branch metadata only makes future submodule updates explicit.
Stack and validation
main762205400ad0b136817c3a3f6658f39500d2ded12a3a60a783c98e2a8ff722bad06dab18caee350c, and xorl-sglang resolves to1fc3396aa122e0f8eb7b1ea4fe0051250cf1bc3c.git diff --checkpassed.