成品网站代理,wordpress数据迁移,seo如何优化,淄博软件开发公司有哪些概况 
这个是deepseek发布的第一版模型对应的技术报告#xff0c;模型发布于23年11月#xff0c;本报告发布于24年1月。 
模型有7B和67B两个版本。 
虽然本报告中还没有用上后面V2/V3和R1中的关键技术例如MLA、MTP、GRPO#xff0c;但是报告中已经指明了MoE、强化学习等未来…概况 
这个是deepseek发布的第一版模型对应的技术报告模型发布于23年11月本报告发布于24年1月。 
模型有7B和67B两个版本。 
虽然本报告中还没有用上后面V2/V3和R1中的关键技术例如MLA、MTP、GRPO但是报告中已经指明了MoE、强化学习等未来的方向并且在infra方面给了比较多的重视这也将是后续训练成本低的关键。 
模型结构 
模型设计上遵循了Llama的结构也就是RMSNormRoPE位置编码等特征MLP表达式 MLP的维度是隐藏层维度的8/3。 
在67B模型中使用了GQA下图可以看出64个注意力头被分成了8组每组的8个头共享相同的计算KV时的权重参数。 
还有一点值得注意67B模型的层数是95层MLP的维度是隐藏层维度的8/3而Llama-70B的模型层数是80层MLP的维度是隐藏层维度的3.5倍。也就是说deepseek LLM的结构更深更细。 
训练 
在训练过程中没有使用余弦学习率调度器而是使用多步学习率调度器在2000个预热步骤之后达到最大学习率处理80%的训练数据后学习率降到最大值的31.6%处理90%后降低到10% 
infra 
使用幻方自己研发的HAI-LLM训练框架来训练和评估大型语言模型。该框架集成了数据并行性、张量并行性、序列并行性和1F1B流水线并行性正如在Megatron中所做的那样。我们还利用了flash attention技术来提高硬件利用率。ZeRO-1被用来将 优化器状态 分割到 数据并行的各个 rank 上。我们还努力重叠计算和通信以最小化额外的等待开销包括最后一个微批处理的反向过程和ZeRO-1中的reduce-scatter操作以及序列并行中的GEMM计算和all-gather/reduce-scatter。使用图融合和算子融合以加快训练速度包括尽可能的LayerNorm、GEMM和Adam更新。为了提高模型训练的稳定性我们在bf16精度下训练模型但在fp32精度下累积梯度。在位交叉熵被用来减少GPU内存消耗即我们在交叉熵CUDA内核中实时将bf16日志转换为fp32精度而不是预先在HBM中转换计算相应的bf16梯度并用其梯度覆盖日志。模型权重和优化器状态每5分钟异步保存一次这意味着在偶尔的硬件或网络故障的最坏情况下我们不会丢失超过5分钟的训练。这些临时模型检查点定期被清理以避免消耗过多的存储空间。我们还支持从不同的3D并行配置恢复训练以应对计算集群负载的动态变化。至于评估在生成任务中使用vLLM并在非生成任务中使用连续批处理以避免手动批处理大小调整并减少标记填充。 
可以看出deepseek在最初的训练过程中就注重通过优化infra来降低训练成本。 
scaling law 
这一块的研究就是为了从模型的规模找到该规模对应的最佳超参数即最佳lr和最佳batch_size 
讨论了scaling-law和超参数之间的关系最主要的超参数就是learning_rate和batch_size。通过研究超参数与计算预算模型规模*数据量之间的关系提出了超参数的scaling-law以确保不同计算预算下的模型能达到最优性能。 
模型规模并没有用模型参数量来衡量而是用非嵌入的 FLOPs/token (M) 也就是每个token计算时需要的浮点计算数。报告中使用了来表示模型规模也就是每个token需要经历的transformer layer中的计算量而没有把也计算在参数量中的词表嵌入考虑在内。 
于是计算预算的公式由变成了N是模型参数M是上面的非嵌入的flops/tokenD是数据量 
超参数的scaling-law 
下边这个公式展示了两个超参数与模型规模之间的关系下图表示了随着模型规模的变化超参数也发生变化。 
通过计算预算来选择合适的数据量和模型规模 
通常情况下都是现有硬件和训练时长的预算下一步才开始规划模型的规模和训练数据的规模。因此需要通过给定的C来得到M和D使得训练过程的损失最小。 
具体是如何选择的 
选择了不同的计算预算范围例如从 1e17到 3e20对每个计算预算 C设计了多个不同的 模型规模M 和 数据规模D 分配方案。通过 IsoFLOP 方法可以为每种分配方案计算出相应的 泛化误差。得到一堆泛化误差的数据点这些数据点构成了一个 损失缩放曲线表示随着计算预算的变化模型的泛化误差如何变化。 
对齐 
人类偏好对齐分成SFT和DPO两步共有150万条数据 
SFT的数据集主要有分成有用信息和无害化两部分其中有用信息有一般对话、数学和编程。 
在微调过程中有可能出现无限重复问题也就是不停输出相同的内容。这一现象会随着SFT中数学内容比例增加而提升这是因为数学中偶尔包含推理中的相似模式。为了解决这一问题使用了两阶段SFT和DPO来减少重复。 
两阶段SFT第一阶段涉及使用所有可用数据进行微调第二阶段专注使用对话数据进行微调。 
一些讨论 
在训练数据中添加多选题能显著提升模型解答多选的能力因为解答多选不仅需要拥有相关知识还需要理解选项含义。但是这并不会带来对话任务上的提升因此为了防止在基准任务过拟合在训练和微调中完全排除掉了多选数据关于system promptdeepseek LLM在Llama的基础上进行了轻微改动最终在67B的模型上有所提升但7B模型上性能反而下降。这可能是因为更大的模型对系统提示背后的意图有更好的理解使它们能够更有效地遵循指示并生成更优秀的回答。另一方面较小的模型难以充分理解系统提示训练和测试之间的一致性可能对它们的性能产生负面影响。 
总结 
我们介绍了DeepSeek LLMs一系列开源模型这些模型是基于2T tokens的庞大数据集从零开始训练的。在本文中我们提供了关于超参数选择、scaling-law以及我们进行的各种微调尝试的深入解释。 
我们校准了之前工作的scaling-law并提出了一种新的最优模型/数据扩展分配策略。此外我们提出了一种方法可以在给定的计算预算下预测接近最优的批量大小和学习率。我们进一步得出结论扩展规律与数据质量有关这可能是不同工作中扩展行为变化的根本原因。在扩展规律的指导下我们使用最佳超参数进行预训练并提供了全面的评估。 
DeepSeek Chat具有其他大型语言模型普遍存在的公认限制包括预训练后缺乏持续的知识更新、可能生成未经验证的建议等非事实信息以及倾向于产生幻觉。此外值得注意的是我们的中文数据的初始版本并不全面这可能导致在某些特定中文主题上的性能不佳。由于我们的数据主要由中文和英文来源组成模型在其他语言上的熟练程度仍然微妙应谨慎对待。 
DeepSeek LLM是一个长期项目致力于推进开源语言模型。 
很快我们将分别发布我们在代码智能和**混合专家MoE**技术报告。它们展示了我们如何创建高质量的代码数据进行预训练以及如何设计稀疏模型以实现密集模型的性能。目前我们正在构建一个更大且改进的数据集用于即将到来的DeepSeek LLM版本。我们希望在下一个版本中推理能力、中文知识、数学和代码能力将得到显著提升。我们的对齐团队致力于研究如何向公众提供有帮助、诚实和安全的模型。我们的初步实验表明强化学习可以提升模型的复杂推理能力。 
个人总结23年发布的第一版本的DeepSeek LLM是对开源LLM Llama的复刻技术团队在复刻的过程中积累了自己构建的训练数据和训练经验其中也包含了一些对超参数选择的探究。但整体来说由于训练数据量不够大等原因表现上也没有很突出。不过此时团队已经发现这些问题并已经在数据集、MoE架构以及RL方面有了清晰的认知和具体的行动这将为V2和V3的出现奠定基础。