jik1756 LV
发表于 2025-4-27 16:29:18
冷知识,LLM训练成本的大头还是预训练部分,你看一下DeepSeek-V3技术报告里面统计的训练成本,其中总的H100 GPU卡时是2788K,而预训练就需要2664K,占比高达95%。
而DeepSeek-V3的预训练数据就包含了14.8T的tokens,这个数据量肯定不是主要来自蒸馏其他模型的数据,还是得靠老老实实的数据清洗(但有可能无意混入一些AI数据)。另外,只看预训练模型的性能,DeepSeek-V3也是在开源模型里面能打的,性能超过Qwen2.5 72B以及LLaMA-3.1 405B:
至于后面的post-training,其实需要的GPU卡时只有5K,占比很低,但是需要量少且质量高的多样化数据,论文里面说是大约1.5M样本,其中包含由自研的推理模型DeepSeek-R1合成的推理数据,以及由DeepSeek-V2.5合成的非推理数据并人工检验。
利用大模型合成高质量数据其实早已经是大家常用的做法,所以可能这里DeepSeek还是用了一定由其他SOTA模型合成的数据来做post-training,这个对性能提升应该也一定帮助。
但这绝不是成本低的原因。
训练成本还主要由模型架构以及训练架构所决定。
在模型架构上,DeepSeek-V3是一个总参数671B激活参数37B的MoE,采用之前DeepSeek-V2之前所采用的高效设计MLA(Multi-Head Latent Attention)和DeepSeekMoE,其中MLA的核心是在推理过程中通过低秩联合压缩attention的 keys和values,以减少键值(KV)缓存。
DeepSeek-V3还设计了无辅助损失的负载均衡策略来确保负载均衡,这比单纯通过辅助损失鼓励负载均衡的模型能取得更好的性能。并且为了防止任何单个序列内的极端不均衡,这里还采用了一种互补的序列级均衡损失。
为了限制训练期间的通信成本,DeepSeek-V3也采用了一种受限的路由机制。简而言之,我们确保每个token最多被发送到 个节点,这些节点是根据分布在各节点上的专家的前 / 个最高亲和度分数的总和来选择的。在这种约束下,MoE训练框架几乎可以实现完全的计算-通信重叠。
此外,DeepSeek-V3还额外增加了多token预测(Multi-Token Prediction, MTP)目标,不仅可以提升模型性能,它还可以用于推理加速。
在训练架构上,DeepSeek-V3在配备2048个NVIDIA H800 GPU的集群上进行训练。H800集群中的每个节点包含8个GPU,通过NVLink和NVSwitch在节点内连接。不同节点之间使用InfiniBand(IB)互连以促进通信。
DeepSeek-V3的训练由自研的HAI-LLM框架支持,总体上,DeepSeek-V3采用了16路流水线并行(Pipeline Parallelism, PP)、跨8个节点的64路专家并行(Expert Parallelism, EP)以及ZeRO-1数据并行(Data Parallelism, DP)。而且这里做了很细致的工程优化来提升训练效率。
首先,设计了DualPipe算法以实现高效的流水线并行,核心是通过有效重叠前向和后向的计算-通信阶段来加速模型训练,还减少了流水线气泡。
其次,这里还开发了高效的跨节点全对全(all-to-all)通信内核,以充分利用InfiniBand和NVLink带宽,并节省专用于通信的流式多处理器(SMs)。
最后,这里还精心优化了训练期间的内存占用,包括RMSNorm和MLA上投影的重计算、CPU进行EMA以及多token预测的共享嵌入和输出头,从而能够在无需使用昂贵的张量并行(Tensor Parallelism, TP)的情况下训练DeepSeek-V3。
更重要的一点是,DeepSeek团队设计了FP8混合精度训练框架,并首次在超大规模模型上验证了FP8训练的可行性和有效性。
DeepSeek-V3技术报告的最后,其实也用一句话总结了低成本训练的原因:The training of DeepSeek-V3 is cost-effective due to the support of FP8 training and meticulous engineering optimizations.
DeepSeek-V3的训练成本效益高,这得益于FP8训练支持和精心的工程优化。 我一直觉得大模型的训练不仅仅是算法问题,而更应该把它当成一个复杂的工程问题,而DeepSeek-V3在工程的各个方面做得都很好! |
|