行业落地分享:SGLang高效开源的 LLM 服务框架


行业落地分享:SGLang高效开源的 LLM 服务框架

仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接

SGLang不仅仅是一个普通的推理引擎,在处理大规模LLM服务时表现出卓越的速度和效率。值得一提的是,它是首个接近并几乎匹配DeepSeek官方博客所报告的大规模吞吐量的开源实现。
SGLang的设计理念也备受推崇。其优雅、轻量级且可定制的设计吸引了广泛的采纳,无论是学术界、大型科技公司(如XAI、NVIDIA、AMD、Baseten、Microsoft、LinkedIn等)还是初创企业,都纷纷选择SGLang作为其LLM服务的基础设施。
尤其值得关注的是,在在策略(on-policy)的强化学习与人类反馈(RLHF)领域,推理引擎的效率对于策略模型的有效执行至关重要。SGLang在这方面表现出色,其高性能解决方案使其成为RLHF工作流中不可或缺的组成部分,显著提升了模型训练和部署的效率。
SGLang的诞生源于对更高效LLM服务引擎的迫切需求,并引入了结构化语言模型编程范式,使开发者能够更灵活地控制模型生成。
实现了实现了对输入前缀的高效缓存,显著减少重复计算,提升推理速度。并引入了能够根据特定语法或格式生成输出的能力,确保模型输出的准确性和可用性。
2023年12月-2024年2月:奠定基础
2024年7月:Llama3性能领先
2024年9月:v0. 3版本发布,多项突破
2024年12月:v0. 4版本发布,更极致的效率
2025年1月:DeepSeekV3/R1Day-One支持
2025年5月:DeepSeekV3/R1专家并行与预填充-解码分离
RadixAttention的核心能力在于实现高效的前缀匹配、插入和逐出。
高效的前缀匹配(efficientprefixmatching):当新的输入到来时,RadixAttention可以快速地识别出与现有缓存前缀的匹配部分,避免重复计算。这对于像多轮对话、批量推理中共享相同开头的部分,以及在生成过程中回溯(例如在BeamSearch中)的场景至关重要。
插入(insertion):新生成的Tokens和新的前缀可以高效地插入到RadixAttention的数据结构中,保持结构的完整性和可查询性。
逐出(eviction):当缓存内存达到上限或某个前缀不再需要时,RadixAttention能够智能地逐出(evict)不再活跃或最不常用的前缀,从而优化内存使用,确保高效率。
传统的自回归解码方式,模型每次只能生成一个Token,效率较低。推测解码(SpeculativeDecoding)是一种SOTA(State-Of-The-Art)的算法,旨在通过使用一个更小、更快的“草稿模型”(draftmodel)来预测未来可能生成的多个Token,然后让主模型(大模型)一次性验证这些预测。如果预测正确,则可以跳过多个步骤,大幅提升解码速度。
SGLang在推测解码方面取得了显著进展,特别是在与Eagle模型的集成上:
对Eagle-2和Eagle-3的支持:SGLang不仅支持Eagle-2推测解码算法,更是首个与EAGLE团队合作支持EAGLE-3推测解码的开源框架。这体现了SGLang紧跟前沿研究,并将其转化为实际性能提升的能力。
性能飞跃:
在Llama38B模型上,SGLang结合Eagle-2实现了1. 6倍的解码加速。
而结合Eagle-3,更是达到了惊人的2. 4倍解码加速(针对单个请求)。
SGLang不仅支持通用的推测解码算法,还针对特定模型架构进行了深度优化。其中一个显著的例子就是对DeepSeekV3Multi-TokenPrediction(MTP)的实现。MTP是一种专为DeepSeekV3设计的推测解码策略,旨在进一步提升其解码速度。
基准测试设置:在H200TP8(TensorParallelism8)的环境下进行。
无推测解码vs. EAGLE-2启用的推测解码:
BatchSize=1(单请求):当没有启用推测解码时,解码速度约为40tokens/s。而启用EAGLE-2辅助的MTP推测解码后,解码速度提升至约60tokens/s。这意味着单请求速度提高了1. 8倍。
BatchSize=32(批量请求):在批量处理32个请求时,未启用推测解码的解码速度约为20tokens/s。启用EAGLE-2辅助的MTP推测解码后,解码速度提升至约30tokens/s。这表明批量请求速度提高了1. 5倍。
在LLM生成结构化数据(如JSON、XML、代码等)时,确保输出遵循特定语法规则是至关重要的。约束解码是实现这一目标的关键,而SGLang通过与XGrammar的零开销集成,将约束解码的效率提升到了新的高度。
下图展示了SGLang与XGrammar集成后的CPU/GPU协作流程:
顶部:未集成XGrammar的流程,可以看到CPU和GPU之间存在更多的同步和数据传输。
底部:集成XGrammar后的流程。关键在于MaskGen(掩码生成)和ApplyMask(应用掩码)步骤被高度优化并与LLM的预填充(Prefilling)和解码(Decoding)过程紧密结合。“零开销”的含义是,XGrammar的语法检查和掩码生成过程被设计得非常轻量且高效,它们能够与GPU上的LLM推理计算并行或以最小的开销进行,从而避免了显著的性能瓶颈。
在LLM的推理过程中,通常涉及到两个主要阶段:
预填充(Prefill)阶段:处理输入提示(prompt),计算所有输入Token的KV缓存(Key-ValueCache),这是一个计算密集型操作,通常涉及较长的序列。
解码(Decode)阶段:基于已有的KV缓存,逐个生成输出Token,直到达到停止条件。这是一个内存访问密集型操作,通常涉及较短的序列。
SGLang识别并解决了非分离模式下的以下核心问题:
预填充中断(PrefillInterruption)
DP注意力不均衡(DPAttentionImbalance)
与DeepEP不兼容(IncompatiblewithDeepEP)
为了克服传统非分离模式的挑战,SGLang提出了创新的PDDisaggregation架构。核心思想是将预填充(Prefill)和解码(Decode)任务在物理上分离,由独立的计算实例组负责,并通过高效的通信机制进行协调。
SGLang提供了对非阻塞(non-blocking)和基于RDMA(RemoteDirectMemoryAccess)的KV传输支持。非阻塞传输意味着在数据传输过程中,计算不会被阻塞,从而提高并发性;RDMA进一步提升了数据传输的速度和效率,尤其是在高性能计算环境中。
SGLang在这方面的成就,体现在能够复现DeepSeek官方博客中报告的高性能,这证明了SGLang在EP模型服务上的领先能力和优化水平。

