本文档将 25 项推理加速特性逐一映射到 vLLM 框架的具体实现路径,包含版本要求、启动参数、内核名称、源码位置和性能数据。
目录
- A. 量化与精度优化(特性 1-5)
- B. MoE 优化(特性 6-9)
- C. 注意力与 KV Cache 优化(特性 10-15)
- D. 调度与延迟优化(特性 16-17)
- E. 结构化输出(特性 18)
- F. 运行时与图优化(特性 19-22)
- G. 长上下文扩展(特性 23-24)
- H. 延迟改进(特性 25)
- 附录:完整启动命令
A. 量化与精度优化
本文同时覆盖 vLLM 与 SGLang 两大推理框架的 DeepSeek V4 Flash 部署优化。每个特性先给出 vLLM 启动参数,再补充 SGLang 对应配置。
特性 1:MatMul 和 KV-cache 操作的动态量化,实现计算与显存带宽双向降本
vLLM 实现路径:
vLLM 通过 HybridKVCache 管理器和分层量化策略实现 MatMul 与 KV-cache 的动态量化。DeepSeek V4 Flash 的部署中,量化路径分为 MoE 权重量化、注意力 GEMM 量化和 KV cache 量化三个独立维度,彼此可独立配置。
具体体现:
| 层面 | 实现细节 |
|---|---|
| MoE 权重 GEMM | DeepSeek V4 的 MoE 权重原生为 FP4 格式(NVFP4),vLLM 在 Blackwell 架构上通过 TRTLLM-Gen 内核进行 NVFP4 GEMM。激活 token 在进入 MoE 前在线量化为 FP4,然后通过 FP4 Tensor Core 执行 GEMM,结果以 BF16 累加。在 Hopper 架构上,使用 TRTLLM FP8 MoE 内核:FP4 权重反量化为 FP8 后与 FP8 激活执行 block-scaled GEMM。 |
| Attention 路径 GEMM | MLA 注意力中的 QKV 投影使用 FP8 block-scaled GEMM(通过 CUTLASS SM90 内核)。prefill 阶段使用 bf16,decode 阶段切换到 token-wise FP8。--quantization fp8 启用。 |
| KV-cache 量化 | --kv-cache-dtype fp8_ds_mla(DeepSeek V4 必选参数)。vLLM 对 DeepSeek V4 使用混合精度 KV cache:indexer cache 使用 FP4(4x 压缩),attention cache 使用 FP8(两阶段:prefill 时 bf16、decode 时 token-wise FP8)。1M 上下文仅需 9.62 GiB KV cache(bf16 估算值),FP4/FP8 混合后再降低约 2x。 |
| 激活量化 | 在 MoE all-to-all 通信前对 hidden state 做 token-wise FP8 量化。在 Blackwell 上进一步量化为 FP4 后再通信,通信量降低最多 4x。 |
启动参数:
1 | --kv-cache-dtype fp8_ds_mla # DeepSeek V4 专用 KV cache 类型 |
性能影响:
- 计算:CUTLASS SM90 FP8 GEMM 在 H100 上约 1.5x 吞吐 vs BF16
- 显存:混合 FP4/FP8 KV cache,1M 上下文约 9.62 GiB(bf16 估算)→ 约 4.8 GiB(实际 FP4/FP8)
- 带宽:FP4 all-to-all 通信量相比 BF16 降低 4x
版本要求: vLLM 0.8.0+(基础),v0.24.0+(完整 FP4/NVFP4 支持,FlashInfer cute-dsl NVFP4 GEMM #42235)
特性 2:支持专家并行负载均衡(EPLB),缓解吞吐下降与延迟抖动
vLLM 实现路径:
vLLM 通过 --enable-expert-parallel 启用专家并行,使用 Biased Group TopK 策略和 cluster-cooperative topK 优化专家利用率,在 AMD 平台上有专门的 AITER 优化路径。
具体体现:
| 组件 | 实现细节 |
|---|---|
| Expert Parallel | --enable-expert-parallel 将 256 个专家的 MoE 层分散到各 TP rank 上。不同于 SGLang 的 EP degree 独立设置,vLLM 的 EP 与 TP 共享 parallelism degree。每个 TP rank 负责本地的一组专家,跨 rank 的路由通过 NCCL all-to-all 通信完成。 |
| Biased Group TopK | vLLM 的 MoE 路由使用分组 TopK 策略(针对 DeepSeek 架构的分组路由优化),在组内做 biased selection 改善专家利用率。相比 naive TopK,在 AMD 平台上实现 4.9% 吞吐提升(通过 AITER 实现)。 |
| Cluster-Cooperative TopK | v0.24.0 新增,针对 DeepSeek 低延迟场景。通过跨 GPU 协作的 TopK 策略,减少因路由不均衡导致的 tail latency。(PR #43008) |
| AITER Biased Group TopK | AMD ROCm 专属优化。通过 AITER 库实现 biased group TopK 和 fused softplus-sqrt-topk MoE router(PR #44945),在 AMD GPU 上实现与 NVIDIA 平台近似的专家利用率。 |
| PD 分离 + DP 均衡 | 在 PD(Prefill-Decode)分离部署中,通过 DP supervisor 和 prefill step cadence 策略均衡 prefill 和 decode 节点间的负载(PR #46628, #44558)。 |
启动参数:
1 | --enable-expert-parallel |
性能影响:
- Biased Group TopK 改善专家利用率,减少约 15-20% 的专家闲置
- Cluster-cooperative TopK 降低 P99 延迟抖动约 20%
- AITER 路径在 AMD 上实现 4.9% 吞吐提升
版本要求: vLLM 0.6.6+(基础 EP),v0.24.0+(cluster-cooperative TopK)
特性 3:FP8 KV Cache 支持
vLLM 实现路径:
vLLM 对 DeepSeek V4 使用专用 fp8_ds_mla KV cache 类型,与 FlashMLA 和 FlashInfer 的 FP8 注意力内核深度集成。
具体体现:
| 层面 | 实现细节 |
|---|---|
fp8_ds_mla 专有缓存类型 | --kv-cache-dtype fp8_ds_mla 是 DeepSeek V4 的必选参数。这是 vLLM 为此模型量身定制的 KV cache 量化方案,编码了 MLA 特殊的 K/V 布局(NoPE 512 维 + RoPE 128 维多路压缩)和分阶段精度策略。 |
| 两阶段精度 | Prefill 阶段使用 bf16 KV cache(保证精度),decode 阶段切换到 token-wise FP8(缓解 memory-bound)。每次 decode step 时,新生成的 token 的 KV 以 FP8 量化写入,读取时在线反量化为 BF16 参与注意力计算。 |
| Indexer Cache FP4 | DSA 稀疏注意力的 indexer cache 使用 FP4,4x 压缩。vLLM 通过专用的 indexer kernel 处理 FP4 indexer cache 的读写。 |
| FlashMLA 集成 | vLLM 集成了 FlashMLA——DeepSeek 官方的 MLA decode 内核,直接支持 FP8 KV cache 的 batched decoding。FlashMLA 针对 Hopper 架构优化,利用 warpgroup 级编程和异步 TMA 加载。 |
| HybridKVCache 管理 | vLLM 自研的 HybridKVCache 管理器处理非连续内存布局——c4a 主 KV、c128a 主 KV、SWA KV、C4 indexer KV 和压缩器残差状态的统一管理,支持 FP8 精度下的 block 分配和前缀缓存。 |
启动参数:
1 | --kv-cache-dtype fp8_ds_mla # 必选 |
性能影响:
- 相比 BF16 KV cache,显存占用降低约 4x(FP8 attention + FP4 indexer)
- decode 阶段 FP8 注意力约 1.5-2x 加速(memory-bound 场景)
版本要求: vLLM 0.8.0+(fp8_ds_mla),V1 引擎完全支持
特性 4:拓展 DeepGEMM E8M0
vLLM 实现路径:
vLLM 通过 DeepGEMM 集成和 CUTLASS SM90 FP8 GEMM 实现 E8M0 block-scaled GEMM,同时在 Blackwell 上通过 TRTLLM-Gen 内核实现 FP4 GEMM。
具体体现:
| 层面 | 实现细节 |
|---|---|
| DeepGEMM 集成 | v0.11.0 起支持 DeepGEMM 作为 MoE 后端(适用于 Hopper 和 Blackwell GPU)。DeepGEMM 的 E8M0 block-scaled FP8 GEMM 用于 attention 路径和 MoE 路径的矩阵乘法。PR #46006 新增 PDL(Prefill-Decode Link)支持。 |
| CUTLASS SM90 FP8 GEMM | vLLM 的注意力路径 GEMM 通过 CUTLASS SM90 FP8 Block Scaled GEMM 实现(PR #44572,支持 odd-M 的 swap_ab 策略,180-290% kernel 加速)。使用 E8M0 scale factor 格式,每个 block 的 scale 共享一个 E8M0 值。 |
| NVFP4 GEMM | Blackwell 上通过 TRTLLM-Gen 内核进行 NVFP4 GEMM。DeepSeek V4 的 FP4 MoE 权重直接加载,无需反量化,激活 token 量化为 FP4 后送入 Tensor Core。FlashInfer cute-dsl NVFP4 GEMM(PR #42235)提供额外的 FP4 后端。 |
| MXFP8 线性内核 | v0.24.0 新增 FlashInfer cute-dsl MXFP8 linear kernel(PR #46393),支持 microscaling FP8 block-scaled 量化,提供比标准 FP8 E8M0 更精细的 block-scaled 粒度。 |
| JIT 编译缓存 | vLLM 的 DeepGEMM 和 CUTLASS 内核使用预编译 + JIT 缓存机制,首次启动后缓存二进制文件,避免重复编译。 |
启动参数:
1 | # DeepGEMM 自动启用(v0.11.0+ 默认集成) |
性能影响:
- CUTLASS SM90 FP8 odd-M 对比 naive kernel 180-290% 加速
- NVFP4 GEMM 在 Blackwell 上约 3-4x 吞吐 vs BF16
- MXFP8 micro-scaling 提供比标准 FP8 E8M0 约 5-10% 额外吞吐
版本要求: vLLM 0.11.0+(DeepGEMM 集成),v0.24.0+(NVFP4 + MXFP8)
SGLang 对应配置:
DeepGEMM 自动启用,无需显式参数
可通过环境变量控制:
DEEPGEMM_ENABLE_JIT=1 # 启用 JIT 编译(默认)
DEEPGEMM_FORCE_RECOMPILE=0 # 使用缓存的二进制
1 |
|
性能影响:
- FlashMLA decode 相比标准 attention 约 2-3x 加速
- FA3 统一 prefill/decode batch 减少调度开销
- SM100 native DSA indexer 在 Blackwell 上额外约 1.3x decode 加速
版本要求: vLLM 0.8.0+(FlashMLA),V1 引擎(FA3),v0.24.0+(SM100 native DSA)
B. MoE 优化
SGLang 对应配置:
MLA kernel 自动选择,无需手动指定
1 |
|
性能影响:
- Kernel 融合后 per-layer 从 ~33 降至 ~10 kernel launch
- TRTLLM MoE decode 延迟相比 Triton 约 1.5x 降低
- CUTLASS SM90 odd-M 支持 180-290% 个别 GEMM 加速
- 融合 Q-norm + KV RoPE + K insert 达 10-20x 加速
版本要求: vLLM 0.8.0+(Triton/CUTLASS MoE),v0.11.0+(DeepGEMM),v0.24.0+(CUTLASS SM90 odd-M)
SGLang 对应配置:
MoE 后端自动选择,可通过环境变量覆盖:
SGLANG_MOE_BACKEND=deep_gemm # 或 flashinfer_trtllm / flashinfer_cutedsl
1 |
|
性能影响:
- 共享专家独立于 all-to-all 通信,无跨 GPU 路由开销
- 共享专家输出与路由专家输出在融合 kernel 内完成叠加
版本要求: vLLM 0.6.6+(基础 MoE EP)
特性 8:MoE 优化 — 大量细粒度专家
vLLM 实现路径:
vLLM 通过 Expert Parallel + NCCL all-to-all + FP8/FP4 通信压缩应对 DeepSeek V4 的 256 个细粒度专家,并在 Blackwell 上实现 4x 通信压缩。
具体体现:
| 优化点 | 实现细节 |
|---|---|
| NCCL All-to-All | vLLM 使用 NCCL 进行 MoE dispatch/combine 的 all-to-all 通信。--enable-expert-parallel 启用。不同于 SGLang 的 DeepEP(定制通信库),vLLM 使用标准 NCCL,在 H100 NVLink 域内性能相当,但在跨节点 RDMA 场景下略逊。 |
| FP8 通信压缩 | Token 在 dispatch 前量化为 FP8,通信量减半。Combine 时在目标 GPU 上反量化为 BF16。这是标准做法,vLLM 将其融合在 MoE router kernel 之后。 |
| FP4 通信压缩 | Blackwell 专属:Token 量化为 FP4 后再 all-to-all,通信量相比 BF16 降低 4x,相比 FP8 再降低 2x。结合 TRTLLM-Gen NVFP4 GEMM 实现端到端 FP4 流水线。 |
| Qwen3-Next FP8 MoE 调优 | vLLM 对 Qwen3-Next-80B 的 FP8 MoE kernel 做了 H100 专用优化(PR #44830,+25% 吞吐),对 DeepSeek V4 的 MoE 路径有间接收益。 |
| PD 分离 + DP 均衡 | 在 PD 分离部署中,prefill step cadence 策略(PR #44558)改善非 PD 场景下的 DP 均衡,避免 MoE 通信不均衡导致的节点间等待。 |
启动参数:
1 | --enable-expert-parallel |
性能影响:
- FP8 通信将 all-to-all 数据量减半
- FP4 通信在 Blackwell 上再减半(总计 4x vs BF16)
- Qwen3-Next 调优经验间接提升 DeepSeek V4 约 5-10%
版本要求: vLLM 0.6.6+(基础 EP),v0.24.0+(FP4 通信 + PD 均衡)
特性 9:FlashInfer GEMM 和 MoE 自动调优
vLLM 实现路径:
vLLM 通过 compilation-config CUDA Graph + Persistent Batch + Triton 自动调优实现 GEMM/MoE 内核的自动选择和优化。
具体体现:
| 层面 | 实现细节 |
|---|---|
| CUDA Graph 模式 | vLLM V1 支持三种 CUDA Graph 模式:FULL_DECODE_ONLY(推荐用于 DeepSeek V4 decode)、PIECEWISE(分段 graph)、FULL(全量 graph)。CUDA Graph 捕获固定 shape 的计算图,后续推理直接 replay graph,消除 kernel launch 开销。 |
| Persistent Batch | V1 引擎的核心技术:缓存输入张量,每步仅应用 diff(增量更新)。避免每步重建 input tensors 和 metadata,大幅减少 CPU 开销。结合 Numpy 操作替代 Python 原生操作,进一步降低 CPU 端延迟。 |
| Triton 自动调优 | vLLM 的 Triton 内核在首次遇到新 shape 时自动调优 tile 大小和流水线深度。VLLM_TRITON_FORCE_FIRST_CONFIG 可跳过调优直接使用默认配置(PR #42425),用于快速启动。Triton 重编译检测(PR #45631)避免重复调优。 |
| FlashInfer AOT | v0.11.0 修复了 FlashInfer AOT(Ahead-of-Time)在 release docker 镜像中的集成问题。AOT 预编译确保内核在启动时立即可用,无需运行时 JIT。 |
| torch.compile 通用优化 | V1 引擎通过 torch.compile 实现 batch-invariant 优化(v0.11.0),对注意力后端的形状泛化支持使同一编译图可处理多种 batch size。 |
启动参数:
1 | --compilation-config '{"cudagraph_mode": "FULL_DECODE_ONLY"}' |
性能影响:
- CUDA Graph replay 消除 ~90% 的 kernel launch 开销
- Persistent Batch 减少约 30-50% 的 CPU 调度开销
- Triton 自动调优相比固定配置约 10-15% 吞吐提升
版本要求: vLLM 0.8.0+(基础),V1 引擎(Persistent Batch + torch.compile),v0.24.0+(完整 CUDA Graph 模式)
C. 注意力与 KV Cache 优化
SGLang 对应配置:
自动调优默认启用
可通过环境变量控制:
FLASHINFER_AUTOTUNE=1 # 启用自动调优
FLASHINFER_AUTOTUNE_CACHE_DIR=/path/to/cache
1 |
|
性能影响:
- 融合内核:Compressor 融合 1.4-3x,Inverse RoPE 融合 2-3x,Q-norm 融合 10-20x
- TopK 自适应内核贡献 17% decode 延迟改善
- Per-layer kernel 从 ~33 降至 ~10
版本要求: vLLM 0.8.0+(FlashMLA/FlashInfer),v0.11.0+(FlashInfer AOT),v0.24.0+(NVFP4/MXFP8 cute-dsl)
SGLang 对应配置:
FlashInfer 默认启用,无需显式参数
预编译 wheel 安装:
特性 11:KV 缓存和注意力优化 — 滑动窗口
vLLM 实现路径:
DeepSeek V4 使用 128-token 滑动窗口。vLLM 将 SWA 作为 HybridKVCache 的三种层类型之一统一管理。
具体体现:
| 层面 | 实现细节 |
|---|---|
| SWA 类型层 | vLLM 将 DeepSeek V4 的注意力层分为三种类型并以统一逻辑 block size(256 native token)管理:c4a 层(4x 压缩)、c128a 层(128x 压缩)、SWA 层(无压缩,仅滑动窗口)。 |
| HybridKVCache | vLLM 的核心创新:统一的 KV cache 管理器处理三种层的异构内存需求。SWA 层保持每个 token 的完整 KV,block 物理大小为 256 token × per_entry_size。 |
| 压缩器残差作为 SWA KV | vLLM 的一个巧思:将压缩器(compressor)的残差状态作为滑动窗口 KV cache 管理。压缩器需要维护一个小滚动残差(C4: 8 token, C128: 128 token),vLLM 将其作为特殊的 KV cache 页面分配,利用现有的 paged allocator 管理。 |
| 统一逻辑 block size | 所有三种层类型使用统一的逻辑 block size = 256 native token。c4a 层每个 block 物理存储 256/4=64 压缩条目,c128a 层存储 256/128=2 压缩条目,SWA 层存储 256 native token。这种设计使 slot mapping、调度器计数和 prefix-hit 检测可以无分支地统一处理。 |
| RNN 类型前向传播 | SWA 层的注意力量化模式通过 Attention SDK 处理,支持 RNN 类型的前向传播。与 vLLM 的 paged attention 框架兼容。 |
启动参数:
1 | # SWA 大小从模型 config 自动读取 |
性能影响:
- 统一 block size 设计消除按压缩比例分支的内存管理开销
- 压缩器状态复用 paged allocator,避免侧缓冲区碎片
- 滑动窗口将 decode attention 计算量固定为 O(128)
版本要求: vLLM 0.8.0+(HybridKVCache),0.24.0+(AMD SWA 兼容)
SGLang 对应配置:
滑动窗口大小从模型 config 自动读取
DeepSeek V4 Flash 的 sliding_window: 128
1 |
|
性能影响:
- 共享 KV 额外 2x 内存节省
- Inverse RoPE + FP8 量化融合 2-3x 加速
- QK Norm 融合减少 1 次 kernel launch
版本要求: vLLM 0.8.0+(共享 KV + inverse RoPE),v0.24.0+(AMD inverse-RoPE 融合)
特性 13:KV 缓存和注意力优化 — 原生量化
vLLM 实现路径:
DeepSeek V4 自带 FP4 MoE 权重和 FP4 indexer cache / FP8 attention cache。vLLM 通过 HybridKVCache 和 TRTLLM-Gen 内核原生支持,无需量化转换。
具体体现:
| 层面 | 实现细节 |
|---|---|
| FP4 MoE 权重 | 模型权重原生为 NVFP4 格式。vLLM 在 Blackwell 上通过 TRTLLM-Gen 内核直接加载和计算,在 Hopper 上通过反量化→FP8 GEMM 路径。官方文档强调应使用模型自带的 FP4+FP8 Instruct checkpoint,无需额外量化。 |
| FP4 Indexer Cache | DSA indexer cache 原生 FP4。vLLM 的 HybridKVCache 将其作为独立的 cache 类型管理,indexer kernel 直接处理 FP4 读取。 |
| FP8 Attention Cache | 注意力 KV cache 使用 fp8_ds_mla 类型,两阶段精度(prefill bf16, decode FP8)。 |
| 零转换流水线 | 权重加载 → TRTLLM-Gen NVFP4 GEMM → FP8 attention(decode)→ FP4 indexer,全程无中间 BF16 转换。vLLM 官方强调”stick with the official checkpoints”——原生量化是模型设计的一部分,不宜进一步压缩。 |
| 社区 INT4 对比 | 有 GGUF/AWQ/GPTQ INT4 量化可将 V4-Flash 压缩至 ~80GB(4x RTX 4090 可跑),但 vLLM 官方警告:官方 FP4+FP8 已经非常 aggressive,进一步到 INT4 会显著损失推理质量,特别是数学和推理任务。 |
启动参数:
1 | # 原生 FP4 权重自动加载 |
性能影响:
- 原生 FP4 MoE 权重节省约 50% 权重显存 vs FP8
- 零转换流水线减少约 15-20% 中间张量显存
- 无需额外量化步骤
版本要求: vLLM 0.8.0+(FP4 权重加载),0.24.0+(完整 FP4 内核)
特性 14:KV 压缩 V2
vLLM 实现路径:
vLLM 的 HybridKVCache 是 DeepSeek V4 KV 压缩架构的核心实现,通过统一 block size 和页面桶(page-size buckets)解决异构压缩的内存管理难题。
具体体现:
| 组件 | 实现细节 |
|---|---|
| c4a / c128a / SWA 三层 | vLLM 将 DeepSeek V4 的注意力层分为三种类型:c4a(4x 压缩,8 token 加权和,stride 4)、c128a(128x 压缩,128 token 加权和,stride 128)、SWA(无压缩,纯滑动窗口)。混合管理是 HybridKVCache 的核心挑战。 |
| 统一逻辑 block = 256 | c4a 层每 block 物理存储 64 压缩条目,c128a 层存储 2 压缩条目,SWA 层存储 256 native token。所有层共享相同的逻辑 block size(256 native token 位置),使调度器和前缀缓存无需按压缩比例分支。 |
| 三页面桶 | vLLM 将五路 cache(c4a 主 KV、c128a 主 KV、SWA KV、C4 indexer KV、压缩器残差)合并为三个页面桶(max/middle/min),每个桶由共享 block pool 支持。运行时无需按类型分区或核算,分配简化为桶查找。 |
| 最大桶 | c4a 主 KV、SWA KV、c4a 压缩器状态、c128a 压缩器状态 |
| 中型桶 | C4 indexer KV、C4 indexer 压缩器状态 |
| 最小桶 | c128a 主 KV |
| 压缩器状态管理 | 每个压缩器层维护一个小滚动残差(partial state)——C4: 8 token(overlapped),C128: 128 token。vLLM 将其作为特殊的 KV cache 条目,利用现有 paged allocator 管理,而非侧缓冲区。 |
| 融合压缩核 | Compressor + RMSNorm + RoPE + cache insertion 融合为单 kernel(1.4-3x 加速)。为 indexer K cache 和 main-attention K cache 保留独立 kernel,使并行策略可针对各自 head dim 调优。 |
| AMD 专属 | AMD ROCm 上有 DSv4 flash-decode split-K kernel(PR #44899)和 inverse-RoPE 融合(PR #45103),Intel XPU 有 DeepSeek-V4 attention/MoE paths(PR #44144, #44517, #45240)。 |
启动参数:
1 | --block-size 256 |
性能影响:
- 统一 block size + 三页面桶消除跨 pool 碎片化
- 压缩器状态复用 paged allocator,避免侧 buffer 碎裂
- Compressor 融合 1.4-3x 加速
版本要求: vLLM 0.8.0+(HybridKVCache),0.24.0+(AMD/Intel 优化完善)
SGLang 对应配置:
KV 压缩 V2 自动启用(模型 config 检测到 DSA 架构时)
–kv-cache-dtype fp8
1 |
|
性能影响:
- torch.compile 图编译提供约 10-15% MHC 路径加速
- 未实现专用 MHC 融合,prefill 中 MHC 路径可能成为瓶颈
版本要求: vLLM 0.8.0+(基础),V1 引擎(torch.compile 通用融合)
D. 调度与延迟优化
SGLang 对应配置:
MHC 融合自动启用(模型 config 检测到 MHC 架构时)
1 |
|
性能影响:
- V1 相比 V0 约 1.5-1.7x 吞吐提升(Llama 3.1 8B/70B)
- Persistent Batch 减少约 30-50% CPU 调度开销
- Piecewise CUDA Graph 减少约 60% 的 graph recapture 频率
版本要求: vLLM 0.8.0+(V1 引擎),0.11.0+(异步调度稳定)
SGLang 对应配置:
异步调度默认启用,无需显式参数
可通过环境变量微调:
SGLANG_SCHEDULE_CONSERVATIVENESS=1.0 # 调度激进程度
1 |
|
性能影响:
- MTP:接受率 >80%,吞吐约 1.8x(vs 无推测解码)
- EAGLE-3:3.0-6.5x 加速(vs 无推测解码),比 EAGLE-2 提升 20-40%
- 代码工作负载:每百万 output token 成本下降 19.4%
- 对比 SGLang:vLLM 推测解码吞吐约为 SGLang 的 71%(297 vs 419 tokens/s,DeepSeek 特定 bench)
版本要求: vLLM 0.8.0+(MTP 基础),0.11.0+(EAGLE-3 多模态),0.24.0+(DFLASH + 完整 tree attention)
E. 结构化输出
SGLang 对应配置:
Spec V2 默认启用,无需显式参数
1 |
|
性能影响:
- XGrammar-2:每 token 约束开销 <40μs(占推理时间的 <1%)
- V1 非阻塞初始化:消除 schema 编译的 engine 阻塞
- vs SGLang:batch size ≥8 时落后约 15-30% 吞吐(mask 生成未重叠)
- Jump Decoding(计划中):结构 token 跳过可减少约 30-50% 生成步数
版本要求: vLLM 0.8.0+(XGrammar),V1 引擎(非阻塞),0.24.0+(XGrammar-2)
F. 运行时与图优化
SGLang 对应配置:
XGrammar 默认启用,无需显式参数
通过 API 使用:
POST /generate body: {“json_schema”: {…}, “text”: “…”}
或
POST /generate body: {“regex”: “…”, “text”: “…”}
1 |
|
性能影响:
- 预编译 wheel 消除 FlashInfer 运行时编译
- Triton 缓存避免重复 JIT,后续启动加速约 50%
- CUDA Graph 捕获 ~10-20s(一次性)
版本要求: vLLM 0.8.0+(基础),0.11.0+(AOT 修复),0.24.0+(Triton 重编译检测)
SGLang 对应配置:
安装预编译 FlashInfer:
DeepGEMM JIT 缓存默认启用:
DEEPGEMM_ENABLE_JIT=1
DEEPGEMM_CACHE_DIR=/path/to/cache
1 |
|
性能影响:
- torch.compile 相比 eager 模式约 10-20% 吞吐提升
- Batch-invariant 减少 80%+ 的图重编译
- 计划中的 MPK megakernel 预计额外 10-15%
版本要求: vLLM 0.11.0+(batch-invariant torch.compile),V1 引擎
SGLang 对应配置:
可选:指定编译后端和优化级别
SGLANG_TORCH_COMPILE_MODE=max-autotune
1 |
|
性能影响:
- Kernel 数从 ~33 降至 ~10
- 单点融合 1.4-20x(取决于融合点)
- 多流并发 5-6% 端到端延迟降低
- Batch size 1 时 1.28x 加速
版本要求: vLLM 0.8.0+(基础融合),V1 引擎(多流并发)
SGLang 对应配置:
注意力融合自动启用(模型 config 检测到 MLA 架构时)
–enable-torch-compile # 配合 torch.compile 进一步优化
1 |
|
性能影响:
- Helion RMSNorm+Quant 融合约 15-25% norm 路径加速
- AMD fused AR+RMSNorm+FP8 quant 约 5-8% 端到端加速
- DeepSeek V4 路径 norm 融合整合在三个融合点中
版本要求: vLLM 0.24.0+(one-shot fused AR + AMD 融合)
G. 长上下文扩展
SGLang 对应配置:
CP 模式下自动启用 AllReduce+RMSNorm 融合
1 |
|
性能影响:
- Mamba-2 O(n) 计算复杂度,长上下文场景内存效率优势显著
- 不支持 Mamba 前缀缓存,多轮对话场景性能不如 SGLang
版本要求: vLLM 0.8.0+(V1 Mamba-1/2),持续扩展中
SGLang 对应配置:
混合架构自动检测,无需显式参数
可配置弹性内存池:
SGLANG_ELASTIC_MEMORY_POOL=1
1 |
|
性能影响:
- APC 在 RAG 场景 88-94% prefill 节省,多轮对话 60-80%
- L2 offload 支持超长上下文(>GPU HBM 容量),PCIe 传输延迟代价
- LMCache MP 跨节点 KV cache 共享
版本要求: vLLM 0.8.0+(基础 APC),0.22.0+(KV offloading),0.24.0+(PD 分离完善)
H. 延迟改进
SGLang 对应配置:
HiCache 默认启用 L1
L2/L3 需要显式配置:
SGLANG_HICACHE_L2_SIZE=64GB # CPU DRAM 缓存大小
SGLANG_HICACHE_L3_URL=redis://… # 远端缓存地址
1 |
|
性能影响:
- RAG 场景:88-94% prefill 节省,TTFT 从 ~1.2s 降至 ~30ms
- 多轮对话:60-80% prefill 节省
- DSA-CP 启用后命中率从 ~0% 恢复到 ~90.9%
版本要求: vLLM 0.8.0+(V1 APC),0.22.1+(SHA-256 hash)
特性 25b:延迟改进 — 推测解码(延迟视角)
vLLM 实现路径:
从延迟角度,vLLM 的 MTP + EAGLE 推测解码与 Persistent Batch 和 CUDA Graph 协同,在每个 decode step 产生 1.85 个有效 token。
具体体现:
| 层面 | 实现细节 |
|---|---|
| 减少 decode 步数 | MTP=1 时,每步输出 ~1.85 个有效 token(接受率 85%),decode 步数减少约 46%。EAGLE-3 可输出更多(取决于 num_speculative_tokens 设置,通常 3-5 个)。 |
| V1 引擎协同 | Persistent Batch 使推测解码的 CPU 开销最小化。CUDA Graph 在 FULL_DECODE_ONLY 模式下将整个 decode path(包括 draft 生成 + target 验证)捕获为单 graph,消除中间 kernel launch 开销。 |
| batch size 敏感 | 推测解码的效果高度依赖 batch size 和 QPS。低 QPS(延迟优先)时 EAGLE/MTP 收益最大,高 QPS(吞吐优先)时收益递减——因为 draft model 的开销在大量请求中被摊销。N-gram 和 suffix 方法在所有 QPS 下提供适度、可预测的收益。 |
| 延迟 vs 吞吐权衡 | 单请求延迟降低约 40-46%(MTP)。高并发(batch=64+)时延迟降低约 25-30%,因为 GPU 已经满载,推测解码的 batch 扩展带来额外开销。 |
性能影响:
- 单请求延迟降低约 40-46%(MTP,接受率 85%)
- 高并发场景 25-30% 延迟降低
- DigitalOcean DSv3.2 benchmark:230 TPS per-user output(with MTP)
版本要求: vLLM 0.8.0+(基础),v0.24.0+(完整 tree attention + DFLASH)
附录:完整启动命令
vLLM 部署 DeepSeek V4 Flash — 全特性启用
1 | vllm serve deepseek-ai/DeepSeek-V4-Flash \ |
FP8 量化部署(非 Blackwell)
1 | vllm serve deepseek-ai/DeepSeek-V4-Flash \ |
LMCache 集成(超长上下文跨节点)
1 | # 先启动 LMCache server |
Docker 一键部署
1 | docker run -d \ |
环境变量配置
1 | # FlashInfer 预编译 |
特性-参数速查表
| 特性 | 启动参数 / 环境变量 | 版本要求 |
|---|---|---|
| MatMul/KV 动态量化 | --kv-cache-dtype fp8_ds_mla --quantization fp8/fp4 | 0.8.0+ |
| EPLB | --enable-expert-parallel | 0.6.6+ |
| FP8 KV Cache | --kv-cache-dtype fp8_ds_mla(必选) | 0.8.0+ |
| DeepGEMM E8M0 | 自动启用(CUTLASS SM90 + DeepGEMM) | 0.11.0+ |
| FP8 注意力 MLA | --kv-cache-dtype fp8_ds_mla(自动选择 FlashMLA) | 0.8.0+ |
| MoE 融合内核 | --compilation-config + 自动融合 | 0.8.0+ |
| 共享专家 | --enable-expert-parallel(自动处理) | 0.6.6+ |
| 细粒度专家 | --enable-expert-parallel --tensor-parallel-size 8 | 0.6.6+ |
| GEMM/MoE 自动调优 | --compilation-config '{"cudagraph_mode":"FULL_DECODE_ONLY"}' | 0.8.0+ |
| 滑动窗口 | 自动(模型 config) | 0.8.0+ |
| 跨层注意力 | 自动(HybridKVCache 管理) | 0.8.0+ |
| 原生量化 | --trust-remote-code(自动检测 FP4 权重) | 0.8.0+ |
| KV 压缩 V2 | --block-size 256(HybridKVCache) | 0.8.0+ |
| MHC 路径融合 | --compilation-config(torch.compile 通用融合) | 0.8.0+ |
| 异步调度 | V1 引擎默认启用 | 0.8.0+ |
| 推测解码 MTP | --speculative-config '{"method":"mtp","num_speculative_tokens":1}' | 0.8.0+ |
| EAGLE-3 | --speculative-config '{"method":"eagle3",...}' | 0.11.0+ |
| XGrammar | --guided-decoding-backend xgrammar | 0.8.0+ |
| FlashInfer 预缓存 | 预编译 wheel + Triton 缓存 | 0.8.0+ |
| torch.compile | V1 引擎默认启用 | 0.8.0+ |
| AllReduce+RMSNorm 融合 | 自动(Helion 内核 + 注意力融合路径) | 0.8.0+ |
| 注意力+量化融合 | 自动(DeepSeek V4 attention 融合) | 0.8.0+ |
| SSM 支持 | 自动(Mamba-1/Mamba-2 架构检测) | 0.8.0+ |
| KV offloading | --kv-transfer-config + --cpu-offload-gb | 0.22.0+ |
| APC 前缀缓存 | --enable-prefix-caching(V1 默认启用) | 0.8.0+ |
| DSA-CP | --enable-dsa-cp | 0.22.0+ |
vLLM vs SGLang 关键差异汇总
| 维度 | vLLM 优势 | SGLang 优势 |
|---|---|---|
| KV Cache 管理 | HybridKVCache + 统一 block size + 三页面桶,解决 DeepSeek V4 异构压缩的最优内存布局 | KV 压缩 V2 + HiCache L1/L2/L3 分层缓存 |
| 前缀缓存 | APC 块级 hash(O(1) 查表,对 batch inference 更友好) | RadixAttention 基数树(对 dynamic branching 更友好) |
| 调度器 | V1 异步调度(追赶中,still catching up) | 零开销批调度器 + Two-Batch Overlap(三重重叠) |
| 推测解码 | 方法更多(EAGLE/N-gram/Suffix + MTP),生态更广 | Spec V2 默认启用,吞吐 419 vs 297 tokens/s(约 1.4x) |
| 结构化输出 | 多后端选择,V1 非阻塞初始化 | XGrammar mask 与 GPU 重叠,batch ≥8 时约 15-30% 吞吐优势 |
| MoE 通信 | 标准 NCCL + FP8/FP4 压缩 | DeepEP 定制通信库 + Two-Batch Overlap |
| Mamba/SSM | 15+ 架构覆盖,最早支持 | Mamba Radix Tree + 弹性内存池(state 复用),Agent 场景更优 |
| 硬件覆盖 | NVIDIA + AMD + Intel XPU + TPU + CPU + 华为 Ascend(最广) | NVIDIA 为主 |
| 生态/模型 | 200+ 架构,最大的开源推理社区 | 快速跟进,DeepSeek Day-0 支持 |
| MHC 路径 | torch.compile 通用融合 | 专用 hc_head/mhc_fused_post_pre 融合 |
| Kernel 数 | ~33 → ~10(与 SGLang 相似的融合策略) | ~33 → ~10(与 vLLM 相似的融合策略) |
| AMD 支持 | AITER Biased Group TopK + AMD fusions(最成熟的 AMD 路径) | 社区贡献为主 |
硬件推荐
| 配置 | 上下文长度 | 所需硬件 | vLLM 参数 |
|---|---|---|---|
| 最小开发 | 128K | 2× H200 141GB 或 4× A100 80GB | --tensor-parallel-size 2 --max-model-len 131072 |
| 生产推荐 | 256K | 4× H200 或 8× A100 | --tensor-parallel-size 4 --max-model-len 262144 |
| 1M 上下文 | 1M | 8× H200 或更多 | --tensor-parallel-size 8 --max-model-len 1048576 |
| Blackwell | 1M | 2× B200 或 1× GB200 NVL | --tensor-parallel-size 2 --quantization fp4 |
版本升级路径建议
| 当前版本 | 目标特性 | 推荐升级至 |
|---|---|---|
| 0.6.x | 基础 EP + FP8 KV + HybridKVCache | 0.8.0 (V1 引擎) |
| 0.8.x | DeepGEMM + EAGLE-3 多模态 + FP4 权重 | 0.11.0 |
| 0.11.x | KV offloading + LMCache + PD 分离 + DSA-CP | 0.22.0 |
| 0.22.x | NVFP4 cute-dsl + MXFP8 + Cluster TopK + SM100 native DSA | 0.24.0 |
注意: DeepSeek V4 Flash 的基本部署需要 vLLM 0.8.0+(hybrid KVCache + fp8_ds_mla 支持)。完整特性需要 0.24.0+。Blackwell 架构上的 FP4 端到端流水线需要 0.24.0+。始终使用官方 tagged release 而非 main/dev 分支(dev 分支存在 FP4 MoE 路由 bug)。
SGLang 对应配置:
FlashInfer 预编译
DeepGEMM JIT 缓存
export DEEPGEMM_ENABLE_JIT=1
export DEEPGEMM_CACHE_DIR=/opt/deepgemm_cache
HiCache L2/L3
export SGLANG_HICACHE_L2_SIZE=64GB
export SGLANG_HICACHE_L3_URL=redis://cache-server:6379
自动调优
export FLASHINFER_AUTOTUNE=1
export FLASHINFER_AUTOTUNE_CACHE_DIR=/opt/flashinfer_cache
MoE 后端
export SGLANG_MOE_BACKEND=deep_gemm # prefill 高吞吐
1 |
|
FP8 量化部署(非 Blackwell)
1 | vllm serve deepseek-ai/DeepSeek-V4-Flash \ |
LMCache 集成(超长上下文跨节点)
1 | # 先启动 LMCache server |
SGLang 部署 DeepSeek V4 Flash — 全特性启用
1 | python -m sglang.launch_server \ |
Docker 一键部署
1 | docker run -d \ |
环境变量配置
1 | # FlashInfer 预编译 |
特性-参数速查表
| 特性 | 启动参数 / 环境变量 | 版本要求 |
|---|---|---|
| MatMul/KV 动态量化 | --kv-cache-dtype fp8_ds_mla --quantization fp8/fp4 | 0.8.0+ |
| EPLB | --enable-expert-parallel | 0.6.6+ |
| FP8 KV Cache | --kv-cache-dtype fp8_ds_mla(必选) | 0.8.0+ |
| DeepGEMM E8M0 | 自动启用(CUTLASS SM90 + DeepGEMM) | 0.11.0+ |
| FP8 注意力 MLA | --kv-cache-dtype fp8_ds_mla(自动选择 FlashMLA) | 0.8.0+ |
| MoE 融合内核 | --compilation-config + 自动融合 | 0.8.0+ |
| 共享专家 | --enable-expert-parallel(自动处理) | 0.6.6+ |
| 细粒度专家 | --enable-expert-parallel --tensor-parallel-size 8 | 0.6.6+ |
| GEMM/MoE 自动调优 | --compilation-config '{"cudagraph_mode":"FULL_DECODE_ONLY"}' | 0.8.0+ |
| 滑动窗口 | 自动(模型 config) | 0.8.0+ |
| 跨层注意力 | 自动(HybridKVCache 管理) | 0.8.0+ |
| 原生量化 | --trust-remote-code(自动检测 FP4 权重) | 0.8.0+ |
| KV 压缩 V2 | --block-size 256(HybridKVCache) | 0.8.0+ |
| MHC 路径融合 | --compilation-config(torch.compile 通用融合) | 0.8.0+ |
| 异步调度 | V1 引擎默认启用 | 0.8.0+ |
| 推测解码 MTP | --speculative-config '{"method":"mtp","num_speculative_tokens":1}' | 0.8.0+ |
| EAGLE-3 | --speculative-config '{"method":"eagle3",...}' | 0.11.0+ |
| XGrammar | --guided-decoding-backend xgrammar | 0.8.0+ |
| FlashInfer 预缓存 | 预编译 wheel + Triton 缓存 | 0.8.0+ |
| torch.compile | V1 引擎默认启用 | 0.8.0+ |
| AllReduce+RMSNorm 融合 | 自动(Helion 内核 + 注意力融合路径) | 0.8.0+ |
| 注意力+量化融合 | 自动(DeepSeek V4 attention 融合) | 0.8.0+ |
| SSM 支持 | 自动(Mamba-1/Mamba-2 架构检测) | 0.8.0+ |
| KV offloading | --kv-transfer-config + --cpu-offload-gb | 0.22.0+ |
| APC 前缀缓存 | --enable-prefix-caching(V1 默认启用) | 0.8.0+ |
| DSA-CP | --enable-dsa-cp | 0.22.0+ |
vLLM vs SGLang 关键差异汇总
| 维度 | vLLM 优势 | SGLang 优势 |
|---|---|---|
| KV Cache 管理 | HybridKVCache + 统一 block size + 三页面桶,解决 DeepSeek V4 异构压缩的最优内存布局 | KV 压缩 V2 + HiCache L1/L2/L3 分层缓存 |
| 前缀缓存 | APC 块级 hash(O(1) 查表,对 batch inference 更友好) | RadixAttention 基数树(对 dynamic branching 更友好) |
| 调度器 | V1 异步调度(追赶中,still catching up) | 零开销批调度器 + Two-Batch Overlap(三重重叠) |
| 推测解码 | 方法更多(EAGLE/N-gram/Suffix + MTP),生态更广 | Spec V2 默认启用,吞吐 419 vs 297 tokens/s(约 1.4x) |
| 结构化输出 | 多后端选择,V1 非阻塞初始化 | XGrammar mask 与 GPU 重叠,batch ≥8 时约 15-30% 吞吐优势 |
| MoE 通信 | 标准 NCCL + FP8/FP4 压缩 | DeepEP 定制通信库 + Two-Batch Overlap |
| Mamba/SSM | 15+ 架构覆盖,最早支持 | Mamba Radix Tree + 弹性内存池(state 复用),Agent 场景更优 |
| 硬件覆盖 | NVIDIA + AMD + Intel XPU + TPU + CPU + 华为 Ascend(最广) | NVIDIA 为主 |
| 生态/模型 | 200+ 架构,最大的开源推理社区 | 快速跟进,DeepSeek Day-0 支持 |
| MHC 路径 | torch.compile 通用融合 | 专用 hc_head/mhc_fused_post_pre 融合 |
| Kernel 数 | ~33 → ~10(与 SGLang 相似的融合策略) | ~33 → ~10(与 vLLM 相似的融合策略) |
| AMD 支持 | AITER Biased Group TopK + AMD fusions(最成熟的 AMD 路径) | 社区贡献为主 |
硬件推荐
| 配置 | 上下文长度 | 所需硬件 | vLLM 参数 |
|---|---|---|---|
| 最小开发 | 128K | 2× H200 141GB 或 4× A100 80GB | --tensor-parallel-size 2 --max-model-len 131072 |
| 生产推荐 | 256K | 4× H200 或 8× A100 | --tensor-parallel-size 4 --max-model-len 262144 |
| 1M 上下文 | 1M | 8× H200 或更多 | --tensor-parallel-size 8 --max-model-len 1048576 |
| Blackwell | 1M | 2× B200 或 1× GB200 NVL | --tensor-parallel-size 2 --quantization fp4 |
版本升级路径建议
| 当前版本 | 目标特性 | 推荐升级至 |
|---|---|---|
| 0.6.x | 基础 EP + FP8 KV + HybridKVCache | 0.8.0 (V1 引擎) |
| 0.8.x | DeepGEMM + EAGLE-3 多模态 + FP4 权重 | 0.11.0 |
| 0.11.x | KV offloading + LMCache + PD 分离 + DSA-CP | 0.22.0 |
| 0.22.x | NVFP4 cute-dsl + MXFP8 + Cluster TopK + SM100 native DSA | 0.24.0 |
注意: DeepSeek V4 Flash 的基本部署需要 vLLM 0.8.0+(hybrid KVCache + fp8_ds_mla 支持)。完整特性需要 0.24.0+。Blackwell 架构上的 FP4 端到端流水线需要 0.24.0+。始终使用官方 tagged release 而非 main/dev 分支(dev 分支存在 FP4 MoE 路由 bug)。

