contribution/compass
sgl-project/sglang

SGLang

551 signals · 636 observation events

Open repository ↗

SGLang is a high-performance serving framework for large language models and multimodal models.

31.8K stars7.9K forksPythonApache-2.0attentionblackwellcudadeepseekdiffusionglmgpt-ossinferencekeyword: SGLang
PROJECT NEWS

Release, roadmap, and discussion

All news →
sgl-project/sglang

SGLang

AI Infrastructure
Latest stable

v0.5.17

v0.5.17
  • New Model Support
  • Kimi K3
  • [Kimi] Support kimi-k3: #32541 ⭐
  • [Kimi] Support DCP + DSpark (ported from kimi-k3 branch): #32828
  • [Kimi K3] Add reasoning, tool-call, and OpenAI serving support: #33025
Original release notes ↗

Publicly indicated next

Prereleases and milestones indicate public plans; they are not delivery commitments.

Observation trail

  1. changedtext, updatedAt
  2. changedtext, updatedAt
  3. discoveredinitial snapshot
  4. changedupdatedAt
  5. changedtext, updatedAt
  6. changedupdatedAt
  7. changedtext, updatedAt
  8. changedupdatedAt, assignees
  9. changedupdatedAt
  10. changedtext, updatedAt
  11. changedupdatedAt, state
  12. changedtext, updatedAt, labels
  13. changedtext, updatedAt
  14. discoveredinitial snapshot
  15. changedtext, updatedAt
  16. changedtext, updatedAt
  17. discoveredinitial snapshot
  18. changedtext, updatedAt
  19. discoveredinitial snapshot
  20. changedtext, updatedAt
  21. discoveredinitial snapshot
  22. changedupdatedAt, state
  23. changedtext, updatedAt
  24. changedupdatedAt, state
  25. changedtext, updatedAt
  26. discoveredinitial snapshot
  27. discoveredinitial snapshot
  28. changedupdatedAt
  29. discoveredinitial snapshot
  30. changedtext, updatedAt
50 shown
pull request

[kernel] add triton moe TMA up support

## Motivation Following PR #10567 ("Opt fused triton moe: add tma for down proj kernel"), which added TMA support for the down-projection (second MoE GEMM), this PR extends TMA support to the up-projection (first MoE GEMM, a.k.a. gate_up). Runtime couples up/down TMA via c_sorted = down_moe_use_tma. Since c_sorted is a tl.constexpr, different values produce

importance 0@xieminghe1closedrun-cijit-kernelbypass-fastfailrun-ci-extraOriginal evidence ↗
pull request

[Cosmos3] Add cosmos3 Reasoner to llm only inference

<!-- Thank you for your contribution! Please follow these guidelines to enhance your pull request. If anything is unclear, submit your PR and reach out to maintainers for assistance. Join our Slack community at https://slack.sglang.io to discuss further. --> ## Motivation Cosmos3 Omni model has 2 transformer towers stacked on top of each other for video gene

importance 0@ZhylkaaaopendiffusionOriginal evidence ↗
pull request

[NPU] Add test for --dllm-fdfo

<!-- Thank you for your contribution! Please follow these guidelines to enhance your pull request. If anything is unclear, submit your PR and reach out to maintainers for assistance. Join our Slack community at https://slack.sglang.io to discuss further. --> ## Motivation This PR adds a test case to verify that the `--dllm-fdfo` (First-Done-First-Out) schedu

importance 0@longxin9715opennpuOriginal evidence ↗
pull request

[KDA] Add FlashInfer CAKE prefill and decode backends

## Motivation This PR integrates exported FlashInfer CAKE KDA kernels into SGLang and adds an explicit `cake` backend for recurrent KDA prefill and decode: ```bash --mamba-ssm-dtype bfloat16 --linear-attn-backend cake ``` The shared flag selects CAKE for both phases. Existing per-phase flags remain authoritative when a mixed configuration is requested, and t

