发表时间: 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 容量翻倍,还能将注意力算子的显存访问压力直接减半,从而进一步提升长文本请求的服务速度。
DeepSeek稀疏注意力(DSA)的设计原理:为了解锁长上下文的效率,DeepSeek-V3.2的核心引入了DSA。DSA摒弃了执行二次方的全注意力计算,转而引入了以下两个核心组件:
复杂度优化与质量保持:通过上述架构设计,DSA成功将核心注意力计算的复杂度从$O(L^2)$大幅降低至$O(Lk)$。这一机制使得模型在高达128K上下文长度下,依然能实现训练和推理效率的显著提升,且模型质量的损失微乎其微。
key&key_scale缓存。原生稀疏注意力后端的构建:SGLang开发了一个全新的原生稀疏注意力(Native Sparse Attention, NSA)后端。该后端是专门为稀疏工作负载量身定制的,其内部集成了两大核心算子:
异构页面大小的动态缓存管理:在工程实现中,SGLang解决了一个关键的技术挑战,即在一个统一的注意力后端内支持不同的页面大小(page sizes)。具体而言:
key&key_scale缓存需要设置页面大小为64。系统级优化效果:综合上述技术创新,SGLang使得DeepSeek-V3.2-Exp模型能够充分利用GPU优化的稀疏注意力计算以及动态缓存管理。这不仅大幅削减了内存开销,还实现了向128K长上下文的无缝扩展。最终的运行时系统在保留最先进推理质量的同时,显著降低了推理成本,使得长上下文大语言模型(LLM)的大规模部署兼具可行性与实用性。
deepseek-ai/DeepSeek-V3.2-Exp。sglang.launch_server。lmsysorg/sglang:v0.5.3-cu129。配置张量并行度(TP)为8,数据并行度(DP)为8,并启用DP注意力机制。lmsysorg/sglang:dsv32-rocm。关闭NSA的Top-k融合与FP8 KV Cache存储,强制使用真实索引器与TileLang预填充(通过环境变量控制)。启动时禁用CUDA图,设置TP为8,静态内存占比0.85,明确指定页面大小为64(--page-size 64)。预填充后端指定为tilelang,解码后端可指定为aiter或tilelang。dsv32-a2或dsv32-a3。指定注意力后端为Ascend(--attention-backend ascend),启用W8A8 INT8量化(--quantization w8a8_int8),设置TP为16,静态内存占比0.85,分块预填充大小为32768,并禁用基数缓存(radix cache)。# 默认环境启动代码
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
本文档为技术支持发布说明,侧重于系统集成与理论性能上限描述:
SGLang通过集成闪电索引器和原生稀疏注意力后端,成功在首日实现了对DeepSeek-V3.2的高效支持,证明了长上下文LLM的大规模低成本部署具备极高的可行性。
针对未来的工作路线图【3】,SGLang计划实现以下功能:
引用文献汇总: