新课【大模型项目开发线下强化班】文末开秒!!!

DeepSeek LLM的预训练与对齐

1.1 架构设计、预训练、并行训练等细节

24年1.5日,量化巨头幻方旗下的杭州深度求索公司提出DeepSeek LLM,其对应的论文为《 DeepSeek LLM: Scaling Open-Source Language Models with Longtermism 》

  • 该模型基本遵循Llama结构的设计「关于llama结构的解读,详见此文:LLaMA的解读与其微调(含LLaMA 2):Alpaca-LoRA/Vicuna/BELLE/中文LLaMA/姜子牙」 比如采用了RMSNorm函数的Pre-Norm结构,并使用SwiGLU作为前馈网络FFN的激活函数,中间层的维度为,它还结合了旋转嵌入RoPE作为位置编码

  • 且为了优化推理成本,67B 模型使用了分组查询注意力GQA,而不是传统的多头注意力MHA

打开网易新闻 查看精彩图片

以下是其他的一些细节

  1. 基于tokenizers库(Huggingface团队,2019)实现了字节级字节对编码(BBPE)算法

  2. DeepSeek LLM 以0.006的标准差初始化,并使用 AdamW 优化器进行训练,具有以下超参数:1 = 0.9, 2 = 0.95, 和 weight_decay = 0.1

打开网易新闻 查看精彩图片

具体来说,模型的学习率在2000个预热步骤后达到最大值,然后在处理80%的训练数据后下降到最大值的31.6%。在处理90%的数据后,它进一步减少到最大值的10%

此外,在模型的加速上

  1. 使用一个名为 HAI-LLM的高效轻量级训练框架来训练和评估大型语言模型 数据并行、张量并行、序列并行和1F1B流水线并行被集成到这个框架中,就像在Megatron中所做的那样 (如果还不太熟悉并行训练相关的原理,可以参见此文:大模型并行训练指南:通俗理解Megatron-DeepSpeed之模型并行与数据并行)

    且还利用了flash attention来提高硬件利用率,以及利用ZeRO-1将优化器状态划分到数据并行等级中 还努力重叠计算和通信以最小化额外的等待开销,包括最后一个微批次的反向过程和ZeRO-1中的reduce-scatter操作,以及序列并行中的GEMM计算和all-gather/reduce-scatter

  2. 一些层/操作被融合以加速训练,包括LayerNorm、GEMM和Adam更新 为了提高模型训练的稳定性,在 bf16 精度下训练模型,但在 fp32 精度下累积梯度 为了减少 GPU 内存消耗,执行就地交叉熵操作,即:在交叉熵 CUDA 内核中即时将 bf16 logits 转换为fp32 精度(而不是事先在 HBM 中转换),计算相应的 bf16 梯度,并用其梯度覆盖 logits

    且模型权重和优化器状态每 5 分钟异步保存一次,这意味着在偶尔的硬件或网络故障的最坏情况下,最多会丢失 5 分钟的训练数据。这些临时模型检查点会定期清理,以避免消耗过多的存储空间

    且还支持从不同的 3D 并行配置恢复训练,以应对计算集群负载的动态变化。 至于评估,在生成任务中采用 vLLM (Kwon et al., 2023),在非生成任务中采用连续批处理,以避免手动调整批处理大小并减少 token 填充

1.2 对齐:监督微调与DPO

在数据集上,收集了大约 150 万条英文和中文的指令数据实例,涵盖了广泛的有用性和无害性主题。其中

  1. 有用数据包含 120 万个实例,其中 31.2% 是一般语言任务,46.6% 是数学问题,22.2% 是编码练习

  2. 安全数据包含 30 万个实例,涵盖各种敏感话题

至于对齐流程则包含两个阶段

  1. 监督微调

    对 7B 模型进行了 4 个周期的微调,但对 67B 模型只进行了 2 个周期的微调,因为观察到 67B 模型的过拟合问题很严重 且观察到 GSM8K和 HumanEval在 7B 模型上持续改进,而 67B 模型很快达到了上限 对于 7B 和 67B 模型,它们对应的学习率分别为 1e-5 和 5e-6

    除了监控基准准确性外,我们还评估了微调过程中聊天模型的重复率 比如,收集了总共 3868 个中英文提示,并确定了生成的响应中未能终止而是无休止重复一段文本的比例

    且观察到,随着数学 SFT 数据量的增加,重复率往往会上升,这可以归因于数学 SFT 数据偶尔包含类似的推理模式。因此,较弱的模型难以理解这些推理模式,导致重复的响应

    为了解决这个问题,尝试了两阶段微调和 DPO(关于什么是DPO,详见此文:RLHF的替代之DPO原理解析:从RLHF、Claude的RAILF到DPO、Zephyr),这两种方法几乎都能保持基准分数并显著减少重复

  2. DPO

    为了进一步增强模型的能力,他们使用了直接偏好优化算法DPO,这被证明是一种简单但有效的 LLM 对齐方法

  3. 比如构建了DPO训练的偏好数据,主要包括有用性和无害性

  4. 对于有用性数据,收集了多语言提示,涵盖了创意写作、问答、指令执行等类别,然后使用DeepSeek Chat模型生成响应作为候选答案

    类似的操作也应用于无害性偏好数据的构建

    且以5e-6的学习率和512的批处理大小训练了一个DPO周期,并使用了学习率预热和余弦学习率调度器 另,发现DPO可以增强模型的开放式生成能力,同时在标准基准测试中的表现差异很小

    限于篇幅,更多内容下期继续分享。

如有任何问题或任何不懂的地方,可以随时留言/评论。更多见《大模型项目开发线下强化班》课程

打开网易新闻 查看精彩图片

↓↓↓扫码了解详情/抢购↓↓↓

课程咨询可找苏苏老师VX:julyedukefu008或七月在线其他老师

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片