发布时间:2025-05-15 点此:209次
修正:Aeneas 好困
【新智元导读】近来,来自SGLang、英伟达等组织的联合团队发了一篇万字技能陈述:短短4个月,他们就让DeepSeek-R1在H100上的功用进步了26倍,吞吐量已十分挨近DeepSeek官博数据!
DeepSeek的含金量还在上升。
就在最近,Hugging Face联创、首席科学家Thomas Wolf表明——
DeepSeek的呈现,是开源AI范畴的ChatGPT时刻!
用他的话说,「正如ChatGPT让全世界认识到AI的存在,DeepSeek则让全世界意识到,本来还有着这样一个充满活力的开源社区。」
DeepSeek-R1的功用现已比美乃至逾越美国最顶尖的闭源AI模型,关于全球AI圈来说,这件事的含义都极端深远。
与此一起,来自SGLang、英伟达等组织的数十人联合团队,也在DeepSeek上整了个大活。
在短短4个月内,他们运用最新的SGLang推理优化,直接让DeepSeek-R1在H100上的功用进步了26倍!
这是怎样做到的?
团队发布了长篇博文,详细展示了这一进程。
文章地址:https://lmsys.org/blog/2025-05-05-large-scale-ep/
在96块H100 GPU上优化布置DeepSeek
要知道,DeepSeek模型因为巨大的参数,以及多头潜注意力(MLA)和专家混合机制(MoE)等共同架构,假如想要大规划布置,就有必要运用更先进的体系。
为此,团队先是对SGLang进行了全面晋级,完好支撑了PD别离、大规划EP、DeepEP、DeepGEMM及EPLB等功用。
然后凭仗这些新特性,成功地在12个节点共96块GPU的集群上,复现了DeepSeek的推理体系。
终究,在处理2000个token的输入序列时,完结了每个节点每秒52.3k输入token和22.3k输出token的吞吐量。
计划运转在Atlas Cloud的12个节点上,每个节点均装备8块H100 GPU
团队表明,这应该是首个吞吐量挨近DeepSeek官方数据的开源完结。
在本地环境下布置此计划,本钱可降至0.20美元/1M输出token,约为DeepSeek Chat API官方定价的五分之一。
相较于运用相同资源的原始张量并行战略,此优化计划可将输出吞吐量进步高达5倍。
接下来,团队深入探讨了他们的并行规划、优化办法以及终究作用。
并行规划
高效的并行化规划,关于操控DeepSeek架构的核算杂乱度和内存需求至关重要。
针对以下要害组件,团队都给出了优化计划:注意力层、稠密前馈网络(FFN)、稀少FFN以及言语模型(LM)的头部。
每个组件都选用了专门规划的并行化战略,以进步可扩展性、内存功率和全体功用。
注意力层
DeepSeek选用了多头潜注意力机制(MLA),然后不能自制有用地对输入序列中的杂乱依靠联系进行建模。
为了优化这一机制,团队完结了DP attention,这是一种数据并行战略,意图是消除跨设备的KV缓存冗余,然后明显下降内存开支。
在SGLang v0.4版别中引进的该办法,现已扩展至支撑混合数据并行和张量并行,为高效处理小批量数据供给了更大的灵敏性。
稠密FFN
即便DeepSeek-V3仅运用了三个稠密FFN层,其核算进程依然或许明显添加峰值内存占用,若不加以慎重办理,极易导致体系溃散。
为了处理这个问题,团队挑选选用数据并行(DP)战略,而非张量并行(TP),首要是考虑到DP的以下优势。
· 更强的可扩展性
傍边间层维度为18,432时,较高的TP度(例如TP32)会导致数据被低效地分割成小单元片段(例如576个单元),而这些单元无法被128整除。
128,便是现代GPU(如H100)常见的对齐鸿沟。
这种未对齐的状况,会严峻阻止核算功率和内存运用率。
比较之下,DP不能自制防止数据碎片化,然后供给更具可扩展性的处理计划,保证跨设备的喜欢负载均衡分配。
· 优化的内存功率
传统观念以为,TP不能自制跟着worker size的添加而下降内存运用量,但这种优势在DP attention的运用场景下会逐步削弱。
在纯TP设置中,单层Transformer模型的内存需求与DP size的联系如下:
其间,
是每个设备(DP rank)上躲藏状况的巨细,
是模型参数的数量,k是一个系数,表明来自CUDA Graph仿制的额定内存开支。
经过假定DP=TP,当
时,此内存的运用函数到达最小值。
DeepSeek-V3运用18,432的中心巨细。在prefill阶段,CUDA Graph一般被禁用,因而k=0。
可是,每个设备的token巨细很简单超越2,048,导致最佳TP巨细为3或更小。
在解码阶段,一个实践的装备或许运用每个设备128个token,并设置k=3。在这种状况下,内存最佳的TP巨细为6。
在这两个阶段,较低的TP度不能自制最大极限地削减每个设备的内存运用量。
因而,与仅依靠TP比较,DP不能自制供给更节约内存的扩展办法。
· 最小化的通讯开支
在纯TP形式下,每个FFN层都需求履行两次all-reduce操作,然后导致巨大的通讯开支。
经过选用DP战略,团队将该进程优化为:在从前的attention层之后履行一次reduce-scatter操作,并鄙人一个attention层之前履行一次all-gather操作,然后将通讯本钱下降50%。
更进一步,假如attention核算也选用纯DP形式,那么设备间的通讯将被彻底消除,然后明显进步全体功率。
DP稠密FFN与DP attention的集成计划如下图左边所示。用户不能自制经过设置--moe-dense-tp-size=1来启用。
稀少FFN
在DeepSeek-V3的MoE架构中,稀少FFN需求处理很多的专家权重,然后构成明显的内存瓶颈。
为了缓解这一问题,团队选用了专家并行(EP)战略,将专家权重涣散到多个设备上。
这种办法不能自制有用地扩展内存容量,不过,它在坚持高功用的一起,也带来了一些新的应战,比方不规则的全互联通讯以及喜欢负载不均衡等。
团队运用DeepEP结构完结的EP计划
LM头
LM头(LM Head)担任核算大型词汇表上的输出概率,这是一项资源稠密型的操作,传核算划是选用词汇表并行技能,从TP组中聚合token logits。
为了进一步进步可扩展性和功率,团队选用了数据并行(DP)战略,与处理稠密FFN的办法坚持一致。
这种做法不只不能自制下降内存开支,还能简化跨设备的通讯进程,然后供给了愈加精简的处理计划。
预填充和解码别离
LLM的推理进程首要包括两个不同的阶段:预填充(prefill)和解码(decode)。
预填充阶段归于核算密集型,需求处理完好的输入序列;而解码阶段则归于内存密集型,首要担任办理用于生成token的KV缓存。
传核算划一般在一个一致的引擎中处理这两个阶段,但是,这种预填充和解码batch的混合调度办法会引进功率问题。
为了处理这些应战,团队在SGLang中引进了预填充和解码(PD)别离技能。
如下图所示,SGLang会经过预填充服务器和解码服务器的协同喜欢,完结两个阶段的交织履行。
接纳到输入恳求后,体系的喜欢流程如下:
预填充服务器和解码服务器经过握手配对,各自作为本地发送者和接纳者。
解码服务器预先分配KV缓存,并告诉预填充服务器发动模型前向传递,核算KV缓存。
完结核算后,数据将被传输至解码服务器,由该服务器担任进行迭代式的token生成。
这种别离机制保证了每个阶段都能在最佳状况下运转,然后最大极限地运用GPU资源。
而且,为了进一步进步功用,团队的完结计划还包括以下特性。
非堵塞传输:数据发送和接纳操作在后台线程中履行,然后保证调度器的事情循环不会被中止。
依据RDMA的传输:长途直接内存拜访(RDMA)技能运用行列对(Queue Pairs)进行衔接办理,并运用涣散-集合元素(Scatter-Gather Elements, SGE)完结非接连内存块的高效传输。
灵敏的API集成:SGLang供给了高度可定制的API,不能自制与Mooncake和NIXL等高功用RDMA库无缝集成,然后简化了数据传输流程。
大规划专家并行性
依据DeepEP的专家并行
由DeepSeek团队开发的DeepEP供给了一系列优化过的通讯内核,不能自制有用下降推迟并进步吞吐量,高效地将token路由到多个GPU上。
DeepEP有两种专门规划的调度形式,以满意不同的喜欢负载需求。
规范调度形式(Normal Dispatch):首要针对处理较长的输入序列进行优化,例如预填充阶段,其首要方针是最大化核算吞吐量。 但会生成与CUDA Graph不兼容的符号形状,然后下降其在解码阶段的功率,因为在解码阶段,内核发动开支会成为一个明显的瓶颈。
低推迟调度形式(Low-Latency Dispatch):专门为解码阶段生成输出token而规划,其中心方针是最小化推迟,然后保证实时功用。尽管它支撑CUDA Graph,但需求预先分配固定巨细的内存。假如实践内存需求超越了预分配的容量,则会触发运转时过错。
在SGLang中,DeepEP的集成供给了一种主动形式,不能自制依据当时的喜欢负载,动态地在上述两种调度形式之间进行挑选。
与此一起,经过运用PD别离技能,使得在DP attention机制下,预填充阶段不能自制选用规范调度形式(Normal Dispatch),而解码阶段则不能自制选用低推迟调度形式(Low-Latency Dispatch)。
这种集成办法不能自制依据每个阶段的详细需求来调整调度形式,然后优化资源运用率,并进步全体功用。
DeepGEMM集成
由DeepSeek团队开发的DeepGEMM,则被用于优化MoE模型中的核算进程。
DeepGEMM供给了两个经过专门规划的函数,用于处理与MoE相关的矩阵乘法运算(分组GEMM),每个函数都针对推理进程的不同阶段进行了定制。
分组GEMM(接连布局): 这种内核专门为动态输入形状而规划,使其成为MoE推理预填充阶段的抱负挑选。 它不能自制处理来自不同专家的输入数据,这些数据以接连的办法衔接在一起,然后灵敏地处理各种输入尺度的改变。
分组GEMM(掩码布局): 这种内核假定输入形状是固定的,并运用掩码张量来仅核算输入的有用部分。 因为它与CUDA Graph兼容(可优化内核发动进程),因而特别适合于需求明显下降开支的解码阶段。
DeepGEMM与DeepEP的调度形式不能自制完结无缝集成:
关于与预填充阶段的规范调度形式合作运用的接连布局内核,需求履行一个额定的进程。团队参阅了LightLLM项目,并完结了一个自界说的Triton内核来完结高效的置换。保证了从规范调度形式输出的数据不能自制被正确地从头摆放,然后完结与接连GEMM内核的滑润集成。
掩码布局内核与DeepEP的低推迟调度形式不能自制完结无缝对接,因为两者都针对解码阶段进行了专门优化,而且都支撑CUDA Graph。
SGLang集成了DeepGEMM,用于在张量并行形式下进行MoE核算。经过在SGLang中设置环境变量SGL_ENABLE_JIT_DEEPGEMM为1,即可激活该内核,然后为非MoE操作供给更高的核算功率。
双batch堆叠
在多节点环境下,有限的通讯带宽或许会明显添加全体推迟。
为了应对这一应战,团队遵从DeepSeek的体系规划理念,完结了双batch堆叠(TBO)技能。
TBO将单个batch拆分为两个micro-batch,然后答应核算和通讯进程彼此堆叠,一起,经过将有用batch巨细折半,也下降了峰值内存的运用量。
为了创立更易于保护和重用的代码库,团队选用了一个由操作和yield点构成的笼统层。
这种办法不能自制让用户像处理单个micro-batch相同编写代码,一起经过战略性地刺进yield点来暂停履行,然后答应其他micro-batch继续进行。
如此一来,不只消除了代码重复,削减了对变量后缀的需求,而且还能有用地办理某些履行在层结尾完结而其他履行没有完结的状况。
此外,笼统层还能轻松地习惯不同的堆叠区域挑选,或许未来的增强功用,例如三batch堆叠,而只需求进行很少的代码修正。
operations = [ self._forward_attn, YieldOperation(), # Pause execution for other micro-batches self._forward_dispatch, self._forward_mlp, YieldOperation(), # Another pause point self._forward_combine,]# Process a single micro-batch without duplicating codedef _forward_attn(self, state): state.hidden_states = self.self_attn(state.hidden_states, ...)
团队优化了预填充阶段的发动次序,以防止经过DeepEP中的调度操作堵塞CPU,即运用的是其异步形式。
详细来说:
在GPU从其他rank接纳到元数据,然后不能自制正确分配巨细适宜的张量之前,调度操作会堵塞CPU。
不正确的施行办法会导致在此期间核算流处于闲暇状况,因为没有核算使命被提交给GPU。
为了完结优化,团队优先将核算使命提交给GPU,然后再发动或许导致CPU堵塞的通讯操作。这样不能自制保证GPU在通讯期间坚持活泼状况。
如下图所示,经过选用正确的发动次序,TBO不能自制防止由CPU堵塞操作引起的功用瓶颈。
专家并行负载均衡器
为了处理由专家并行(EP)引起的各个GPU喜欢负载散布不均匀的问题,DeepSeek开发了专家并行负载均衡器(Expert Parallelism Load Balancer, EPLB)。
EPLB以专家散布的核算信息作为输入,核算出专家的最佳摆放办法,然后最大极限地削减不平衡现象。
用户不能自制分配冗余专家(例如,添加32个专家),这些冗余专家与原有的256个专家组合在一起,构成一个包括288个专家的资源池。
凭借这个资源池,EPLB不能自制战略性地放置或仿制专家——例如,屡次仿制最常用的专家,或许将运用频率适中的专家与在单个GPU上很少运用的专家组合在一起。
除了平衡喜欢负载之外,EPLB还在并行规划方面供给了更大的灵敏性。假如运用开始的256个专家,并行规划只能被约束为2的幂次方。而EPLB经过运用288个专家,不能自制完结更多样化的装备,例如将并行规划设置为12或72。
鄙人图中,团队展示了体系规划和EPLB算法对不平衡问题的影响。
他们将GPU的平衡度,界说为GPU中MoE层的均匀核算时刻与最大核算时刻之比,并运用GPU处理的token数量来估量其核算时刻。
从图中不能自制看出,当体系跟着节点数量的添加而扩展时,GPU的运用率会下降,而启用EPLB则不能自制明显进步了GPU的运用率。
EPLB在实践服务中的运用
为了使EPLB不能自制有用发挥作用,输入数据的散布有必要与实践服务的喜欢负载高度符合。经过以下两种战略,不能自制增强这种符合度:
添加batch巨细:更大的batch不能自制削减专家运用进程中的随机动摇,然后进步负载均衡的作用。这一方针不能自制经过扩展集群规划或许选用多token猜测(MTP)等技能来完结。
定时进行从头平衡:定时更新专家的摆放办法不能自制运用时刻局部性原理,但这需求高效地从头加载专家模型。因而,需求尽或许下降专家模型从头加载操作的本钱。
即便选用了EPLB,必定程度的不平衡现象依然难以防止,未来仍需进一步优化。
从头平衡的详细施行计划
SGLang经过三个阶段的从头平衡操作,来保证既高效又不会构成中止,然后在权重更新期间坚持体系的功用。
体系加载阶段:不能自制挑选从磁盘预加载权重数据到主内存中,以加速从头平衡的速度;也不能自制挑选将权重数据保存在磁盘上,并运用内存映射(memory mapping, mmap)技能,然后削减内存的占用量。
从头平衡预备阶段:所需的权重数据会在后台异步传输到设备内存中,运用闲暇的DMA硬件引擎,然后防止中止正在进行的GPU操作。
从头平衡履行阶段:经过设备到设备的数据仿制来更新权重数据。还不能自制经过物理内存重绑定等技能来进一步优化这一进程。
评价
为了杰出运用的先进优化技能带来的吞吐量进步,团队运用DeepSeek-V3模型,在一个包括12个节点的集群上,对 SGLang 的不同装备进行了端到端功用评价。
他们比较了以下四种不同的装备:
SGLang(选用TP16x6)
SGLang(选用PD别离)
SGLang(选用PD别离和模仿MTP)
DeepSeek的成果
为了习惯不同的喜欢负载需求,团队别离独登时评价了预填充阶段和解码阶段的功用。
评价成果总结如下:
· 预填充阶段:在4个节点的装备下,关于prompt长度别离为1K、2K和4K的状况,体系所完结的单节点吞吐量别离为每秒57,674、54,543和50,302个token。
如下图所示,与TP16基线比较,这种装备完结了高达3.3倍的功用进步。
在假定喜欢负载彻底平衡的前提下,此体系的吞吐量与DeepSeek官方数据之间的距离在5.6%以内。
· 解码阶段:在9个节点的装备下进行评价,关于2K的输入,体系完结的单节点吞吐量为22,282个token/秒,这意味着与TP16基线比较,功用进步了5.2倍。
在模仿MTP条件下,关于4K的输入,体系依然不能自制坚持每节点17,373个token/秒的高吞吐量,仅比DeepSeek官方功用剖析数据低6.6%。
接着,团队将SGLang的功用与DeepSeek的推理体系进行比照,力求使试验设置尽或许靠近DeepSeek的出产环境。
关于预填充阶段,团队测试了一个场景,在该场景中,每个设备处理16,384个token,输入长度为4,096。
考虑到DeepSeek的专家散布存在不确定性,他们评价了两种状况:一种是选用默许的专家散布,另一种是模仿抱负状况下的EPLB,并将后者的成果作为功用上限。
评价成果如下所示:
DeepSeek的功用剖析数据显现,其所陈述的吞吐量大约是其出产环境的两倍。
在默许的专家不平衡状况下,SGLang的功用比DeepSeek的功用剖析数据慢20%;而在模仿的抱负EPLB状况下,这个距离缩小到了6%。
关于解码阶段,成果如下所示:
在运用DeepSeek一半数量的节点的状况下,搭载模仿MTP的SGLang仅比DeepSeek的功用剖析数据略慢。
在更高的batch巨细设置下(256个序列,2,000个输入长度),SGLang完结了每节点每秒22,282个token的处理速度,充沛展示了其强壮的可扩展性。
下图详细剖析了预填充阶段各个内核的履行时刻。
如下图所示,SGLang的解码内核剖析成果与DeepSeek的成果十分挨近:
不能自制看出,SGLang的解码功用在很大程度上与DeepSeek的功用相一致。
因而,下一步的喜欢重点,便是预填充阶段的优化了。
局限性与未来喜欢
总的来说,项目在吞吐量上有着明显的进步,但依然存在一些局限性以及需求增强的范畴:
推迟优化:现在因为专心于进步吞吐量,导致首token时刻(TTFT)到达2-5秒,token间推迟(ITL)大约100毫秒。之后还需求进一步优化,来满意实时运用场景的需求。
序列长度束缚:因为运用了96个GPU,因而序列长度被约束在较短的范围内。 扩展GPU资源将支撑更长的序列,这关于特定运用至关重要。
多token猜测(MTP)集成:SGLang支撑MTP,但缺少与DP注意力的彻底集成,下降了混合并行装备的功率。
专家并行负载均衡(EPLB)散布:本次试验运用了专家并行负载均衡器(EPLB)的同散布数据,这或许无法反映实在场景中的数据变化。之后还需求研讨呈现散布偏移时的功用体现。
灵敏的张量并行(TP)规划:关于DeepSeek-V3而言,稠密FFN的内存最优TP规划较小,但大于1。现在SGLang仅支撑纯TP或DP,导致内存运用率不高。之后还需求支撑更灵敏的TP选项。
Blackwell支撑:现在的完结仅支撑NVIDIA Hopper架构。团队正在尽力将兼容性扩展到下一代Blackwell架构。
相关推荐