importance 0@yyihuangclosedhigh prioritykernelrelease-highlightOriginal evidence ↗
pull request

[MiniMax-M3] Add MiniMax-M3 DSpark support

## Summary This PR adds MiniMax-M3 DSpark speculative decoding support with MiniMax-M3 as the target model and MiniMax-M3-DSpark as the draft model. MiniMax-M3-DSpark is a draft model and cannot be served standalone. When it is paired with MiniMax-M3, several integration points are required across auxiliary hidden-state capture, VL wrapper forwarding, target

importance 0@shiyang814-cpuopenOriginal evidence ↗
pull request

[Intel][XPU]Enable chunked prefill scnearios for XPU with UT

<!-- Thank you for your contribution! Please follow these guidelines to enhance your pull request. If anything is unclear, submit your PR and reach out to maintainers for assistance. Join our Slack community at https://slack.sglang.io to discuss further. --> ## Motivation The chunked-prefill scripted-runtime suite under `test/manual/chunked_prefill/` was wri

importance 0@AnuSajikumar6264openrun-ciOriginal evidence ↗
pull request

Rainj me/rust server pd lb

<!-- Thank you for your contribution! Please follow these guidelines to enhance your pull request. If anything is unclear, submit your PR and reach out to maintainers for assistance. Join our Slack community at https://slack.sglang.io to discuss further. --> ## Motivation Refactor PD related code and embed the pd lb to decode worker. ## Modifications <!-- De

importance 0@rainj-meopendependenciesrun-ciOriginal evidence ↗
pull request

[Model] Complete dots.note.omni support with native encoders, video preprocessing, and MTP decoding

<!-- Thank you for your contribution! Please follow these guidelines to enhance your pull request. If anything is unclear, submit your PR and reach out to maintainers for assistance. Join our Slack community at https://slack.sglang.io to discuss further. --> ## Motivation Merge dots.note.omni model ## Modifications This PR completes the SGLang integration of

importance 0@jianfei-wanggopendocumentationMulti-modaldeepseekrun-cijit-kernelOriginal evidence ↗
pull request

[speculative] DSpark: support the mask-filling draft convention (verify width = gamma)

## Motivation DSpark currently assumes the autoregressive draft-block convention: a gamma-row block emits gamma drafts and the verify window is gamma + 1 rows. DFlash-style mask-filling draft heads use a different block layout — slot 0 carries the anchor token and slots 1..gamma-1 are the predictions — so a gamma-row block emits gamma-1 real drafts and the f

importance 0@shenxiulopenspeculative-decodingjit-kernelOriginal evidence ↗
pull request

[Feature] PP Support PD + DSpark

<!-- Thank you for your contribution! Please follow these guidelines to enhance your pull request. If anything is unclear, submit your PR and reach out to maintainers for assistance. Join our Slack community at https://slack.sglang.io to discuss further. --> ## Motivation Fixes #32750. The existing PD + DSpark path works without Pipeline Parallelism because

importance 0@zhangxiaolei123456opendocumentationquantamddependenciesMulti-modalOriginal evidence ↗
pull request

refactor error responses into shared utils::response helpers

<!-- Thank you for your contribution! Please follow these guidelines to enhance your pull request. If anything is unclear, submit your PR and reach out to maintainers for assistance. Join our Slack community at https://slack.sglang.io to discuss further. --> ## Motivation <!-- Describe the purpose and goals of this pull request. --> ## Modifications <!-- Det

importance 0@rainj-meclosedrun-ciOriginal evidence ↗
pull request

move the PD bootstrap registry under api_server::disaggregation

<!-- Thank you for your contribution! Please follow these guidelines to enhance your pull request. If anything is unclear, submit your PR and reach out to maintainers for assistance. Join our Slack community at https://slack.sglang.io to discuss further. --> ## Motivation <!-- Describe the purpose and goals of this pull request. --> ## Modifications <!-- Det

