HuggingFace 发布操作指南,教您如何训练从决策到部署的大规模模型

Heart of Machine 报告 Heart of Machine 编辑团队最近发表了 HuggingFace 发表的一篇长达 200 多页的技术博客,系统地分享了高级 LLM 培训的端到端经验。本博客重点讨论法学硕士发展过程中的“令人困惑的现实”。诚实地解释什么有效、什么无效以及如何解决现实世界的工程问题。本内容基于团队的实际项目经验,特别是最近使用 384 H100 GPU 训练 3B SmolLM3 参数模型的过程。该博客提供了详细的技术细节、代码片段和调试技巧,对于有兴趣为自己创建法学硕士的读者来说非常有用。博客地址:https://huggingface.co/spaces/HuggingFaceTB/smol-training-playbook#positional-encodings–long-context 训练指南针:为什么→什么→它是如何的 在投资技术细节(如何训练)之前,其中一些提出了重要的问题。 “我真的需要训练吗?这个模型?”考虑到世界级开源模型(Qwen、Gemma、Llama 等)的激增,大多数人可能不需要从头开始训练自己的模型。为什么文章列出了几个不应该训练模型的虚假原因。例如,“我们有闲置的计算能力”、“其他人都在这样做”以及“人工智能是未来”。下面将为您提供一个流程图,帮助您思考是否真的想要训练自己的模型。如果你发现:现有的模型不可用 – 立即进行文字工程无法解决问题 – 如果微调无法解决问题,你可以考虑从头开始训练。个性化预培训通常适用于三个关键领域: 研究:应回答的明确科学问题。我有一个问题。例如,尝试新的优化器、探索模型功能(例如仅使用强化学习)或测试新的数据集(例如纯合成数据)。生产:您的企业有具体规定c 无法满足的需求。高度专业化的词汇和逻辑,例如DNA、法律、金融等。它必须运行在特定硬件(无人机、本地FPGA等)上或有严格的延迟要求。您处于受监管的行业,需要对您的训练数据和模型行为进行 100% 的控制和可追溯。战略开源:有能力识别并填补当前开源生态系统中的特定空白。如果你弄清楚了“为什么”,你就能确定要训练“什么”吗?包括模型类型(集中式、MoE、混合式、一些新类型)、模型大小、架构细节和数据组合。同时,先前领域的目标决定了培训决策。例如,在设备上运行:训练小型且高效的模型。需要多语言功能:使用更广泛的分词器词汇。超长上下文:混合架构。这个决策过程分为两个阶段。将约束(从“为什么”)分配给特定的模型规格。验证ion:通过系统实验(消融实验)来测试您的选择。本文指出了成功的法学硕士培训团队的两个关键特征。重复速度:LLM培训是一个“边培训边学习”的过程。能够快速、频繁(例如每季度而不是每年)重复训练新模型的团队进步更快。数据管理:最好的团队是那些“痴迷于高质量数据”的团队。数据质量的影响远远超出了架构选择的范围。文章还建议,预训练团队最初不需要很多人(2-3人就够了)。关键是要有足够的算力并保持快速迭代。所有大型模型都有小马蝇。这要从口粮开始。在开始训练LLM之前,需要做出一系列重要的决策(架构、优化器、数据组合等)。尽管这些决定通常被认为是经过仔细考虑后做出的,但法学硕士的行为ior 通常是违反直觉的,仅靠推理是不够的。一个典型的例子是,使用明显“高质量”的 arXiv 科学文章中的数据会对模型的性能产生负面影响,尤其是小型模型,因为它们过于专业化并且缺乏常见文本的多样性。纯粹的思想是行不通的,所以答案是做经验主义者所做的事情,“做大量的实验”(即消融实验)。设置消融实验的完整过程:选择基线。不要从头开始。相反,选择成熟且经过验证的架构(例如 Llama 3.1、Qwen3 或 Gemma3)作为起点,以便您继承所有已知的优化和稳定性经验。你的基线很好,但它不适合你,所以你需要改变它。然而,“架构的改变也存在风险。”为此,必须遵守“风险消除”原则:“在看到任何内容是否确实有帮助之前,不要改变任何内容。”难度变化在于组件太多,而且它们之间互相影响。不可能测试所有组合。正确的方法是一次只测试一个潜在的变化。如果有效,请将其整合为新的底线,然后再尝试下一次更改。选择训练框架是一项重要的技术决策,需要在功能、稳定性和性能之间进行权衡。本文比较了一些传统的框架。 Megatron-LM/DeepSpeed:功能强大且经过实战考验,但拥有庞大而复杂的代码库。 TorchTitan:更轻,更容易学习和实验,但相对较新。 nanotron(作者自己开发)- 提供充分的灵活性,但需要大量投资用于开发和测试。磨损实验需要足够快(用于快速迭代)和可靠(结果可以外推到最终模型),有两种主要方法可以做到这一点:全尺寸模型,少量数据:使用磨损的大小最终模型(例如 SmolLM3 使用 3B 模型),但使用较少的标记进行训练(例如 100B 而不是 11T)。小规模替代模型:如果目标模型太大(例如参数1T),则使用缩小的替代模型(例如模型3B)进行实验。接下来,本文介绍了基本的 ablation 配置(1B Llama 模型、45B 令牌训练)并展示了配置文件的重要部分(数据、模型、优化器等)。了解什么有效:评估文章指出,评估实验结果时只看训练损失(Loss)是不可靠的。例如,维基百科的训练损失较低,但这并不意味着模型能力更强。更改分词器使得损失不再可以直接比较。因此,应使用更详细的事后评估。一个可靠的评估任务必须具备四个标准:单调性、低噪声、超随机性能和分类一致。尤其是在第一次体验中s,封闭格式(CF)优于多项选择格式(MCF)。这是因为后者(如 MMLU)在模型训练的早期阶段几乎随机运行,无法提供有效的初始信号。消融实验的真正价值不仅在于建立良好的模型,还在于为未来的调试提供信心。当核心训练不可避免地失败时,系统的实验结果可以帮助团队快速发现问题。然而,这个价值是非常昂贵的。以 SmolLM3 为例,消融和调试消耗了主训练运行一半以上的 GPU 时间。模型架构设计本节讨论高级目标的特定组件的选择和超参数化。我们详细介绍了LLM架构的设计和决策从开始到结束的完整决策过程。本文以名为 SmolLM3 的 3B 模型(30 亿个参数)为例,系统地提供了一个“本文深入探讨了构成现代 Transformer 的核心架构选择,指出当前模型(Qwen3、Gemma3 等)共享 Transformer 基础原理,但通过组件改进(GQA、位置编码等)解决特定问题(内存、稳定性等)。注意力机制:这是推理过程中的主要瓶颈,关键在 KV 缓存中。本文比较了 MHA(标准、高内存)、 MQA(极端压缩,可能的性能损失)和 GQA(分组查询)证实 GQA 在性能上与 MHA 相当,但提供了显着的 KV 缓存节省,使其成为 SmolLM3 的最终选择。g。标准 RoPE 对于长序列的外推能力有限。 SmolLM3 采用混合 NoPE(实际上是 RNoPE)策略。也就是说,它在 RoPE 层(处理短上下文)和 NoPE 层(处理远程搜索)之间交替。消融实验表明该方法不会牺牲短上下文。为长上下文奠定基础,同时提高性能。 Embedding共享:对于SmolLM3这样的小规模模型,embedding层占有比较大的比例。在本文中,我们通过消融实验证明,最好使用参数来增加模型的深度(增加层数)。事实证明,它比“解耦”输入和输出嵌入层更有效。因此,SmolLM3使用内置共享。稳定性:为了避免大规模训练失败,本文测试了Z loss、QK范数等技术。最后,SmolLM3 采用 OLMo2 技巧来消除重量坝埋层的ping以提高稳定性。本文比较了三种架构:密集型、MoE(混合专家)和混合型(混合模型)。 MoE 使用稀疏激活(仅激活少数“专家”)来以更多的容量换取更少的计算,但内存占用却要大得多。 Hybrid(如 Mamba)使用线性注意力或 SSM 来解决 Transformer 在长上下文中的计算瓶颈。 SmolLM3 出于“在设备上实现”(内存限制)的目标,坚持使用密集架构。然后文章转向经常被低估的 Tokenizer。分词器的选择涉及词汇量大小(影响压缩比和嵌入矩阵的大小)和算法(BPE 应用最广泛)。文章引入了“生育率(每个单词的平均 token 数)”和“连续单词的比例”作为评价指标。在比较Llama3、Gemma3、Qwen3等时,SmolLM3最终选择了128,000个词汇f或骆驼3。这是因为它提供了目标语言和模型大小之间的最佳平衡。接下来,本文将讨论决定训练过程的核心因素:优化器、学习率和批量大小。文章指出,直接从其他模型借用超参数虽然简单,但可能不是最优的,因为这些值针对架构、数据和特定限制进行了优化。最后是模型的大小(参数数量 N)和数据。我们观察到数据大小(代币数量 D)的经典权衡。在数据管理的艺术的这一部分中,我们探讨了数据管理的艺术,并强调在 LLM 培训中,数据是决定模型学习内容的关键因素,其重要性超出了模型的架构。模型架构决定了模型如何学习,数据决定了模型学习什么。如果数据质量差或者“混合比例”不合适,则不无论架构或超参数有多好,它们都不会被保存。本文指出,构建一个好的数据集不仅仅是收集好的数据,还包括设计训练组合。例如,过度增加编码数据的比例(“采样”)可能会隐式减少其他数据的比例,从而损害模型的整体功能。此外,对于像 SmolLM3 这样需要 11T 令牌的极长训练时间,仅使用“最佳质量”数据将导致大量数据重复,从而对模型性能产生负面影响。为了解决这些平衡问题,现代法学硕士培训已经从“静态混合”(例如 GPT-3)发展到多步骤培训(例如 Llama3、SmolLM2)。该方法在训练过程中动态改变数据的混合比例。中心思想是模型的最终行为很大程度上受到训练结束时看到的数据的影响。所以策略是:训练的初始阶段使用丰富多样,但质量稍差的数据,例如网页文本。在训练结束时(特别是在学习率降低的“退火阶段”)输入稀有的高质量数据(例如数学数据集或专门代码),以最大限度地提高其有效性。何时改变混合比例的决定通常由基于绩效的干预措施决定。例如,如果您发现模型的数学能力停滞不前,那就是引入更高质量数学数据的信号。数据配方确定过程基于系统的消融实验。与架构不同,数据混合的消融实验应在目标模型大小(例如 3B)下进行,因为模型的容量极大地影响其吸收不同数据的能力。本文介绍了两种主要的实验方法。从头开始消融。使用目标模型(例如3B)测试不同的初始混合比例以进入短期持有(例如 100B 代币)。退火实验:这是测试多步过程的关键。团队从主要训练中获取检查点(例如 7T 代币),然后使用新的数据组合(例如 40% 基线 + 60% 新数学数据)继续进行短期训练(例如 50B 代币),以验证后期引入的新数据的有效性。作者指出,尽管存在 DoReMi 等自动优化方法,但在实践中,仔细的手动消融实验仍然是确定 SOTA 模型(包括 SmolLM3)数据匹配的最佳方法。本文最后以 SmolLM3 为例展示如何应用这些原则。堪比“马拉松”的长期训练。目前大部分工作已经在进行中,包括 va 模型架构、最终数据混合方案和调整后的超参数。剩下的任务是设置基础设施(我们将在最后介绍)和“开始”培训。培训是一个过程漫长,堪比一场“马拉松”,期间可能会出现各种情况,所以要做好面对各种困难的准备。这部分主要涉及训练前的“飞行前检查”,过程中不可避免的意外情况,以及如何保持系统稳定、不间断。本文以启动SmolLM3之前执行的“飞行前检查”列表为例,在开始训练之前进行飞行前检查,包括准备基础设施、准备资格系统、检查点和自我恢复机制、记录指标日志以及检查训练设置。表示准备工作。特别是如果您想在最终按下“Train”按钮之前检查您的训练配置,请仔细检查您的训练配置文件、启动脚本、Slurm 提交命令等,以确保参数、路径和环境变量正确。当然,即使有好的p修复后,在大量训练的过程中仍然会出现一些问题。例如,在开始训练的几个小时内,系统性能突然下降,并且持续下降。引入新的数据加载器后,我们不再遇到性能下降的问题,但损失曲线变得比以前更加嘈杂和多变。总会出现不同的问题,因此要做好及时应对不同问题的准备。文章进一步指出,cModern LLM预训练一般采用多阶段训练策略(multi-stagetraining),每个阶段使用不同的数据混合比例,并在最后阶段扩展上下文长度。例如,Qwen3采用三阶段学习方案:一般阶段、推理阶段和长上下文阶段。 SmolLM3采用了类似的概念,并计划通过在训练过程中引入高质量的数据集来延长上下文持续时间,同时根据每个数据进行动态调整性能监测结果。超越基本模型:2025年训练后阶段。这部分主要介绍训练后(post-training)模型。以SmolLM3为例,完成预训练后,具有SmolLM3的原始能力,但在GPU温度冷却之前,进入后续训练阶段。当然,在开始任何工作之前,就像在培训前阶段一样,你应该问自己这三个问题:一次又一次的培训真的有必要吗?许多开源权重模型现在可以与各种任务的闭源模型相媲美,有些甚至可以在本地运行(使用量化和低计算设置)。你的目标只是一般性的吗?如果您是一名助理,可用的 Hugging Face Hub 模型可能就足够了,您不需要重新培训。您是否拥有高质量的特定领域数据?培训后的最大价值在于特定的任务或领域。如果常见模型在这些场景中表现不佳,您可以使用高质量的专业数据来专门优化结果。你能衡量成功吗?如果没有明确的指标,您将无法确定训练后您是否真的有所进步。如果您决定进行锻炼后,则会出现另一个问题:您希望通过锻炼后实现什么目标?即严格遵循说明且很少偏离主题的模型。可以灵活切换语气和角色的全能助理?我们是擅长数学、编码或推理任务的“思维推动者”,还是能够用多种语言流利交流的通用对话者?只有明确自己的目标,才能选择合适的技术路线。一旦前面的问题的答案明确,培训就开始了。主要步骤包括: 监督调整(SFT):插入主要任务功能。偏好优化(PO):直接从人类或人工智能偏好中学习;强化学习(RL) – 除了监控数据之外,还提高模型可靠性和推理深度。数据发现和管理:平衡数据多样性和质量。评估系统:持续跟踪进度并及早发现绩效下降。本文以SmolLM3为例,解答训练后阶段需要回答的一些关键问题。 SmolLM3 是一个很好的基础模型,但在发布之前需要进一步训练才能使用。与此同时,混合推理模型(例如Qwen3系列)正在迅速兴起,但开源社区缺乏公开可复制的训练配方。因此,SmolLM3的训练后目标是2分。高品质实用就是打造典范。贡献完整的开源培训解决方案,让我们凭借 Qwen3 模型 1.7B 和 4B 走在行业的最前沿。后期阶段在实际训练之前,需要做很多事情,比如选择后期训练框架、工具等。不同的框架支持不同类型的算法、调优方法、可扩展性等。本文解释了为什么几乎所有的训练后过程都从关键步骤的监督微调开始。原因很简单。因为它很便宜。这是因为与 RL 相比,SFT 需要的计算能力要少得多。在许多情况下,您可以在更短的时间内使用更少的 GPU 显着提高性能,而不会“耗尽芯片”。稳定性:与对奖励设计和超参数非常敏感的 RL 训练方法不同,SFT 可以“开箱即用”,并且很少失败。这是最好的基地。良好的 SFT 检查点通常可以提高大部分所需的性能,并使 DPO 和 RLHF 等方法的后续训练变得更容易、更高效。基础设施:一个被忽视的重要部分主要是基础设施。大多数参与模型训练的人都非常关心模型架构和数据质量,但却忽略了底层的信息构建并思考,“我会租一些 GPU,运行 Pytorch,然后就可以结束它了。”但事实并非如此。一个比喻是:“训练前是蛋糕的外壳,训练后是糖霜和浇头,基础设施是工业级烤箱。”没有它,什么都不会发生。例如,在 SmolLM3 训练过程中,使用了 384 个 H100 GPU,历时近一个月,总共处理了 110 亿个 GPU 令牌。工作量巨大,程序复杂。文章指出,关于基础设施,您首先需要了解的是 GPU 的构成、内存层次结构如何工作、它们是如何讨论 CPU 和 GPU、购买 GPU 时要寻找什么以及在投入长期训练任务之前如何测试它们。请注意,在 CPU 和 GPU 之间的通信路径中,足够快的 GPU 对于训练大型模型非常重要。然而,LLM 培训通常持续数周甚至数月,因此不断监控损害 GPU 的健康状况是维持训练稳定性的关键。本文以SmolLM3训练为例,列出了GPU综合诊断的工具。 GPU Flyer(内部工具)——一种 GPU 压力测试工具,用于检测热降频、内存错误和性能异常等潜在问题。 NVIDIA DCGM(数据中心 GPU 管理器)——一种广泛使用的 GPU 监控和诊断工具,可执行深度检查以验证 GPU 硬件、监控性能并确定故障和断电的根本原因。诊断范围包括计算单元的完整性。 PCIe连接稳定性。内存完整性。最后,关于使用多少 GPU 来训练模型,本文指出决策的核心在于平衡训练时间、成本和扩展效率的过程。用公式来估计: 其中,训练模型所需的总 FLOP 和计算量取决于模型的大小、训练代币的数量和架构设计。单个 GPU 的性能,或每个 GPU 每秒实际执行的 FLOP 数。目标培训持续时间是您期望完成培训所需的时间。以 SmolLM3 为例,基于 30 亿个参数的模型规模、110 亿个训练 token 和约 4 周的训练时间目标,整合到 GPU 需求方程中的结果约为 379 个 GPU。这个计算结果是有效的。显示范围。大约有 375-400 个 H100 GPU,最终推出了 384 个 H100。这个规模不仅符合我们的并行策略,而且还为训练过程中可能发生的节点故障或重启等意外情况提供了足够的缓冲空间,使模型能够在大约 4 周内成功完成训练。这再次证明了基础设施对于模型训练的重要性。不要忽视它。请更多详情请参考原文!
特别提示:以上内容(包括图片、视频,如有)由自有媒体平台“网易账号”用户上传发布。本平台仅提供存储服务、信息传递。
注:以上内容(包括图片和视频,如有)由社交媒体平台网易号用户上传发布,仅供参考。永旺存储服务。

admin

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注