Commit Graph
11073 Commits
Author SHA1 Message Date
f8f2870a84 Profiling Enhancements [1/3]: cuda graph profile traces (#24370)
Co-authored-by: Basit <mohbasit@ctr2-alola-ctrl-01.amd.com>
Co-authored-by: HAI <hixiao@gmail.com>
2026-08-06 03:19:35 -07:00
Zhiqiang Xie f6de147b8d Remove revoke queue after hit-then-alloc refactoring (#33613) 2026-08-06 03:10:10 -07:00
YAMYandLee Nau 8b29c90218 [NVIDIA] Enable CuTe DSL BF16 GEMM on SM107 (#33617)
Co-authored-by: Lee Nau <lnau@nvidia.com>
2026-08-06 02:06:08 -07:00
kangwangamd 4cdab7b4f4 [AMD] Add msgpack to ROCm diffusion deps (fix multimodal-gen unit test ModuleNotFoundError) (#31899) 2026-08-06 01:52:23 -07:00
weireweireandweireweire fe55d78b7d Fix MXFP4 scale placeholder initialization (#33500)
Co-authored-by: weireweire <20922698+weireweire@users.noreply.github.com>
2026-08-06 01:46:54 -07:00
Liangsheng Yin efc99a86ff [CI] Restore the full prefill CUDA graph capture range in test launches (#33847) 2026-08-06 01:40:10 -07:00
Baizhou Zhang 0e584529f5 [CI] Remove profiling from nightly tests (#33832) 2026-08-06 01:16:08 -07:00
sglang-botandsglang-bot c11ce7c514 chore: bump sgl-kernel version to 0.4.6.post1 (#33842)
Co-authored-by: sglang-bot <sglang-bot@users.noreply.github.com>
2026-08-06 01:09:48 -07:00
Mohammad Miadh Angkad 04374ba5e0 Update AOT kernels for Torch 2.13 (#33841) 2026-08-06 01:03:26 -07:00
YC Yen-Ching Tseng b8140f36ea Fix lint error (#33830) 2026-08-06 00:53:40 -07:00
MickandClaude Fable 5 bfce378e5f [diffusion] feat: capture-safe pynccl all-to-all (#33775)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-06 15:41:05 +08:00
Xinyuan Tong 31c1e5943f Facade DSA index-cache: MTP topk-reuse state + index-K storage (#28609) 2026-08-06 00:34:31 -07:00
YC Yen-Ching TsengandHaiShaw cf7923615c [AMD] Gate DFLASH non-greedy verify on the target-only kernel being registered (#33694)
Co-authored-by: HaiShaw <hixiao@gmail.com>
2026-08-06 00:10:22 -07:00
Baizhou Zhang 5d1a0c7129 Revert "Warn on risky serving-time Triton work" (#33826) 2026-08-05 23:36:10 -07:00
32e5d788bd [mm] rust-server: native multimodal processing for Qwen VL (integrate sglang-mm, e2e) (#32365)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 23:35:50 -07:00
8e11feb68e [HiCache] Support packed and sidecar draft caches for MTP/EAGLE/DSpark (#30393)
Co-authored-by: hjzhang <hjzhang89.gmail.com>
Co-authored-by: Zhangheng <hzh0425@apache.org>
Co-authored-by: shuwenn <47200617+alphabetc1@users.noreply.github.com>
2026-08-06 14:31:11 +08:00
Xiaoyu ZhangandClaude Fable 5 b6876fc652 [diffusion] ERNIE-Image bit-exact residual-gate fast path (H200 1024^2 e2e 16.17 -> 15.75 s) (#33734)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-06 13:43:09 +08:00
MickandClaude Fable 5 604d3561b0 [diffusion] feat: data-parallel serving (--dp-size) (#33725)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-06 11:50:13 +08:00
Liangsheng Yin 9bd1461757 [CI] Bound the CUDA graph capture range in test launches and lift the spec fixture's admission cap (#33776) 2026-08-05 20:00:30 -07:00
Cheng Wan 4ea227fa91 config: the draft runner carries its own attention backend
`build_draft_tp_worker` built a `ServerArgs` variant whose only job was to make
four config reads answer with the draft's backend instead of the target's, and
published it for the duration of the build so the bags agreed. The backend is a
per-runner fact — target and draft coexist in one process — so it moves onto the
runner, and the variant and the construction-time publish both go away.

`ModelRunner` takes `draft_attention_backend` and resolves the runner's effective
value once (`resolve_draft_attention_backend`: the algorithm's resolved backend,
else `--speculative-draft-attention-backend`, else None for a target runner);
`TpModelWorker` threads it to both runner constructions.
`resolve_attention_backend_strs` reads it off the runner, and `ModelRunner`
stamps the resolved pair *before* building backends so a backend can read it
while it constructs — which is what the FlashInfer KV-access check needs now that
it no longer asks the config. `configure_kv_cache_dtype` and the draft backend
factory read the runner too.

One latent bug falls out: the non-hybrid branch of the backend build ignored the
resolved pair and re-read `server_args.attention_backend`, which is why the
variant had to set that field as well as the split pair. It now uses the value
that was resolved for the runner.

`draft_server_args_overrides` and the `preserve_config()` publish switch are
deleted; with them goes the last production `ServerArgs.derive` outside
pre-publish config building, and the last construction-time publish. The
chunked-prefix gate the target resolved simply stays in the bags, since nothing
re-projects them.
2026-08-05 19:32:24 -07:00
Cheng Wan 64eeb153df config: resolve the draft worker's config per runner, not on a copy
The v2 spec workers got a published `ServerArgs` copy carrying two values: the
target's context length and `--speculative-draft-load-format`. Neither is a
process-wide config change — each is consumed by exactly one constructor — so
the copy, the publish switch around the draft build, and the replay of the
target's resolved overrides onto it all go away, and the values travel to the
runner that owns them:

- **Context length.** `TpModelWorker` already takes it (`context_length=None`
  keeps `server_args.context_length`); the four v2 draft workers and
  `build_draft_tp_worker` pass the target's, which every one of them has in
  scope as `target_worker` / `target_model_config`.
- **Load format.** `ModelRunner._draft_load_format()` resolves it for a draft
  runner and `build_load_config` takes it, so the `LoadConfig` is per-runner.
  Model code also reads it off the bag while it builds — Inkling replaces
  per-element noise in its shared-expert scales under dummy loading — so the
  load is wrapped in a scoped bag override that puts the target's value back.
- `skip_tokenizer_init` was on the copy for nobody: `TpModelWorker` already
  short-circuits the tokenizer for a draft worker (`or self.is_draft_worker`).

`PrefillCudaGraphRunner._max_addressable_prefix_len` capped the prefix by
`server_args.context_length`, which the copy used to carry for the draft; it now
reads the runner's own `model_config.context_len`. That is also more accurate for
the target, whose `--context-length` may be unset while the resolved context is
shorter than the token table.

What stays a variant is the dflash/dspark path's attention backend: backend
selection reads it off the config object the draft runner holds, and the
resolved gate has to survive the variant's publish. `draft_server_args_overrides`
now carries only those fields and says why.
2026-08-05 19:31:23 -07:00
Cheng Wan 99cfc90658 config: retire ServerArgs.override in favour of derive()
`ServerArgs.override(source, **fields)` was the last way to change a resolved
`ServerArgs` in place. Every remaining call-site was one of two things, and
neither wanted an in-place write:

- **A config for someone else.** A draft worker's context length, an encode
  worker's device, the compile script's watchdog, the client's port pick, a test
  fixture's backends. These already deepcopied first — the write was on the copy.
- **A launcher-stage resolution.** `resolve_auto_parsers` detected the chat
  template's parsers and wrote them back, to be inherited by the schedulers it
  spawns.

Both are "one config becomes another", so `derive(source, **fields)` returns the
variant and leaves the receiver — and any bags projected from it — untouched. It
deliberately is not `dataclasses.replace`: resolution does not re-run, because
the values being set are decided after it, from inputs it never had. Provenance
and the resolvable-field stash work as before, on the copy.

`resolve_auto_parsers` now computes the parsers and returns the config to launch
with; the detection helpers stop taking a config to mutate. `HiMambaRadixCache`
re-applied a HiCache layout normalization `__post_init__` already performs (the
same duplicate removed from `UnifiedRadixCache` in ebb1c88d23) and just goes.

With no in-place mutation left, `ServerArgs.__setattr__` raising after
resolution *is* the guarantee, so the textual writer ratchet retires and
`test_server_args_derive.py` pins the contract instead: the receiver survives
deriving, the published instance still refuses assignment, and deriving does not
publish. `SGLANG_STRICT_CONFIG_MUTATION` was already unused — the guard has been
unconditional since the mutation sweep — and goes with it.

The detection tests drop their `SimpleNamespace` stand-in for a real
`ServerArgs`; the test kit and the MLA chunk-metadata fixture publish a derived
variant instead of writing the runner's published config.
2026-08-05 19:30:53 -07:00
Cheng Wan d33ab39ebc config: template-detected parsers go to the engine's control-plane overlay
`init_tokenizer_manager` wrote the chat-template-detected `reasoning_parser` /
`tool_call_parser` onto the published `ServerArgs`, after
`TokenizerManager.__init__` had already projected the config bags — so the
namespace readers and the resolved-config readback disagreed with the instance,
and a second `Engine` in the same process would inherit the first one's
detection through the shared bags.

Detection is per-engine control-plane state, which the manager already models:
`record_config_updates` records it, the readback endpoints overlay it, and
`config_value` reports what is in effect. `OpenAIServingChat` — the only reader
of these two fields in the tokenizer process — follows the overlay. The
architecture pass (`resolve_auto_parsers`, before the schedulers fork) is
unchanged: the scheduler resolves its own bags from the instance it receives.
2026-08-05 19:29:51 -07:00
Cheng Wan bebebb8f6c config: retire the alias-form process-global config reads
`sa = get_server_args()` followed by `sa.field` reads the same startup record as
the direct form; the read ratchet added in the previous slice pinned twelve of
them as the remaining surface. Eleven now read the accessor for what they
actually want:

- `is_enable_moe_cp_allgather` compares the attention-CP and MoE-DP sizes to
  decide whether a forward needs an allgather, so it reads the live topology
  through `get_parallel()` — the same source `get_moe_cp_size()` right above it
  already uses. Both groups exist once model-parallel init has run, which is
  before any forward.
- The DeepSeek MLA decode-backend gate and Inkling's attention paths read
  `get_exec().kernel`; Inkling's KV-dtype checks read `get_model()`. These are
  per-runner fields, and the value they get is the config published for the
  runner being built — unchanged from what the alias returned.
- The int8 mamba checkpoint pool reads `get_exec().mamba`. It keeps its guard
  for callers that construct the pool with no published config; that guard now
  catches the namespace accessor instead of the slot.

`model_loader`'s `moe_dp_size` stays on the instance and is exempt: the dict it
belongs to already reports the live size under `"dp"`, so that entry is the
configured intent, and `get_parallel()` shadows the name with the live value.

Alias-form baseline 12 -> 0. What remains on `get_server_args()` in the package
is the derived API (properties and methods computed from several fields plus the
HF config) and four config-intent reads of live-shadowed sizes, each exempt by
name with its reason.
2026-08-05 19:29:20 -07:00
Cheng Wan 1d47952c7c config: pass the Ray placement group as a launch argument
`RayEngine.__init__` set the caller's `PlacementGroup` on `ServerArgs` as an
undeclared attribute, and every consumer read it back off the config object:
the non-DP launch path took `pg` and `is_custom_pg` from it, the DP path had to
re-attach the handle after `dataclasses.replace` dropped it, the DP controller
asked the config whether the group was the caller's, and the Ray HTTP launcher
had to clear the field so a stale handle could not leak in.

A live cluster object is not config. It now travels as a `placement_group`
argument on the two launch hooks — `Engine._launch_subprocesses` and
`Engine._launch_scheduler_processes` — defaulting to `None`, with `RayEngine`
holding the caller's group in `_placement_group` and the DP path passing
`is_custom_pg` down to the controller. The public API is unchanged:
`RayEngine(placement_group=pg, ...)` still works, `pg` still falls back to the
ambient group, and the HTTP launcher gets `None` from the default.

Writer ratchet 18 -> 15.
2026-08-05 19:28:39 -07:00
Michael d90ef69802 [AMD] ci: run vetted nested multimodal_gen unit tests on AMD (#31483) 2026-08-06 09:39:33 +08:00
Pavan Sivaram Girijala d9b1cba255 Fix DeepSeek-OCR batching crash on variable local-crop counts (#33214) 2026-08-05 18:39:19 -07:00
Zilin Zhu f01f706960 [RL] Skip rotary cache tensors in weight checker (#27692) 2026-08-05 18:22:12 -07:00
Eric Zhang ceaeca0b9e [Fix] Vocab out of bounds in DSpark for Inkling-Small (#33748) 2026-08-05 18:20:02 -07:00
DevashishLal-CBandDevashish Lal fc74c35546 kernels: scalar scale A support for fp8_gemm (#33469)
Signed-off-by: Devashish Lal <devcode@fb.com>
Co-authored-by: Devashish Lal <devcode@fb.com>
2026-08-06 09:11:25 +08:00
Eric Zhang 269d51ed4b [Fix] Inkling works with gs:// runai_streamer paths (#33750) 2026-08-05 18:09:17 -07:00
28848bfe7c Fix Nightly NV CI (#33564)
Co-authored-by: Brayden Zhong <brayden@radixark.ai>
Co-authored-by: Baizhou Zhang <sobereddiezhang@gmail.com>
2026-08-05 18:06:47 -07:00
Khoa PhamandClaude Opus 5 beabc5949b Enable MoE deferred finalize by default and drop its expert_weights dtype workaround (#33618)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 17:56:47 -07:00
Aditya KamatandBrayden Zhong c9506d023f [Quantization] Route per-tensor FP8 checkpoints to FlashInfer on SM90 (#33148)
Co-authored-by: Brayden Zhong <b8zhong@uwaterloo.ca>
2026-08-06 00:54:10 +00:00
Xiaoyu ZhangandClaude Fable 5 4c0a8940fa [Kernel] Unify BaseFusedOp and MultiPlatformOp dispatch (#33205)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-06 08:52:09 +08:00
Xiaoyu ZhangandMohammad Miadh Angkad ba12a16a62 [diffusion] Prefer cuDNN SDPA over FA4 for dense attention on sm_100 (B200) (#33655)
Co-authored-by: Mohammad Miadh Angkad <176301910+mmangkad@users.noreply.github.com>
2026-08-06 08:49:10 +08:00
sglang-botandsglang-bot c952ee5ac1 chore: bump sgl-kernel version to 0.4.6 (#33678)
Co-authored-by: sglang-bot <sglang-bot@users.noreply.github.com>
2026-08-05 17:46:54 -07:00
Mohammad Miadh Angkad 65d5a0ec25 Support ModelOpt MXFP8 checkpoints (#32538) 2026-08-05 17:44:32 -07:00
Liangsheng Yin 3869fe556f [CI] Collapse the EAGLE launch matrix and the scoring engine boots on the per-commit runners (#33756) 2026-08-05 16:43:19 -07:00
Mohammad Miadh Angkad 5424d2039c [CI] Fix GLM-Image usage unit tests (#33731) 2026-08-05 16:20:08 -07:00
Polisetty V R K Jyothendra Varma a1cc286062 [Intel GPU] DeepSeek V4 4/N: use sgl-kernel implementation of fused_q_norm_rope on XPU (#27790)
Signed-off-by: P V R K Jyothendra Varma <polisettyvarma@gmail.com>
2026-08-05 16:04:35 -07:00
Liangsheng Yin c0ef548eef [misc] Unify MLA scaling init and remove dead buffer / scaling code (#33363) 2026-08-05 15:59:33 -07:00
YAMY 990a446773 Fix padded positions in breakable CUDA Graph attention (#33253)
TestBreakableCUDAGraphBasic and all NVIDIA CI tests pass.
2026-08-05 15:53:28 -07:00
YAMYandChunan Zeng 7bc90ab394 Select DeepGEMM standard layouts by memory budget (#33474)
Co-authored-by: Chunan Zeng <zcnrex@gmail.com>
2026-08-05 15:50:43 -07:00
yvbbrjdrandhnyls2002 02cd44c59a feat(dgx-spark): add inkling-small MoE support for sm_121 (#33108)
Co-authored-by: hnyls2002 <lsyincs@gmail.com>
2026-08-05 15:06:59 -07:00
cctry a3a1ebc7b7 Warn on risky serving-time Triton work (#33120) 2026-08-05 14:55:03 -07:00
Ziang Li 988c6e6aeb Pin online NVFP4 4over6 quantization settings (#33621) 2026-08-05 21:29:32 +00:00
Brayden ZhongandBrayden Zhong a14c870886 Fix broken Nemotron DP attention (#33123)
Co-authored-by: Brayden Zhong <brayden@radixark.ai>
2026-08-05 14:27:05 -07:00
Hank Han 9436de717f [Spec][PD] Enable fused TopK for GLM-5.2 MTP IndexShare (#31477) 2026-08-05 14:17:42 -07:00
Zhiqiang Xie 106bcc1293 Observability enhancement for HiCache (#32388) 2026-08-05 14:13:06 -07:00