importance 0@rainj-mecloseddependenciesrun-ciOriginal evidence ↗
pull request

[HiCache] Optimize LogicalHostPool free-list release

<html><head></head><body><h2><span>Motivation</span></h2><p><span>This PR is a follow-up to </span><a href="https://github.com/sgl-project/sglang/pull/30658"><span>#30658</span></a><span>.</span></p><p><span>PR #30658 defers host-pool free-list concatenation for </span><code><span>HostKVCache</span></code><span>-based pools. However, </span><code><span>Logic

importance 0@wangwenmingaaopenOriginal evidence ↗
pull request

[AMD][Spec] Accelerate Qwen3.5 EAGLE with AITER top-k1 and LM-head pruning

<!-- Thank you for your contribution! Please follow these guidelines to enhance your pull request. If anything is unclear, submit your PR and reach out to maintainers for assistance. Join our Slack community at https://slack.sglang.io to discuss further. --> ## Motivation EAGLE with `topk=1` only needs the token with the largest logit. On the existing ROCm p

importance 0@chuyehopenrun-cijit-kernelOriginal evidence ↗
pull request

Add Agentic-Aware Tail-Optimized LRU eviction to the unified radix cache

## Motivation Tail-Optimized LRU (T-LRU, [NeurIPS 25](https://arxiv.org/abs/2510.15152)) keeps only as much of a conversation cached as its next prefill needs to stay under a TTFT SLO budget, and frees the rest of the tail before falling back to recency order, so newer requests can be admitted. On agentic traces the tail is what a plain LRU protects at the e

importance 0@yl3469openrun-cibypass-fastfailrun-ci-extraOriginal evidence ↗
pull request

[SM12x] Re-enable the FP8 wo_a GEMM on sm120/sm121

## Motivation On SM120/SM121 `server_args.py` disables a block of features with the rationale *"SM120 lacks tcgen05/TMEM: disable features that depend on DeepGEMM"*. For `wo_a` (the first stage of DeepSeek-V4's o-projection) the consequence is that the FP8 weights already present in the checkpoint are **dequantised to bf16 at load** and the projection then r

importance 0@zhendonghuaopendeepseekOriginal evidence ↗
pull request

[SM12x] Default the fused MHC post+pre path on

## Motivation On sm120/sm121 the SM120 block in `server_args.py` sets `SGLANG_OPT_USE_TILELANG_MHC_PRE=False`, so DeepSeek-V4's `hc_pre` falls through to `hc_pre_torch_impl` — an fp32 `F.linear` of shape `[M, 16384] × [16384, 24]`. cuBLAS serves that with `cutlass_80_simt_sgemm`, i.e. **plain CUDA cores, no tensor cores at all**. On 2× DGX Spark (GB10 / sm_1

importance 0@zhendonghuaopenrun-ciOriginal evidence ↗
pull request

[Sampling] Bound sampling-mask returns with opt-in truncation

## Framing PR #27408 introduced SGLang's native sampling-mask response and its serving/disaggregation plumbing. This PR is standalone, general serving hardening for that shared sampling primitive. It is not RL-specific, and it does not duplicate endpoint exposure or top-p-only admission work. When those request paths are present, they use the same bounded pr

importance 0@nanjiangwillopenOriginal evidence ↗
pull request

[Fix] Keep DECODE token-ids logprob entries tensor-typed under no_copy_to_cpu

## Motivation A decode batch is processed for token-ids logprobs whenever **any** request in it asks for them. Requests that did not ask contribute a `None` entry to `token_ids_logprobs_list`, and `get_token_ids_logprobs_raw` turns that entry into a bare `[]`: ```python # python/sglang/srt/layers/logprob_processor.py if stage == LogprobStage.DECODE: for i, t

importance 0@shenxiulopenrun-ciOriginal evidence ↗
pull request

[Fix] Pin overlap batch tensors freed while forward-stream kernels still read them

