SGLang Main 分支每日变更总结 (2026-04-08)
概述
北京时间 2026 年 4 月 8 日 00:00 ~ 24:00,SGLang main 分支共有 38 次提交。主要变更涵盖:DFLASH 推测解码新功能、HTTP/2 服务器支持、Score API 扩展支持 SequenceClassification 模型、多项性能优化,以及跨 NVIDIA/AMD/NPU 平台的 bug 修复。
一、新模型与新功能
1.1 DFLASH 推测解码支持
DFLASH 是一种全新的推测解码算法,使用小型 draft model 捕获 target model 的辅助隐藏状态来高效生成草稿 token。Draft model 不包含 token embedding 或 LM head(复用 target model 的),引入了专用的 worker、Triton kernel 以及与 scheduler、cuda graph runner、flashinfer backend 的深度集成。
| Commit Message |
总结 |
PR 链接 |
| [Feature] Add DFLASH speculative decoding support (#22077) |
新增 DFLASH 推测解码算法,包含 draft worker、Triton kernel、server_args 参数等完整实现 |
PR #22077 |
server_args.py 新增参数:
--speculative-dflash-block-size:DFLASH 的 block size(verify window 长度),即 draft token 数量
--speculative-dflash-draft-window-size:Draft model KV cache 的滑动窗口大小,默认全上下文
注意事项: DFLASH 不支持 dp attention 和 pipeline parallelism(pp_size 必须为 1),会禁用 overlap scheduler 和 mixed chunked prefill。
1.2 HTTP/2 服务器支持
| Commit Message |
总结 |
PR 链接 |
| Support HTTP2 server (#21700) |
集成 Granian 实现 HTTP/2 服务器支持,支持 HTTP/1.1 和 HTTP/2 自动协商 (h2c) |
PR #21700 |
server_args.py 新增参数:
--enable-http2:启用 HTTP/2 服务器(默认关闭)
新增环境变量:
SGLANG_GRANIAN_PARENT_PID:Granian worker 进程中标识主进程 PID
限制: 不支持 SSL 热重载,不支持多 tokenizer worker。
1.3 Score API 支持 SequenceClassification 模型
| Commit Message |
总结 |
PR 链接 |
| [Score API] Add SequenceClassification Model support (#22118) |
Score API 扩展支持 SequenceClassification 模型(如分类模型),返回 pooled class logits 而非 logprob |
PR #22118 |
二、性能优化
2.1 GPU Kernel 与计算优化
| Commit Message |
总结 |
PR 链接 |
| Kernels community fa3 (#20796) |
集成 kernels-community 的 FlashAttention v3,支持从社区仓库加载优化 kernel,回退到 sgl-kernel |
PR #20796 |
| [NVIDIA] Enable FP4 flashinfer trtllm routed moe (#21240) |
FP4 FlashInfer TRTLLM MoE runner 新增 routed topk 路径,支持外部路由选择 |
PR #21240 |
| Reduce unnecessary kernels and copies in the NSA indexer (#22232) |
NSA indexer 启用 torch.compile(AMD HIP),修复 RoPE 更新中的 self-aliasing 问题 |
PR #22232 |
| [HiSparse] Optimize the scheduling of decode backup. (#21932) |
HiSparse decode backup 使用独立 CUDA stream 和 event 同步,实现异步备份与计算重叠 |
PR #21932 |
| [Mamba] eliminate D2H if tracking mamba states (#20522) |
Mamba 状态追踪预先计算 mask 信息,消除不必要的 device-to-host 同步 |
PR #20522 |
| [NPU] enable index Cache for npu (#21502) |
NPU DeepSeek MLA 启用 index cache,层间复用 topk indices,减少冗余计算 |
PR #21502 |
新增环境变量:
SGLANG_CACHE_DIR:指定 kernel 社区 kernel 的缓存目录
SGLANG_USE_SGL_FA3_KERNEL:控制是否使用 sgl-kernel 的 FA3 实现
2.2 推测解码优化
| Commit Message |
总结 |
PR 链接 |
| Switch eagle_infer_beta to EAGLE3 (#22303) |
测试从 EAGLE 切换到 EAGLE3,调整启动参数和精度阈值,反映 EAGLE3 成熟度 |
PR #22303 |
三、Bug 修复
3.1 并发与锁问题
| Commit Message |
总结 |
PR 链接 |
| [fix] Fix writer lock deadlock in update_weights_from_ipc during pause_generation (#22290) |
修复 pause_generation 期间 update_weights_from_ipc 的 writer lock 死锁 |
PR #22290 |
| [tiny] Fix TOCTOU race in pause-aware weight update locking (#22304) |
修复上述死锁修复引入的 TOCTOU 竞态条件,保持 is_pause_cond 上下文内完成检查与执行 |
PR #22304 |
3.2 平台特定修复 (NVIDIA / AMD / NPU)
| Commit Message |
总结 |
PR 链接 |
| fix: wrap _import_static_state in inference_mode to fix resume on Blackwell (#21035) |
Blackwell (GB200) 上恢复 checkpoint 时 buffer 赋值触发 autograd,用 inference_mode 包裹修复 |
PR #21035 |
| [AMD] Fix GLM-5 fp8 KV quant path dispatch on MI300 (#22314) |
修复 AMD MI300 上 GLM-5 FP8 KV 量化路径分发顺序,确保走 HIP 路径而非 NVIDIA 路径 |
PR #22314 |
| [Bugfix] [NPU] Qwen3.5 with quantization fix (#21692) |
修复 NPU 上 Qwen3.5 ModelSlim 量化加载,改进 scheme 检测并扩展 packed_modules_mapping |
PR #21692 |
| [NPU] fix qwen3.5 video processor (#22266) |
修复 NPU 上 Qwen3.5 视频处理,添加 NPU 专用的 video preprocessing wrapper |
PR #22266 |
| [AMD] Fix DLPack Error in Aiter flydsl GEMM by Detaching MoE Gate Weight (#22262) |
AMD Aiter flydsl GEMM 的 MoE gate weight 带 autograd history 导致 DLPack 错误,添加 detach 修复 |
PR #22262 |
| [NPU] enable mla prepare fused kernel only when being mla attn (#22024) |
NPU MLA fused kernel 仅在模型实际使用 MLA attention 时启用,防止非 MLA 模型 KV cache 处理错误 |
PR #22024 |
3.3 模型与推理修复
| Commit Message |
总结 |
PR 链接 |
| [fix] [whisper] ensure inputs are moved to the correct device before processing. (#22293) |
Whisper encoder 的 input_features 和 position_ids 可能在 CPU 而模型在 GPU,显式移动到正确设备 |
PR #22293 |
| [HiCache] Fix write_backup return type when parent not backed up (#22185) |
write_backup 在 parent 未备份时返回 None 导致调用方计数错误,改为返回 0 |
PR #22185 |
| [diffusion] fix: make warmup image initialization rank-safe (#21817) |
多 GPU diffusion 中每个 rank 独立创建 warmup image 导致竞争,改为 rank 0 创建后广播 |
PR #21817 |
| fix: Auto-correct page_size for Mamba no_buffer radix cache mode (#20538) |
Mamba 模型使用 no_buffer radix cache 时需要 page_size=1,自动检测并纠正配置 |
PR #20538 |
四、CI 与测试改进
| Commit Message |
总结 |
PR 链接 |
| [CI] Update nightly test models for H200/B200 (#22288) |
更新 H200/B200 夜间测试模型(后被 revert) |
PR #22288 |
| Revert “[CI] Update nightly test models for H200/B200 (#22288)” (#22297) |
回退上述 H200/B200 夜间测试模型更新 |
PR #22297 |
| Add fast-fail to multimodal-gen CI (#22284) |
为 multimodal-gen CI 添加 fast-fail 机制 |
PR #22284 |
| [CI] Migrate mgsm_en eval to gsm8k to remove openaipublic dependency (#21931) |
将 mgsm_en 评估迁移到 gsm8k,消除对 openaipublic 的依赖 |
PR #21931 |
| Only upload CUDA coredumps on test failure (#22301) |
仅在测试失败时上传 CUDA coredump |
PR #22301 |
| [CI] Fix stage-b-test-1-gpu-large (0) timeout by reordering LoRA tests and using tokenizer from cache (#22292) |
重新排序 LoRA 测试并使用缓存 tokenizer 解决超时问题 |
PR #22292 |
| Use dedicated runner label for deepep 8-GPU tests (#22309) |
为 deepep 8-GPU 测试使用专用 runner label |
PR #22309 |
| [CI] Move manual-only nightly tests out of test/registered/ (#22298) |
将仅手动的夜间测试移出 test/registered/ |
PR #22298 |
| [AMD] Add GLM-5-FP8 nightly performance benchmarks for MI30x and MI35x (#21710) |
新增 AMD MI30x/MI35x 上 GLM-5-FP8 的夜间性能基准测试 |
PR #21710 |
| Add CI tests for GLM-5 (#22285) |
新增 GLM-5 模型的 CI 测试 |
PR #22285 |
| [CI] Relax gpt-oss 4GPU accuracy threshold from 0.60 to 0.58 (#22237) |
放宽 gpt-oss 4GPU 精度阈值 |
PR #22237 |
| [CI] Set RUNAI_STREAMER_MEMORY_LIMIT=0 for stage-b-test-1-gpu-small (#22346) |
为 stage-b-test-1-gpu-small 设置 RUNAI_STREAMER_MEMORY_LIMIT=0 |
PR #22346 |
| Refactor auto benchmark unit tests and fix CI bug (#22270) |
重构 auto benchmark 单元测试为包结构并修复 CI bug |
PR #22270 |
| [Diffusion] Add diffusion NVFP4 scaled-mm correctness test (#22127) |
新增 B200 上 diffusion NVFP4 scaled matrix multiplication 正确性测试 |
PR #22127 |
| [tiny] migrate /get_server_info; print accept length in accuracy tests (#22282) |
测试从 /get_server_info 迁移到 /server_info 端点 |
PR #22282 |
| [AMD] Fix test_kimi_k25_mxfp4.py (#22188) |
固定 Kimi K2.5 MXFP4 测试的模型 revision hash |
PR #22188 |
五、UX 与其他改进
| Commit Message |
总结 |
PR 链接 |
| UX: clean loggings (#22174) |
修复 encoder 模型参数名拼写错误,抑制 noisy flash_attn logger,简化 JSON response 类 |
PR #22174 |
六、重点汇总
server_args.py 新增参数一览
| 参数名 |
用途 |
相关 PR |
--speculative-dflash-block-size |
DFLASH block size(verify window 长度) |
#22077 |
--speculative-dflash-draft-window-size |
DFLASH draft model KV cache 滑动窗口大小 |
#22077 |
--enable-http2 |
启用 HTTP/2 服务器(Granian) |
#21700 |
新增环境变量一览
| 环境变量 |
用途 |
相关 PR |
SGLANG_GRANIAN_PARENT_PID |
Granian worker 进程标识主进程 PID |
#21700 |
SGLANG_CACHE_DIR |
kernel 社区 kernel 缓存目录 |
#20796 |
SGLANG_USE_SGL_FA3_KERNEL |
控制是否使用 sgl-kernel 的 FA3 实现 |
#20796 |
RUNAI_STREAMER_MEMORY_LIMIT |
RunAI streamer 内存限制(CI 测试用) |
#22346 |
新模型支持
- DFLASH:全新推测解码算法,支持独立 draft model 配置(#22077)
- SequenceClassification 模型:Score API 新增支持 Llama/Qwen2/Qwen3 分类模型(#22118)
- GLM-5-FP8:新增 AMD MI30x/MI35x 性能基准测试(#21710)