深度解析:DeepSeek开源周彩蛋揭秘
3月1日,智东西(公众号:zhidxcom)报道了DeepSeek在开源周的最后一天放出了一颗重磅彩蛋——公开了其DeepSeek-V3/R1推理系统的详细技术文档,并首次披露了每日成本和理论收入。这无疑为AI技术社区带来了巨大惊喜。
根据DeepSeek的数据统计,在2月27日24点到2月28日24点之间,该系统每天的总运营成本约为87072美元(约合人民币63万元)。如果所有Token都按照DeepSeek-R1的价格计费,理论上每天的总收入可达562027美元(约合人民币409万元),利润率高达545%,即净赚约474955美元(约合人民币346万元)。然而,实际收入因多种因素而大幅下降,包括DeepSeek-V3定价较低、网页端和应用程序免费以及夜间折扣等。
此外,DeepSeek还公布了其推理系统的技术细节。为了提高吞吐量和降低延迟,研究人员采用了跨节点的专家并行(EP),通过增大batch size、隐藏通信延迟和执行负载均衡来应对系统复杂性挑战。发布仅一小时后,GitHub上的Star数就超过了5600。
网友纷纷在评论区cue OpenAI,甚至有人调侃“被抢劫”。还有网友根据OpenAI的定价帮DeepSeek算账,引发了热烈讨论。
技术剖析:DeepSeek-V3/R1推理系统的核心优势
DeepSeek V3和R1的服务均使用H800 GPU,并采用与训练一致的精度格式,以确保最佳的服务效果。具体来说,矩阵计算和dispatch传输采用FP8格式,core-attention计算和combine传输则采用BF16格式。
在过去的24小时内,V3和R1推理服务的合并峰值节点占用率达到278,平均占用率为226.75个节点(每个节点包含8个H800 GPU)。假设一个H800 GPU的租赁成本为每小时2美元,则每日总成本为87072美元。
据统计,总输入Token为608B,其中342B Token(56.3%)命中KVCache硬盘缓存;总输出Token为168B,平均输出速度为每秒20-22 tps,每个输出Token的平均kvcache长度为4989个Token。每个H800节点在prefill期间提供约73.7k token/s输入(包括缓存命中),或在解码期间提供约14.8k token/s输出。这些数据涵盖了来自web、APP和API的所有用户请求。
如果所有Token都以DeepSeek-R1的价格计费,每日总收入将为562027美元,成本利润率为545%。然而,由于DeepSeek-V3的定价低于R1、网页端和应用程序免费以及夜间折扣等因素,实际收入并没有这么高。
解决方案:应对EP增加系统复杂性的三大策略
DeepSeek的解决方案采用了跨节点的专家并行(EP),显著扩展了批处理大小,增强了GPU矩阵计算效率并提高了吞吐量。同时,EP将专家分布在不同GPU上,每个GPU只处理专家的一小部分,从而降低延迟。然而,EP也增加了系统复杂性,主要体现在跨节点传输和多节点间的负载均衡。
DeepSeek通过以下三种方式应对这些挑战:
1. 大规模跨节点专家并行(EP):DeepSeek-V3/R1的专家数量众多,每层256个专家中仅激活其中8个。模型的高度稀疏性决定了必须采用很大的整体batch size,才能给每个专家提供足够的expert batch size,从而实现更大的吞吐量和更低的延时。为此,DeepSeek采用多机多卡间的专家并行策略,以达到更高的性能。
2. 计算-通信重叠:多机多卡的专家并行会引入较大的通信开销,因此DeepSeek使用双batch重叠来掩盖通信开销,提高整体吞吐量。对于prefill阶段,两个batch的计算和通信交错进行,一个batch在进行计算的同时掩盖另一个batch的通信开销。对于decode阶段,DeepSeek将attention部分拆分为两个stage,共计五个stage的流水线来实现计算和通信的重叠。
3. 实现最佳负载均衡:为了确保各GPU的计算和通信负载均衡,DeepSeek优化了Prefill Load Balancer和Decode Load Balancer。Prefill Load Balancer的核心问题是不同数据并行实例上的请求个数和长度不同,导致计算量和dispatch发送量不同。其优化目标是使各GPU的计算量和输入token数量尽量相同。Decode Load Balancer的关键问题则是不同数据并行实例上的请求数量和长度不同,导致KVCache占用量和dispatch发送量不同。其优化目标是使各GPU的KVCache占用量和请求数量尽量相同。此外,专家并行负载均衡器的核心问题是某些专家的计算负载较高,DeepSeek的目标是使每个GPU上的专家计算量尽量均衡。