% T3 x. b2 P9 p' d S3 A" b. A, t5 h一个典型的例子是,DeepSeek 团队发现并使用了行为超出文档范围的 PTX 指令 ld.global.nc.L1::no_allocate.L2::256B。虽然这个指令在官方文档中没有明确定义,但 DeepSeek 团队通过充分的实验验证了其在 Hopper 架构上的正确性和性能优势,并将其应用到 DeepEP 中。 T6 G u+ O# C; s
( t1 e9 J4 h1 }# Y9 Y8 l"为了实现极致性能,我们发现并使用了行为超出文档范围的 PTX 指令:ld.global.nc.L1::no_allocate.L2::256B。此指令将导致未定义的行为:使用非连贯只读 PTX 修饰符访问易失性 GPU 内存 .nc。但正确性已 .L1::no_allocate 在 Hopper 架构上测试以保证,并且性能会好得多。如果您发现内核在其他一些平台上无法运行,您可以添加 DISABLE_AGGRESSIVE_PTX_INSTRS=1 并 setup.py 禁用此功能,或者提交问题。"( z% m2 F# |9 d( ^: H
1 a% s' J+ Y% Q5 W5 u
PTX是底层的汇编,与硬件结构相关;发现其未公开的隐藏指令,事实上只能是尝试出来的。在实践中基于频繁的使用迭代,发现隐藏指令,这种不拘泥于常规、以实用为导向的精神,正是 DeepEP 能够实现卓越性能的关键。它体现了一种“黑客”精神:在现有条件下,充分利用一切可利用的资源,解决实际问题。 " M2 j; v# Z! U , A, N. Y$ C, T) _( T1 B+ O6 ]开放协作,共同进步" G. j% L3 K K$ V+ m0 J; U- G
+ t% ]" u$ o; H. _8 T: F7 pDeepSeek 团队不仅在技术上精益求精,更有着开放、协作的精神。他们将经过实践验证的 DeepEP 开源,与整个 AI 社区分享他们的成果。 1 T/ K& @$ @6 f% t" o/ K/ K! _, I; L, v0 w |& {: J
DeepEP 采用 MIT 许可协议,这意味着任何人都可以自由地使用、修改和分发 DeepEP 的代码,无需担心版权问题。这种开放性将极大地促进 MoE 模型的研究和应用,降低 MoE 模型的开发门槛。6 }" d( T$ J# L. B6 c% [! q h Z
( S0 A3 h/ F4 p$ F9 n
DeepSeek 的做法与一些闭门造车的做法形成了鲜明对比。他们不仅公布了结果,更重要的是公开了实现这一结果的关键技术(DeepEP),让整个社区都能从中受益。$ b; k! D, c" B& Z/ C: I# l) G
1 Y2 i* m5 f8 c软硬件协同,深入底层 4 n" ?. m) g3 b G9 L" |# h 4 m A8 `7 Z# o7 [DeepEP 的成功,也体现了 DeepSeek 团队对软硬件协同优化的深刻理解。他们不仅仅停留在算法层面,而是深入到底层硬件和系统,充分挖掘硬件的潜力。 i& k) J1 E0 p9 H/ B
( b1 N$ u1 ?9 _/ x2 `' E6 j
DeepEP 对 NVLink 和 RDMA 的精细化利用,对 SM 数量的控制,以及对底层 PTX 指令的使用,都表明了 DeepSeek 团队对硬件特性的深刻理解。这种软硬件协同的优化思路,是实现极致性能的必由之路。/ l% R; @9 o- r! ~: Q. S6 e
' |( O H- ~ A; K# r4 u7 H4 ]
五、DeepEP 的网络配置与优化 7 g0 d8 K% [+ Z$ J( v2 cDeepEP 在网络层面也进行了多项优化,以适应复杂的集群环境,并充分利用网络带宽。这里也有一个隐蔽设定,还是接续第二部分的,在剥离所谓的IB功能依赖。DS的工程师团队在用英伟达体系训练的时候,在HPC的论文中可以说是边用边骂,但一边骂一边还得用……开源这个项目,事实上是剥离了IB的不少复杂功能依赖,尤其是流量隔离和拥塞控制之类的。这也是工程师思维,花里胡哨的功能依赖是需要简化的。: q0 ~8 _. k. h# @) U' k6 L
, m: t" c* \. x$ x流量隔离 / r! v. r1 u L( b9 t/ e, }' w h4 ? M
DeepEP 利用 InfiniBand 的虚拟通道 (VL) 特性,实现不同类型流量的隔离。通过将不同工作负载(如使用普通内核的工作负载、使用低延迟内核的工作负载,以及其他工作负载)分配到不同的虚拟通道,可以有效避免相互干扰,提高整体网络性能。DeepEP 通过环境变量 NVSHMEM_IB_SL 来控制虚拟通道的分配。 这种精细化的流量管理,可以确保关键任务(如 MoE 训练)获得足够的带宽资源,不受其他任务的影响。 & D1 i6 d1 K4 l( a, n% O# j3 q 5 r* j: T# ^1 D0 k& F"为了防止不同类型的流量之间发生干扰,我们建议在不同的虚拟通道之间划分工作负载,如下所示: * 使用普通内核的工作负载 * 使用低延迟内核的工作负载 * 其他工作量 对于 DeepEP,您可以通过设置环境变量来控制虚拟通道分配NVSHMEM_IB_SL。" " t" b5 ?2 H/ z& V ! F4 T9 q- F6 c5 t9 \$ E; @自适应路由 9 o, Z7 ^& C) Y. m ) Q( z2 ~) V" V$ Z4 d; o自适应路由是 InfiniBand 交换机提供的一项高级功能,可以将流量动态地分布在多条路径上,从而提高网络的鲁棒性和吞吐量。DeepEP 的低延迟内核支持自适应路由,可以有效消除因路由冲突导致的网络拥塞,降低延迟。1 V; U; e8 C% _- C& @7 G
" N8 ~. t% {! pDeepSeek 团队根据实践经验,建议在网络负载较重的环境中启用自适应路由,以获得更好的稳定性和吞吐量;而在网络负载较轻的环境中,则可以使用静态路由,以减少路由计算的开销,进一步降低延迟。 & J5 A5 ]' `( J/ l) U6 O' r$ T: `6 b3 A/ {% R: u
"对于低延迟内核,启用自适应路由可以完全消除路由冲突导致的网络拥塞,但也会引入额外的延迟。我们建议采用以下配置以获得最佳性能: * 在网络负载较重的环境中启用自适应路由 * 在网络负载较轻的环境中,使用静态路由" 1 L, k$ Z' t8 g. ?: C S6 N' j6 R& Q. j8 }
拥塞控制 $ q5 f1 E% f1 b) F - X+ `* y$ N9 `7 V% z+ n* ZDeepSeek 团队在生产环境中没有观察到明显的网络拥塞,因此 DeepEP 目前默认禁用了拥塞控制。这反映了 DeepSeek 团队务实的态度,避免引入不必要的复杂性。当然,如果未来需要,DeepEP 也保留了启用拥塞控制的灵活性。 ( l& g6 B- }) j4 s% E. n o/ p2 ^/ n" \
总结:DeepEP 的深远意义 3 p7 N1 r5 ?! P* p6 { " `6 B0 _% O% g7 s3 P( h: eDeepEP 不仅仅是一个高性能的通信库,它更代表了一种先进的工程理念: L& c9 @8 h: }0 F. A4 i, w