## Motivation Two use-after-free seams in the overlap scheduler. Both are silent, in-range corruption: the caching allocator hands a freed block to a same-stream reallocation while the **forward stream's** already-enqueued kernels still read it, so the server keeps running and emits wrong tokens. Found while running speculative-decoding workloads on a downst

importance 0@shenxiulopenOriginal evidence ↗
pull request

[Fix] Fence relay staging writes behind the in-flight forward's tail relay writes

## Motivation Under overlap scheduling, the FutureMap relay is written from two streams into the same pool-indexed rows: - the in-flight forward's **tail** relay writes on the forward stream — `on_publish` / the non-spec publish and `_relay_forward_payload` -> `stash` all execute inside `forward_stream_ctx`; - **batch-prep staging** on the schedule stream, w

importance 0@shenxiulopenOriginal evidence ↗
pull request

[Spec] Guard multi-layer EAGLE against diverted dp-attention non-extend batches

## Motivation `MultiLayerEagleWorkerV2.forward_batch_generation` routes on ```python if batch.forward_mode.is_extend() or batch.is_extend_in_batch: ``` `is_extend_in_batch` is the **global** dp-attention stamp (`layers/dp_attention.py`), so a rank whose **local** batch is not an extend can be diverted into the target-prefill branch while the scheduler nulled

importance 0@shenxiulopenOriginal evidence ↗
pull request

[CI] Prefetch a scheduled stage's models before the test step

Server boot on a cold cache is mostly download, not load: `test_glm_46` has been seen at 818s wall while sglang reported 129s of actual weight loading. That puts network variance inside every per-test launch timeout — the same file ran 461s / 557s / 697s across three nightly runs. Fetching up front (20 min, advisory, never fails the job) moves that into a st

importance 0@hnyls2002closedOriginal evidence ↗
pull request

[Docs] Standardize diffusion cookbook model pages

## Summary - standardize diffusion model pages with shared capability tags and concise capability, selection, and boundary guidance - simplify the MiniMax-H3 command picker to topology, checkpoint, and request-mode choices while documenting attention, quantization, caching, and encoder scheduling as independent feature overlays - add a reusable diffusion aut

importance 0@mickqianopendocumentationquantOriginal evidence ↗
pull request

config: decisions keyed on the attention backend read the configured pair

`--attention-backend` is one field of three: a launch that sets only `--prefill-attention-backend` or `--decode-attention-backend` leaves the base field at `None`. Seven decisions read that base field alone and therefore answered from a field the operator never set. `attention_backends()` is the pair with the base-field fallback already applied, so each site

importance 0@ch-wanopenblackwellOriginal evidence ↗
pull request

config: pin the supplied-instance surface that a raw record would change

A callee that takes `server_args` keeps the supplied-instance contract, so no ratchet counts its reads — and that is right for the *object*. What it does not cover is what the object will carry once `ServerArgs` holds the user's raw input: a callee reading a field **resolution fills in** starts seeing the CLI default instead of the effective value. Measured,

importance 0@ch-wanopenOriginal evidence ↗
pull request

[kernel] Content-addressed JIT build cache, generated from our own ninja

## Problem `_local_jit_source_hash` decided whether a cached `.so` was still valid by hand-rolling a preprocessor out of two regexes. It follows `"..."` includes only when they sit next to their own file, and `<...>` only under `sgl_kernel/`. Measured on this tree: | | | |---|---| | Files the walker reaches for a CUTLASS kernel | **8** | | Files the compiler

importance 0@DarkSharpnessopenrun-cijit-kernelbypass-fastfailOriginal evidence ↗
pull request

[PD] Fix NIXL P/D serving stall after prefill replacement

## Motivation Addresses the prefill-replacement stall in #33789. When a prefill is replaced behind a bootstrap address that stays reachable (typically a k8s Service), the decode never notices: its cached rank endpoints still point at the dead process, so every request after the swap dies on the waiting timeout until the decode is restarted. Reproduced on 2x

