参考:【论文学习】DeepSeek-V3 全文翻译
在人工智能领域,语言模型的发展日新月异。从早期的简单模型到如今拥有数千亿参数的巨无霸模型,技术的进步令人瞩目。然而,随着模型规模的不断扩大,训练成本和推理效率成为了摆在研究者面前的两道难题。DeepSeek-V3,这个拥有671B(6710亿)参数的大型混合专家(MoE)语言模型,却以其高效的训练和卓越的性能,成为了开源模型中的佼佼者。今天,就让我们一起走进DeepSeek-V3的世界,探索它是如何在保持高精度的同时,将训练成本降低到GPT的十分之一。
一、DeepSeek-V3的架构创新
DeepSeek-V3的架构设计是其高效训练和推理的基础。它采用了多头潜在注意力(MLA)和DeepSeekMoE架构,这两种技术在DeepSeek-V2中已经得到了充分验证。MLA通过低秩联合压缩注意力的键(Key)和值(Value),减少了推理时的KV缓存和训练时的激活内存。而DeepSeekMoE则通过细粒度的专家并行,隔离一些共享专家,提高了模型的计算效率和性能。
1. 多头潜在注意力(MLA)
MLA的核心在于对注意力机制的优化。传统的多头注意力机制在处理大规模数据时,会消耗大量的内存和计算资源。而MLA通过低秩联合压缩,将注意力的键和值进行压缩,减少了KV缓存的大小。同时,对注意力查询(Query)也进行了类似的低秩压缩,进一步降低了训练时的激活内存。这种压缩策略在显著减少内存占用的同时,保持了与标准多头注意力相当的性能。
2. DeepSeekMoE架构
DeepSeekMoE架构是DeepSeek-V3的另一个重要创新。它采用了细粒度的专家并行,将输入数据通过共享专家和路由专家进行处理。路由专家的选择基于Top-K选择机制,确保每个token都能被发送到最合适的专家进行处理。这种设计不仅提高了计算效率,还使得模型能够更好地利用专家的多样性,从而提升整体性能。
3. 无辅助损失的负载均衡策略
为了进一步提高训练效率,DeepSeek-V3引入了一种无辅助损失的负载均衡策略。传统的负载均衡方法通常需要引入辅助损失来鼓励负载均衡,但这可能会对模型性能产生不利影响。DeepSeek-V3通过动态调整每个专家的偏置项,实现了负载均衡,同时避免了因负载均衡导致的性能下降。这种策略不仅提高了训练效率,还保持了模型的高性能。
二、训练框架的优化
DeepSeek-V3 的训练由 HAI-LLM 框架支持,这是一个由工程师从零开始打造的高效轻量级训练框架。
1. DualPipe算法
DeepSeek-V3采用了DualPipe算法,这是一种创新的流水线并行算法。它通过重叠正向和反向的计算-通信阶段,减少了流水线气泡,提高了训练效率。具体来说,DualPipe将每个块划分为四个部分:注意力机制、全到全分发(dispatch)、MLP和全到全合并(combine)。通过重新排列这些部分,并手动调整GPU SMs用于通信与计算的比例,DualPipe确保了在执行过程中全到全和PP通信都可以被完全隐藏。这种高效的重叠策略使得DeepSeek-V3在训练过程中能够充分利用计算资源,显著提高了训练效率。
2. 高效的跨节点全到全通信内核
为了进一步提高通信效率,DeepSeek-V3开发了高效的跨节点全到全通信内核。这些内核充分利用了InfiniBand(IB)和NVLink的带宽,减少了通信开销。通过定制的通信内核,DeepSeek-V3节省了用于通信的流处理器(SMs),提高了通信效率。这种优化使得DeepSeek-V3在跨节点通信时能够保持高效的训练速度,进一步降低了训练成本。
3. 内存优化
DeepSeek-V3在内存优化方面也做了大量工作。通过重新计算RMSNorm操作和MLA上投影,DeepSeek-V3减少了存储激活值所需的内存。此外,它还采用了指数移动平均值(EMA)来存储模型参数,进一步降低了内存占用。这些内存优化措施使得DeepSeek-V3能够在不使用昂贵的张量并行(TP)的情况下进行训练,显著降低了训练成本。
三、FP8混合精度训练
DeepSeek-V3采用了FP8混合精度训练框架,这是其高效训练的另一个关键因素。FP8混合精度训练通过使用FP8数据格式进行大多数计算密集型操作,显著提高了训练速度并减少了内存消耗。
1. 混合精度框架
在FP8混合精度框架中,大多数核心计算内核,如GEMM操作,以FP8精度实现。这些操作接受FP8张量作为输入,并产生BF16或FP32的输出。通过这种方式,DeepSeek-V3的计算速度比原始的BF16方法翻倍,同时显著减少了内存消耗。
2. 细粒度量化
为了提高低精度训练的准确性,DeepSeek-V3采用了细粒度量化策略。它按1×128的瓦片或128×128的块进行分组和缩放,以适应异常值,提高量化精度。这种细粒度量化方法能够更好地适应激活值和权重的分布,减少了量化误差,提高了训练精度。
3. 增加累加精度
DeepSeek-V3还通过将累加提升到CUDA Cores,提高了FP8 GEMM的累加精度。通过这种方式,它能够保留更高的精度,减少了下溢问题,提高了训练的稳定性。
四、数据和超参数优化
除了架构和训练框架的优化,DeepSeek-V3在数据和超参数方面也进行了精心设计。
1. 数据构建
DeepSeek-V3的预训练语料库包含14.8万亿个高质量且多样化的token。通过增加数学和编程样本的比例,扩展多语言覆盖范围,优化了预训练语料库。此外,它的数据处理流程经过改进,以减少冗余,同时保持语料库的多样性。这种高质量的数据为DeepSeek-V3的训练提供了坚实的基础。
2. 超参数设置
DeepSeek-V3的超参数设置也非常精细。它采用了AdamW优化器,并设置了合适的学习率调度和批量大小调度。通过精心设计的学习率调度,DeepSeek-V3在训练过程中保持了稳定的学习速度,提高了训练效率。同时,批量大小的逐步增加也使得训练过程更加高效。
五、后训练优化
在后训练阶段,DeepSeek-V3通过监督微调(SFT)和强化学习(RL)进一步提升了模型的性能。
1. 监督微调(SFT)
DeepSeek-V3使用了精心策划的指令调优数据集,涵盖多个领域,共包含150万个实例。通过两轮微调,DeepSeek-V3在特定任务上的表现得到了显著提升。这种微调策略使得DeepSeek-V3能够更好地理解并遵循用户定义的格式约束,提高了模型的实用性。
2. 强化学习(RL)
在强化学习阶段,DeepSeek-V3使用了基于规则的奖励模型和基于模型的奖励模型。通过Group Relative Policy Optimization(GRPO),DeepSeek-V3优化了策略模型,进一步提升了模型的性能。这种强化学习策略使得DeepSeek-V3在复杂任务中表现出色,接近甚至超过了领先的闭源模型。
六、DeepSeek-V3的训练成本与性能
通过上述一系列优化措施,DeepSeek-V3不仅在性能上达到了领先水平,还在训练成本上实现了显著降低。DeepSeek-V3的完整训练仅需278.8万H800 GPU小时,而其预训练阶段每万亿个token仅需180K H800 GPU小时。这种高效的训练成本使得DeepSeek-V3成为了目前最强的开源模型之一,其性能与领先的闭源模型相当,甚至在某些领域超过了这些模型。
七、总结
DeepSeek-V3的成功之路充满了创新和优化。从架构设计到训练框架,从数据处理到后训练优化,DeepSeek-V3在每一个环节都进行了精心设计和优化。通过多头潜在注意力(MLA)、DeepSeekMoE架构、无辅助损失的负载均衡策略、FP8混合精度训练等技术,DeepSeek-V3不仅提高了训练效率,还保持了高精度的性能。它的成功为开源语言模型的发展提供了宝贵的经验,也为未来AI技术的发展指明了方向。