赞
踩
最近Meta发布了其研发的第三代开源大语言模型Llama 3,并宣称Llama 3为迄今为止的最强开源大语言模型,本文对其进行简要学习记录。若想了解之前版本的Llama模型,可参考我之前写的论文笔记:Llama、Llama 2、CodeLlama。
Meta致力于通过 Llama 3构建与当今最好的专有模型媲美的最佳开源模型,在不久的将来使 Llama 3 具备多语言和多模态功能,拥有更长的上下文,并继续改进核心 LLM 能力,如推理和编码。
Meta对8B和70B参数的 Llama 3 模型进行了评测,目前在同等参数规模下取得最佳性能(评测细节可参考:https://github.com/meta-llama/llama3/blob/main/eval_details.md )。训练过程中的改进显著降低了误拒绝率,提高了模型响应的一致性和多样性,在推理、代码生成和指令遵循等能力上大大提升。
Llama 3在开发中致力于为真实场景优化性能。为此,作者开发了一个新的高质量人工评估集。这个评估集包含 1800 个提示,涵盖了 12 个关键用例:寻求建议、头脑风暴、分类、封闭问题回答、编码、创意写作、提取、扮演角色/角色扮演、开放问题回答、推理、重写和摘要。为了防止模型在这个评估集上意外过拟合,即使是Meta自己的建模团队也无法访问它。下面的图表显示了对这些类别和提示的人工评估的汇总结果,以及对 Claude Sonnet、Mistral Medium 和 GPT-3.5 的评估。
基于这个评估集的人工注释者的偏好排名突显了 70B的指令微调模型在真实场景中相比同等大小的竞争模型表现出的强劲性能,取得同等规模的 LLM 模型中的最先进水平。
为了开发出优秀的语言模型,作者认为创新、扩展并优化简洁性是非常重要的。为此,整个 Llama 3 项目重点关注四个关键因素:模型架构、预训练数据、扩大预训练规模以及指令微调。
Llama 3 采用一个相对标准的Decoder-only的Transformer架构。与 Llama 2 相比,进行了几个关键改进:
Llama 3 在超过 15T个token上进行预训练,这些数据都是从公开可用的来源收集而来的。这个训练数据集比用于 Llama 2 的数据集大七倍,其中包括四倍于以往的代码。同时,预训练数据集包含超过 5% 的高质量非英语数据组成,涵盖了超过 30 种语言。
为确保在最高质量的数据上进行训练,作者开发了一系列数据过滤流程。包括使用启发式过滤器、不适宜工作场合的内容过滤器、语义去重方法和文本分类器来预测数据质量。作者发现以往版本的 Llama 在识别高质量数据方面出奇地优秀,因此使用 Llama 2 生成用于文本质量分类器的训练数据。
作者还进行了大量实验,评估了在最终的预训练数据集中混合来自不同来源的数据的最佳方法。这些实验使作者能够选择一种数据混合方式,确保 Llama 3 在各种用例中都表现出色,包括日常问题、STEM、编码、历史知识等。
为有效利用预训练数据,作者付出了大量的努力来扩展预训练规模。具体而言,开发了一系列用于下游基准评估的详细扩展定律。这些扩展定律使作者能够选择最佳的数据混合方式,并对如何最有效地利用训练计算做出明智的决策。重要的是,扩展定律允许在实际训练模型之前预测最大模型在关键任务上的表现(例如,代码生成在 HumanEval 基准上的评估)。这有助于确保最终的模型在各种用例和能力方面表现出色。
在开发 Llama 3 的过程中,作者做出了几项新的扩展行为观察。例如,虽然对于 8B 参数的最佳训练计算量对应约为200B词元(参见上图,数据来自 Chinchilla论文),但作者发现,即使在模型训练了两个数量级更多的数据后,模型性能仍然会继续提升。8B和70B参数模型在进行高达 15T 词元的训练后,继续呈现对数线性的改善。更大的模型可以以更少的训练计算量达到与这些较小模型相匹配的性能,但通常更喜欢较小的模型,因为它们在推理过程中更加高效。
为训练最大的模型,作者结合了三种类型的并行化:
在两个定制的 24K GPU 集群上进行了训练运行,并开发了一个先进的新训练堆栈,用于自动化错误检测、处理和维护。同时,还极大地改进了硬件可靠性和静默数据损坏检测机制,并开发了新的可扩展存储系统,减少了检查点和回滚的开销。这些改进使得 Llama 3 训练的整体有效时间提高了约三倍,与 Llama 2 相比,提高了训练效率。
为了充分发挥在聊天用例中预训练模型的潜力,作者也在指令微调方法上进行了创新。作者的后训练方法是监督微调 (SFT)、拒绝抽样、近端策略优化 (PPO) 和直接偏好优化 (DPO) 的组合。在 SFT 中使用的提示质量和在 PPO 和 DPO 中使用的偏好排名对齐模型的性能有着巨大的影响。作者在模型质量方面取得的一些最大的改进来自于对这些数据进行精心策划,并对人工注释者提供的注释进行多轮质量保证。
通过 PPO 和 DPO 学习偏好排名也极大地提高了 Llama 3 在推理和编码任务上的性能。作者发现,如果向模型提出一个它难以回答的推理问题,有时模型会产生正确的推理轨迹:模型知道如何生成正确答案,但不知道如何选择它。通过偏好排名进行训练,使模型学会如何进行选择。
Meta的愿景是使开发者能够定制 Llama 3,以支持相关的用例,并使采用最佳实践并改进开放生态系统变得更加容易。通过此版本发布,作者提供了新的信任和安全工具,包括具有 Llama Guard 2 和 Cybersec Eval 2 的更新组件,以及引入 Code Shield —— 用于过滤由 LLMs 生成的不安全代码的推理时保护栏。
作者还与 torchtune 一起开发了 Llama 3,这是一个新的 PyTorch 原生库,用于轻松地编写、微调和实验 LLMs。torchtune 提供了内存高效和可定制的训练配方,完全使用 PyTorch 编写。该库与流行的平台集成,如 Hugging Face、Weights & Biases 和 EleutherAI,甚至支持 Executorch,可在各种移动和边缘设备上进行高效推理。无论是从提示工程到使用 Llama 3 与 LangChain,都有全面的入门指南,帮助从下载 Llama 3 到在生成式 AI 应用程序中进行规模部署。
作者采用了一种新的、系统级的方法来负责任地开发和部署 Llama,将 Llama 模型视为更广泛系统的一部分,这个系统让开发者处于主导地位。Llama 模型将作为一个系统的基础组成部分,开发者可以根据其独特的最终目标来设计这个系统。
Llama 3 很快将在所有主要平台上提供,基准测试显示,分词器提供了改进的分词效率,与 Llama 2 相比,可以减少高达 15% 的token数量。此外,Group Query Attention (GQA) 现在也已经添加到了 Llama 3 8B 中。因此,尽管与 Llama 2 7B 相比,该模型的参数数量增加了 10 亿,但改进的分词器效率和 GQA 有助于保持与 Llama 2 7B 相当的推理效率。
最大的模型有超过 400B 参数并仍在训练中。在未来几个月,作者将发布多个具有新功能的模型,包括多模态性、多语言、更长的上下文窗口以及更强大的整体能力。最终完成 Llama 3 训练后还将发布详细的研究论文。这里给出了一个400B+参数的模型的检查点(Checkpoint)的性能展示(不是最终的模型)。
最新模型已集成到 Meta AI 中,可以在 Facebook、Instagram、WhatsApp、Messenger 和网络上使用 Meta AI 来完成任务、学习、创作。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。