importance 0@GusanidasopendocumentationOriginal evidence ↗
pull request

[AMD] Use fast exponentials in C4 and C128 ROCm kernels

## Motivation ROCm JIT compilation currently drops `-use_fast_math`, so ordinary `expf` in the DeepSeek V4 C4 and C128 compression kernels keeps full FP32 range reduction and overflow/underflow handling. These softmax exponentials are always max-shifted and therefore non-positive, making the ROCm fast device exponential appropriate without exposing positive-

importance 0@AMD-yanfeiwangopenjit-kernelOriginal evidence ↗
pull request

[GDN] Fused qkvzba split for non-pow2 v-head ratios, default FlashInfer GDN prefill on SM90, and an opt-in Hopper bf16 GEMV backend

# Motivation Qwen3.6-27B (and other GDN hybrid checkpoints with `num_v_heads / num_k_heads == 3`, e.g. 48 v-heads / 16 k-heads at head dim 128) currently misses two GDN fast paths, and single-token dense decode on Hopper leaves measurable DRAM bandwidth on the table: 1. **The fused qkvzba split/cat kernel is gated to ratios `[1, 2, 4]`.** The gate exists bec

importance 0@BBufopenquantrun-cidiffusionjit-kernelOriginal evidence ↗
pull request

[quantization] Add tuned Triton tile configs for channelwise FP8 GEMM…

# [quantization] Add tuned Triton tile configs for channelwise FP8 GEMM on L40S ## Summary The per-token / per-channel FP8 linear path in `apply_fp8_linear` dispatches to CUTLASS `fp8_scaled_mm` whenever the weight shape is CUTLASS-compatible, and to the Triton `scaled_mm_kernel` (with a coarse M-based tile heuristic) otherwise. On **L40S / SM89** an offline

importance 0@RunkaiTaoopenrun-cijit-kernelbypass-fastfailrun-ci-extraOriginal evidence ↗
pull request

[Spec][LoRA] Support multi-adapter LoRA with EAGLE/NEXTN/DFLASH/DSPARK speculative decoding

## Motivation #12903 enabled LoRA with NGRAM speculative decoding. This extends it to **EAGLE / NEXTN / EAGLE3, DFLASH and DSPARK with multiple adapters co-batched**, one of the LoRA items in #11762. Adapters apply to the target model only; one shared draft runs unadapted. Speculation stays lossless per adapter (verify samples from the adapted target), so on

importance 0@jybsuperopendocumentationlorarun-ciOriginal evidence ↗
pull request

[DCP] Support PD disaggregation with DCP + DSPARK

## Motivation Reimplementation of #33043 on `main`, as that PR instructed. It targeted the `kimi-k3` branch and was closed with: > **This PR needs to be reimplemented on main after Kimi K3 is merged into main.** … the disaggregation transfer paths it touches differ between the two branches. Original author: @yhyang201. The design below is theirs; this PR por

importance 0@kpham-sglopenOriginal evidence ↗
pull request

[NPU] Fix ModelSlim NEXTN startup: unquantized MoE fallback and UB-aware mamba scatter

close Issue #34211 ## Motivation Fixes startup failure when serving ModelSlim-quantized Qwen3.5 NEXTN checkpoints on NPU, where the MTP (draft) module is stored unquantized (all `mtp.*` entries in `quant_model_description.json` are `FLOAT`) while the main model is `W8A8_DYNAMIC`. Additionally fixes a runtime crash on the first inference request due to Ascend

importance 0@w1idaopennpuOriginal evidence ↗
pull request

[XPU] Support decode context parallelism (DCP) on Intel XPU

## Motivation Decode Context Parallelism (DCP) currently runs only on CUDA and AMD HIP. `initialize_model_parallel` rejects `--dcp-size > 1` on every other platform, so Intel XPU users cannot shard the KV cache by token position at all. This PR enables DCP on Intel XPU through the existing Triton attention backend. DCP shards the KV cache across TP ranks by

