SGLang Day 0 Support for DeepSeek-V3.2 with Sparse Attention
SGLang Day 0 Support for DeepSeek-V3.2 with Sparse Attention
发表时间: 2025-09 · Blog post by The SGLang Team (lmsys.org)
原文: https://lmsys.org/blog/2025-09-29-deepseek-V32
作者/机构:The SGLang Team
发布日期:2025年9月29日
速读
一句话结论
SGLang 推理框架在零日(Day 0)实现了对 DeepSeek-V3.2 模型的全面支持,通过在底层深度集成细粒度的 DeepSeek Sparse Attention (DSA) 机制与专属稀疏算子,在保持模型推理质量的同时,大幅降低了长上下文场景下的显存开销与计算成本。
要解决什么问题
大语言模型在处理长上下文(例如高达 128K 长度的文本)时,传统的全注意力(Full Attention)机制面临着极其严重的效率与显存卡点。全注意力机制的底层逻辑要求,序列中的每一个查询(Query)都必须与上下文中所有的键值对(Key-Value)进行点积计算。这种机制导致其计算复杂度和显存访问量随着输入序列长度的增加呈二次方级数爆炸,即复杂度为 $O(L^2)$。在实际的工程部署中,这种二次方增长会直接导致两个致命问题:一是 KV Cache 占用的显存空间迅速耗尽,使得单张或多张 GPU 无法容纳更长的上下文;二是注意力层的计算延迟急剧上升,导致推理吞吐量大幅下降。因此,如何在不牺牲模型原有推理质量的前提下,从底层机制上打破 $O(L^2)$ 的计算与访存瓶颈,是长文本大模型从理论走向大规模实际部署所必须解决的核心卡点。
怎么做的
核心思路是摒弃全局的二次方计算,采用细粒度的稀疏注意力机制(DeepSeek Sparse Attention,简称 DSA),将核心注意力计算的复杂度从 $O(L^2)$ 强行降至 $O(Lk)$。为了让这一算法层面的突破在硬件上真正落地,该方案由模型算法设计与推理框架底层的深度工程优化共同构成。
在算法机制层面,DSA 引入了两个关键部件。首先是闪电索引器(Lightning Indexer),这是一个采用极低精度(FP8)运行的超轻量级打分器,它的职责是为每一个查询快速扫描并筛选出上下文中相关性最高的历史 Token。其次是 Top-k Token 选择机制,它根据索引器给出的打分结果,只保留对当前预测影响最大的前 $k$ 个键值对参与最终的注意力前向计算,从而在机制上直接截断了海量的冗余计算。
在 SGLang 框架的工程实现层面,开发团队构建了专为稀疏工作负载定制的原生稀疏注意力(NSA)后端。该后端直接集成了 DeepSeek 官方高度优化的多查询注意力算子 FlashMLA,并适配了 FlashAttention-3 Sparse 算子以最大化内核代码的复用率。为了支撑闪电索引器的极速运行,SGLang 在显存池中为其专门开辟了独立的 key&key_scale 缓存。这里包含一个极具挑战性的动态缓存管理设计:由于 DeepSeek 提供的底层算子要求索引器缓存的分页大小(Page Size)必须严格设置为 64,而 Token 级别的稀疏前向计算算子又要求分页大小必须为 1,SGLang 在同一个注意力后端中实现了对多种不同分页大小的兼容与动态管理。这种 GPU 级别的优化与动态缓存调度,确保了稀疏注意力机制能够无缝扩展至极长的上下文。
效果如何
该工程实现主要针对基于 DeepSeek-V3.1-Terminus 继续训练而来的 DeepSeek-V3.2-Exp 模型进行了推理部署与验证。在硬件与实验设置方面,SGLang 提供了广泛的跨平台支持:在标准 GPU 环境下,采用 8 路张量并行(TP=8)与 8 路数据并行(DP=8)进行部署;在 AMD 硬件(MI350X/MI355X)上,系统配置了 0.85 的静态显存比例,并结合 TileLang 进行 Prefill 阶段计算,结合 AITer 进行 Decode 阶段计算;在 NPU 硬件(A2/A3)上,则启用了 Ascend 注意力后端,设置了 32768 的分块预填充大小以及 w8a8_int8 量化。
在高达 128K 的长上下文设置下,该方案被证明能够显著降低内存开销并大幅削减推理成本,同时对模型推理质量的损耗微乎其微。由于本文档为推理框架的零日发布说明,作者并未设置传统的基线方法进行严格的量化对比,而是侧重于验证该机制在不同硬件上的工程可用性。在局限性与未来演进方面,作者坦言当前的实现仍有优化空间:目前尚未支持多 Token 预测(MTP),这在小批次(Batch Size)解码时会限制速度上限;同时,系统目前仍使用传统的 BF16 KV Cache,未来计划引入 FP8 KV Cache,这不仅能将 KV Cache 的 Token 容量翻倍,还能将注意力算子的显存访问压力直接减半,从而进一步提升长文本请求的服务速度。
A1 主要贡献
- 实现Day 0级支持:SGLang推理引擎在发布首日即全面实现了对DeepSeek-V3.2模型的支持。
- 技术演进与架构创新:根据DeepSeek技术报告【1】,DeepSeek-V3.2是在DeepSeek-V3.1-Terminus的基础上,通过持续训练引入了DeepSeek稀疏注意力机制(DeepSeek Sparse Attention, DSA)【2】。
- 长上下文效率突破:DSA由闪电索引器(lightning indexer)驱动,实现了细粒度的稀疏注意力机制。该创新在长上下文(long-context)场景下,为模型的训练和推理阶段均带来了显著的效率提升。
A3 背景知识与设计原则
- 传统注意力机制的复杂度瓶颈:在处理长上下文时,传统的注意力机制需要对所有Token执行完整的注意力计算,其计算复杂度与上下文长度呈二次方关系,即$O(L^2)$。这导致了极高的内存占用和计算开销。
-
DeepSeek稀疏注意力(DSA)的设计原理:为了解锁长上下文的效率,DeepSeek-V3.2的核心引入了DSA。DSA摒弃了执行二次方的全注意力计算,转而引入了以下两个核心组件:
- 闪电索引器(Lightning Indexer):这是一个超轻量级的FP8评分器(scorer),其作用是为每一个查询(query)精准识别出最相关的Token。
- Top-k Token选择机制(Top-k Token Selection):基于索引器的评分结果,该机制确保计算资源仅仅集中在最具影响力的键值(key-value)条目上。
-
复杂度优化与质量保持:通过上述架构设计,DSA成功将核心注意力计算的复杂度从$O(L^2)$大幅降低至$O(Lk)$。这一机制使得模型在高达128K上下文长度下,依然能实现训练和推理效率的显著提升,且模型质量的损失微乎其微。
A2 方法细节
- SGLang对DSA的系统级支持与集成:为了在推理端落地这一突破性技术,SGLang在系统中进行了深度的定制与集成。首先,系统实现了闪电索引器支持(Lightning Indexer Support)。为了实现超快速的Token评分,SGLang在内存池(memory pool)中为索引器分配了专用的
key&key_scale缓存。 -
原生稀疏注意力后端的构建:SGLang开发了一个全新的原生稀疏注意力(Native Sparse Attention, NSA)后端。该后端是专门为稀疏工作负载量身定制的,其内部集成了两大核心算子:
- FlashMLA:这是DeepSeek官方提供的高度优化的多查询注意力内核(multi-query attention kernel)。
- FlashAttention-3 Sparse:SGLang对其进行了深度适配,以确保与系统的兼容性并实现最大化的内核重用(kernel reuse)。
-
异构页面大小的动态缓存管理:在工程实现中,SGLang解决了一个关键的技术挑战,即在一个统一的注意力后端内支持不同的页面大小(page sizes)。具体而言:
- 根据DeepSeek提供的内核要求,索引器所使用的
key&key_scale缓存需要设置页面大小为64。 - 而Token级别的稀疏前向算子(sparse forward operator)则要求页面大小必须为1。
SGLang通过精细的内存管理逻辑,成功兼容了这两种异构的页面大小需求。
- 根据DeepSeek提供的内核要求,索引器所使用的
-
系统级优化效果:综合上述技术创新,SGLang使得DeepSeek-V3.2-Exp模型能够充分利用GPU优化的稀疏注意力计算以及动态缓存管理。这不仅大幅削减了内存开销,还实现了向128K长上下文的无缝扩展。最终的运行时系统在保留最先进推理质量的同时,显著降低了推理成本,使得长上下文大语言模型(LLM)的大规模部署兼具可行性与实用性。
A4 实验环境
- 模型配置:
deepseek-ai/DeepSeek-V3.2-Exp。 - 软件环境:基于Docker容器化部署,Python启动
sglang.launch_server。 - 硬件平台与启动参数:
- NVIDIA GPU (默认配置):使用镜像
lmsysorg/sglang:v0.5.3-cu129。配置张量并行度(TP)为8,数据并行度(DP)为8,并启用DP注意力机制。 - AMD GPU (MI350X/MI355X):使用镜像
lmsysorg/sglang:dsv32-rocm。关闭NSA的Top-k融合与FP8 KV Cache存储,强制使用真实索引器与TileLang预填充(通过环境变量控制)。启动时禁用CUDA图,设置TP为8,静态内存占比0.85,明确指定页面大小为64(--page-size 64)。预填充后端指定为tilelang,解码后端可指定为aiter或tilelang。 - NPU (A2/A3架构):分别使用镜像
dsv32-a2或dsv32-a3。指定注意力后端为Ascend(--attention-backend ascend),启用W8A8 INT8量化(--quantization w8a8_int8),设置TP为16,静态内存占比0.85,分块预填充大小为32768,并禁用基数缓存(radix cache)。
- NVIDIA GPU (默认配置):使用镜像
# 默认环境启动代码
docker pull lmsysorg/sglang:v0.5.3-cu129
python -m sglang.launch_server --model deepseek-ai/DeepSeek-V3.2-Exp --tp 8 --dp 8 --enable-dp-attention
# AMD (MI350X/MI355X) 启动代码
docker pull lmsysorg/sglang:dsv32-rocm
SGLANG_NSA_FUSE_TOPK=false SGLANG_NSA_KV_CACHE_STORE_FP8=false SGLANG_NSA_USE_REAL_INDEXER=true SGLANG_NSA_USE_TILELANG_PREFILL=True python -m sglang.launch_server --model-path deepseek-ai/DeepSeek-V3.2-Exp --disable-cuda-graph --tp 8 --mem-fraction-static 0.85 --page-size 64 --nsa-prefill "tilelang" --nsa-decode "aiter"
SGLANG_NSA_FUSE_TOPK=false SGLANG_NSA_KV_CACHE_STORE_FP8=false SGLANG_NSA_USE_REAL_INDEXER=true SGLANG_NSA_USE_TILELANG_PREFILL=True python -m sglang.launch_server --model-path deepseek-ai/DeepSeek-V3.2-Exp --disable-cuda-graph --tp 8 --mem-fraction-static 0.85 --page-size 64 --nsa-prefill "tilelang" --nsa-decode "tilelang"
# NPU (A2/A3) 启动代码
# NPU A2
docker pull lmsysorg/sglang:dsv32-a2
# NPU A3
docker pull lmsysorg/sglang:dsv32-a3
python3 -m sglang.launch_server --model-path deepseek-ai/DeepSeek-V3.2-Exp --trust-remote-code --attention-backend ascend --mem-fraction-static 0.85 --chunked-prefill-size 32768 --disable-radix-cache --tp-size 16 --quantization w8a8_int8
A4 实验结果
本文档为技术支持发布说明,侧重于系统集成与理论性能上限描述:
- 复杂度降低:成功在工程上将注意力计算复杂度由$O(L^2)$降低至$O(Lk)$。
- 上下文扩展能力:系统能够无缝扩展并支持高达128K的上下文长度。
- 开销与质量:在微乎其微的模型质量损失下,显著削减了内存开销并大幅降低了推理成本。
A5 结论
SGLang通过集成闪电索引器和原生稀疏注意力后端,成功在首日实现了对DeepSeek-V3.2的高效支持,证明了长上下文LLM的大规模低成本部署具备极高的可行性。
针对未来的工作路线图【3】,SGLang计划实现以下功能:
- 多Token预测(Multi-token prediction, MTP)支持:即将推出。MTP将显著加速解码过程,该特性在批处理大小(batch size)较小时效果尤为明显。
- FP8 KV缓存(FP8 KV Cache):相较于传统的BF16 KV缓存,引入FP8将使KV缓存中可容纳的Token数量几乎翻倍,同时将注意力内核的内存访问压力减半。这将使得系统能够以更快的速度处理更长的上下文或服务更多的并发请求。
- TileLang支持:进一步完善TileLang内核的支持,以提供更加灵活的系统开发能力。
A7 补充细节
- 致谢:开发团队特别感谢DeepSeek团队对开源模型研究的杰出贡献,以及他们提供的高效内核(现已集成至SGLang推理引擎中)。同时感谢SGLang社区的Tom Chen、Ziyi Xu、Liangsheng Yin等十余位开发者的代码贡献。此外,感谢NVIDIA、AMD和Nebius Cloud在开发过程中提供的GPU计算资源赞助。
引用文献汇总:
- 【1】DeepSeek-V3.2-Exp Technical Report (URL: https://github.com/deepseek-ai/DeepSeek-V3.2-Exp/blob/main/DeepSeek_V3_2.pdf)。引用段落 :A1 主要贡献。原文描述其为揭示DeepSeek-V3.2模型架构与训练细节的技术报告。
- 【2】DeepSeek Sparse Attention (DSA) (URL: https://arxiv.org/pdf/2502.11089)。引用段落 :A1 主要贡献。原文描述其为通过持续训练引入的细粒度稀疏注意力机制。
- 【3】SGLang Roadmap (URL: https://github.com/sgl-project/sglang/issues/11060)。引用段落 :A1 主要贡献,A5 结论。原文描述其用于追踪SGLang即将推出的未来特性。
💬 评论讨论
欢迎在这里分享您的想法和见解!