五连开源后ai 文爱,DeepSeek 还有 One More Thing!
就在刚刚,DeepSeek 官方切身揭秘了DeepSeek-V3/R1 推理系统。
重心包括,优化模糊量和延伸的顺序:
跨节点 EP 启动的批量彭胀
斟酌与通讯类似
负载平衡
还公布了 DeepSeek 的在线功绩数据统计:
小二先生 调教每个 H800 节点每秒有 73.7k/14.8k 个输入 / 输出 token
老本利润率 545%
更多细节,一齐来看官方原文↓
更大的模糊,更低的延伸
DeepSeek-V3/R1 推理系统的优化斟酌是:更大的模糊,更低的延伸。
为了杀青这两个斟酌,咱们的决策是使用大规模跨节点民众并行(ExpertParallelism/EP)。
最初 EP 使得 batch size 大大加多,从而提升 GPU 矩阵乘法的服从,提升模糊。其次 EP 使得民众散播在不同的 GPU 上,每个 GPU 只需要斟酌很少的民众(因此更少的访存需求),从而镌汰延伸。
但 EP 同期也加多了系统的复杂性。复杂性主要体当今两个方面:
EP 引入跨节点的传输。为了优化模糊,需要设想顺应的斟酌历程使得传输和斟酌不错同步进行。
EP 波及多个节点,因此自然需要 Data Parallelism(DP),不同的 DP 之间需要进行负载平衡。
因此,本文的主要内容是若何使用 EP 增大 batch size,若何荫藏传输的耗时,若何进行负载平衡。
大规模跨节点民众并行(Expert Parallelism/EP)
由于 DeepSeek-V3/R1 的民众数目无边,况兼每层 256 个民众中仅激活其中 8 个。模子的高度疏淡性决定了咱们必须袭取很大的 overall batch size,才气给每个民众提供实足的 expert batch size,从而杀青更大的模糊、更低的延时。需要大规模跨节点民众并行(Expert Parallelism/EP)。
咱们袭取多机多卡间的民众并行战略来达到以下方针:
Prefill:路由民众 EP32、MLA 和分享民众 DP32,一个部署单位是 4 节点,32 个冗余路由民众,每张卡 9 个路由民众和 1 个分享民众
Decode:路由民众 EP144、MLA 和分享民众 DP144,一个部署单位是 18 节点,32 个冗余路由民众,每张卡 2 个路由民众和 1 个分享民众
斟酌通讯类似
多机多卡的民众并行会引入相比大的通讯支出,是以咱们使用了双 batch 类似来掩饰通讯支出,提升合座模糊。
对于 prefill 阶段,两个 batch 的斟酌和通讯交错进行,一个 batch 在进行斟酌的工夫不错去掩饰另一个 batch 的通讯支出;
△Prefill 阶段的双 batch 类似
对于 decode 阶段,不同阶段的本质时辰有所分歧,是以咱们把 attention 部分拆成了两个 stage,测度 5 个 stage 的活水线来杀青斟酌和通讯的类似。
△Decode 阶段的双 batch 类似
对于更多双 batch 类似的细节,不错参考咱们的 profiling 数据的 GitHub 仓库:https://github.com/deepseek-ai/profile-data。
尽可能地负载平衡
由于袭取了很大规模的并行(包括数据并行和民众并行),要是某个 GPU 的斟酌或通讯负载过重,将成为性能瓶颈,拖慢扫数这个词系统;同期其他 GPU 因为恭候而空转,变成合座愚弄率下跌。因此咱们需要尽可能地为每个 GPU 分派平衡的斟酌负载、通讯负载。
Prefill Load Balancer
中枢问题:不同数据并行(DP)实例上的申请个数、长度不同,导致 core-attention 斟酌量、dispatch 发送量也不同
优化斟酌:各 GPU 的斟酌量尽量换取(core-attention 斟酌负载平衡)、输入的 token 数目也尽量换取(dispatch 发送量负载平衡),幸免部分 GPU 搞定时辰过长
Decode Load Balancer
中枢问题:不同数据并行(DP)实例上的申请数目、长度不同,导致 core-attention 斟酌量(与 KVCache 占用量联系)、dispatch 发送量不同
优化斟酌:各 GPU 的 KVCache 占用量尽量换取(core-attention 斟酌负载平衡)、申请数目尽量换取(dispatch 发送量负载平衡)
Expert-Parallel Load Balancer
中枢问题:对于给定 MoE 模子,存在一些自然的高负载民众(expert),导致不同 GPU 的民众斟酌负载不平衡
优化斟酌:每个 GPU 上的民众斟酌量平衡(即最小化扫数 GPU 的 dispatch 收受量的最大值)
参考架构图
线上系统的本色统计数据
DeepSeekV3 和 R1 的扫数功绩均使用 H800 GPU,使用和窥探一致的精度,即矩阵斟酌和 dispatch 传输袭取和窥探一致的 FP8 表情,core-attention 斟酌和 combine 传输袭取和窥探一致的 BF16,最猛进度保证了功绩服从。
另外,由于白昼的功绩负荷高,晚上的功绩负荷低,因此咱们杀青了一套机制,在白昼负荷高的工夫,用扫数节点部署推理功绩。晚上负荷低的工夫,减少推理节点,以用来作念探究和窥探。在最近的 24 小时里(北京时辰 2025/02/27 12:00 至 2025/02/28 12:00),DeepSeekV3 和 R1 推理功绩占用节点总和,峰值占用为 278 个节点,平均占用 226.75 个节点(每个节点为 8 个 H800 GPU)。假设 GPU 租出老本为 2 好意思金 / 小时,总老本为 $87,072/ 天。
在 24 小时统计时段内,DeepSeekV3 和 R1:
输入 token 总和为 608B,其中 342B tokens(56.3%)掷中 KVCache 硬盘缓存。
输出 token 总和为 168B。平均输出速度为 20~22tps,平均每输出一个 token 的 KVCache 长度是 4989。
平均每台 H800 的模糊量为:对于 prefill 任务,输入模糊约 73.7k tokens/s(含缓存掷中);对于 decode 任务,输出模糊约 14.8k tokens/s。
以上统计包括了网页、APP 和 API 的扫数负载。要是扫数 tokens 全部按照 DeepSeek R1 的订价 * 斟酌,表面上一天的总收入为 $562,027,老本利润率 545%。
*DeepSeek R1 的订价:$0.14/ 百万输入 tokens ( 缓存掷中 ) ,$0.55/ 百万输入 tokens ( 缓存未掷中 ) ,$2.19/ 百万输出 tokens。
虽然咱们本色上莫得这样多收入,因为 V3 的订价更低,同期收费劲迹只占了一部分,另外夜间还会有扣头。
原文相接:
[ 1 ] https://zhuanlan.zhihu.com/p/27181462601
[ 2 ] https://github.com/deepseek-ai/open-infra-index/blob/main/202502OpenSourceWeek/day_6_one_more_thing_deepseekV3R1_inference_system_overview.mdai 文爱