importance 0@AnuSajikumar6264opendocumentationrun-ciOriginal evidence ↗
pull request

:construction: [WIP][llm][npu] Split mixed chunked-prefill FIA into prefill/decode calls on Ascend 950

# Summary On Ascend 950 (A5), a mixed chunked-prefill batch currently goes through a single `npu_fused_infer_attention_score` (FIA) call that has to cover two very different shapes at once: long causal prefill queries and one-token decode queries. The kernel tiles for the worst case, so the decode part pays the prefill's cost. This PR splits that into two in

importance 0@TallMessiWuopendocumentationnpujit-kernelOriginal evidence ↗
pull request

[AMD] [GLM5] Fuse the ROCm DSA indexer q/k prep into aiter's single kernel

## Summary * On ROCm the DSA indexer runs `wk` and `weights_proj` as two separate GEMMs. Folding them into one `wk_weights_proj` GEMM needs no fused kernel, only the concatenated weight, but it was gated on CUDA. Split `use_dsa_indexer_fusion` into `use_dsa_indexer_fusion` (still CUDA-only: the `fused_q_indexer_rope_first_quant` / `fused_k_indexer_norm_rope_

importance 0@Jacob0226opendeepseekOriginal evidence ↗
pull request

[VLM] Add content-addressed preprocessing cache infrastructure

## Summary - add strict SHA-256 media snapshots and processor artifact identities - add a bounded, byte-accounted CPU LRU with per-key single-flight - expose `mm_content_hashes` and OpenAI `image_url.content_hash` without changing `mm_hashes` semantics - add model-auto cache sizing (Kimi-K3: 256 MiB total, `0` disables) and an explicit trusted-hash gate - cl

importance 0@mickqianclosedrun-cirun-ci-extraOriginal evidence ↗
pull request

[Bugfix] Check paged KV capacity before kernel launch

## Summary - Check paged KV capacity before launching the extend/decode Triton allocator kernels. - Preserve the existing release-page merge behavior before the capacity check. - Add regression tests covering OOM, successful allocation, and release-page merging. ## Motivation The old implementation launched the allocation kernel and only then checked whether

importance 0@waizuichougouopenOriginal evidence ↗
pull request

Add distributed exact input logprobs

# Compute exact input logprobs from TP-sharded vocab logits without full-vocabulary TP gather ## Summary This change adds an opt-in-safe distributed path for prompt/input logprobs. Each tensor-parallel rank keeps its vocabulary-sharded logits and contributes: - one row maximum; - one rescaled exponential sum; - selected scores for requested target and explic

importance 0@foraxeopennpuOriginal evidence ↗
pull request

[AMD] Pin the exact ROCm Triton wheel instead of deferring to AITER

## Motivation #34364 handed the ROCm 7.2 image's Triton to AITER's `install_triton.sh`, so an unversioned helper script in another repo decides what the image ships. AITER does not claim that role — its `requirements.txt` says torch and triton are *"provided by the base image ... their provenance is governed by the base image, not this file"*, and the only t

importance 0@bingxcheopenamdOriginal evidence ↗
pull request

[VLM] Cache Kimi-K3 per-image processor artifacts

## Summary Stacked on #34398. - adds a model-independent per-media artifact coordinator for strict identity, option-aware keys, trusted/untrusted hashes, partial hits, batching, single-flight, cancellation, flush generations, and CPU-only retention - reduces Kimi-K3 to a typed adapter: the wrapped processor owns one `KimiK3PreprocessConfig`, K3 implements on

importance 0@mickqianopenrun-cirun-ci-extraOriginal evidence ↗
pull request

[sgl-router] Worker Snapshot Support for Recoverable KV Placement State in sgl-router

## Motivation KV-aware routing depends on an accurate view of the KV blocks available on each worker replica. Previously, sgl-router built this view only from live `BlockStored` and `BlockRemoved` events. If the Router started after the Worker cache had already been populated, or if the Router restarted and lost its in-memory index, the existing KV placement