Two-BatchOverlap(TBO)是一种常见的优化技术,旨在通过在处理一个批次数据的同时,并行地进行下一个批次的数据通信,从而实现计算和通信的同时执行。这有助于隐藏通信延迟,提高GPU的利用率。
为了充分发挥TBO的潜力,必须采用正确的启动顺序。上图(b)展示了TBO的正确启动顺序:
正确的启动顺序:核心思想是在启动阻塞CPU的通信任务之前,先将计算任务提交到GPU。
在图中,可以看到ATTN和MLP等计算任务被安排在Dispatch通信任务之前或并行启动。
这确保了GPU能够持续忙碌。当CPU正在处理Dispatch相关的同步时,GPU已经开始或正在执行之前提交的计算任务。
在LLM服务中,如何高效地管理和访问KV缓存是决定性能的关键。SGLang采用了创新的分层缓存设计,结合了精妙的调度和负载均衡机制,以应对大规模部署的挑战。
请求队列(RequestQueue)与调度器(Scheduler)所有传入的请求首先进入一个“请求队列”。
GPUExecutor负责在GPU上执行实际的LLM计算(例如注意力计算、FFN等)。
缓存控制器(CacheController)与HiRadixTree

添加下面微信领取原始PDF
添加👇微信拉你进群


文章作者: ZejunCao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ZejunCao !
  目录