importance 0@skajreopenOriginal evidence ↗
pull request

[VLM] Reuse cached Kimi-K3 embeddings before preprocessing

## Summary Stacked on #34404; review `fd40b11ac0cb0..63cf4f894c57c` for the PR-3-only diff. - acquires per-image embedding-cache leases on the request's final DP route before processor dispatch, and omits features only when every required TP rank has pinned the same entries - transfers lease ownership to the admitted request; consume, cancel, abort, flush, t

importance 0@mickqianopendocumentationMulti-modalrun-cirun-ci-extraOriginal evidence ↗
pull request

cookbook(qwen3.5): add MI355X disaggregated inference and MTP commands, bump image to v0.5.16

## Motivation Add disaggregated inference (DI) and MTP (EAGLE speculative decoding) deployment commands for Qwen3.5-FP8 on AMD MI355X to the cookbook page, and bump the MI355X docker image to v0.5.16. This aligns with InferenceX PR [SemiAnalysisAI/InferenceX#2557](https://github.com/SemiAnalysisAI/InferenceX/pull/2557) which adds the corresponding benchmark

importance 0@ChangLiu0709opendocumentationOriginal evidence ↗
pull request

K3 pp

<!-- Thank you for your contribution! Please follow these guidelines to enhance your pull request. If anything is unclear, submit your PR and reach out to maintainers for assistance. Join our Slack community at https://slack.sglang.io to discuss further. --> ## Motivation <!-- Describe the purpose and goals of this pull request. --> ## Modifications <!-- Det

importance 0@JinyanYicloseddeepseekspeculative-decodingnpujit-kernelOriginal evidence ↗
pull request

[Diffusion] Fix AttributeError in grouped forward_batch by installing the residency manager

## Motivation Reported in #34000 (Bug 2). `PipelineExecutor.__init__` seeds `component_residency_manager = None`, and every `_execute_stages` run enters `_component_residency_request` → `begin_component_residency_request`, which dereferences it unguarded. Of the three forward entry points in `ComposedPipelineBase`, two install the manager and one does not: |

importance 0@CjhHa1openrun-cidiffusionOriginal evidence ↗
pull request

[AMD][Perf] Fuse GatedDeltaNet QKVZBA split/reshape/cat into a single Triton kernel for Qwen3.5-architecture MoE on HIP

## Motivation `Qwen3_5GatedDeltaNet.forward` only takes the fused Triton split/reshape/cat path when the head-group ratio `num_v_heads // num_k_heads` is 1, 2 or 4. Layouts with a ratio of 8 fall back to the eager sequence (`fix_query_key_value_ordering` -> `.contiguous()` -> `torch.cat`), which costs four separate data-movement kernels per GDN layer. Measur

importance 0@yichicheclosedrun-cijit-kernelOriginal evidence ↗
pull request

[AMD] Fix ROCm VAE Conv2D fast path breaking spatial-parallel decode

## Motivation On ROCm, running the Wan VAE decode with spatial-shard parallel decode (`--num-gpus 2 --enable-cfg-parallel`) crashes as soon as the decoding stage starts: ``` RuntimeError: The size of tensor a (39) must match the size of tensor b (43) at non-singleton dimension 3 # under torch.compile the same failure surfaces during tracing: # Attempting to

importance 0@yichicheopenamdrun-cidiffusionOriginal evidence ↗
pull request

[Intel][XPU] Accept XPU in the shared test CLI --device choices

add_common_sglang_args_and_parse hardcoded choices=["auto", "cuda", "rocm", "cpu"], so --device xpu was rejected even though ServerArgs accepts it. It also offered "rocm", which DeviceConfig always refuses: PyTorch drives AMD GPUs through the "cuda" device type. This change as part of #24922 ## Motivation Any test or benchmark using the shared CLI parser fai

importance 0@dayanandavopenOriginal evidence ↗