本文分析和总结Llama模型中的核心技术点,了解当前大语言模型的一般趋势和做法。
-
模型家族(不同Size模型,预训练和指令微调版本)
-
开源与闭源
-
不同B的模型是独立训练还是量化得出的?
-
评测性能
-
模型卡片
-
输入输出安全性评测与保障
-
SFT和RLHF作用
-
15Ttoken和128K标记的分词器
-
训练数据
-
需要构建内部评测库
-
为什么需要微调版本
-
并行化策略与评估计算利用率
-
稳定性保障与评估
-
数据处理技巧
-
下一步工作
- 模型家族(不同Size模型,预训练和指令微调版本)
预训练提供70B和8B量级模型,8B更适合资源有限场景部署,但是质量弱于80B模型。
除了基本预训练模型提供给用户,也提供指令微调版本,用于对话,代码生产等场景直接用。
Meta Llama 3,可供广泛使用。此版本具有预训练和指令微调的语言模型,具有 8B 和 70B 参数,可支持广泛的用例。
使用预训练版本8B:
torchrun --nproc\_per\_node 1 example\_text\_completion.py \\ --ckpt\_dir Meta-Llama-3-8B/ \\ --tokenizer\_path Meta-Llama-3-8B/tokenizer.model \\ --max\_seq\_len 128 --max\_batch\_size 4`br`
使用指令微调版本8B:
torchrun --nproc\_per\_node 1 example\_chat\_completion.py \\ --ckpt\_dir Meta-Llama-3-8B-Instruct/ \\ --tokenizer\_path Meta-Llama-3-8B-Instruct/tokenizer.model \\ --max\_seq\_len 512 --max\_batch\_size 6`br`
其提供针对代码微调和负责任的AI微调的版本:
- 开源与闭源
Llama3是开源,但是注意License,目前Hugging Face上的模型有不同License,有的是到一定规模商用需要付费。
https://llama.meta.com/llama3/license/
3. 不同B的模型是独立训练还是量化得出的?
独立训练
4. 评测性能
指令微调版本模型:
目前评测角度及benchmark展示的为:
该评估集包含 1,800 个提示,涵盖 12 个关键用例:寻求建议、头脑风暴、分类、封闭式问答、编码、创意写作、提取、栖息角色/角色、开放式问答、推理、重写和总结。(asking for advice, brainstorming, classification, closed question answering, coding, creative writing, extraction, inhabiting a character/persona, open question answering, reasoning, rewriting, and summarization. )
总结起来是目前是纯语言模型,做文本输出,代码输出等场景。
为了防止过拟合数据,以及针对真实场景评测,同时做了人工评测。对比的是当前的主流开源模型或闭源模型。目前得胜率超过其他几个代表性模型。评测任务为:This evaluation set contains 1,800 prompts that cover 12 key use cases: asking for advice, brainstorming, classification, closed question answering, coding, creative writing, extraction, inhabiting a character/persona, open question answering, reasoning, rewriting, and summarization.
5. 模型卡片:
-
输入模型仅输入文本。
-
输出模型仅生成文本和代码。
-
自回归模型
-
纯解码器架构:根据Scaling Law,模型超参数和结构影响较小,遵从当前主流架构。
-
128K 标记词汇表的分词器,可以更有效地编码语言,从而大大提高模型性能。应对未来问题就是如果是国内的很多新网络用语,新的标记不一定能识别。所以新词发现本身和分词器相关,分词器和模型强绑定。分词器越大
-
所有模型都使用分组查询注意力 (GQA) 来提高训练和推理效率。
-
GQA和MoE可以看成是在不同维度上的粗粒度稀疏。GQA是在KV维度,MoE是在Linear layer维度。
-
8,192 个令牌的序列上进行了训练。也就是训练数据是8192个长度的上下文数据。所以也决定了上下文长度是8K。
-
训练数据量15T+的标记数量。
-
调整后的版本使用监督微调 (SFT) 和带有人类反馈的强化学习 (RLHF),以符合人类对有用性和安全性的偏好。
6. 输入输出安全性评测与保障
对Llama Guard模型为例:
它充当 LLM:它在其输出中生成文本,指示 给定的提示或响应是安全的/不安全的,如果基于策略不安全,则 还列出了违规的子类别。下面是一个示例:
7. SFT和RLHF作用
具体领域任务微调+遵从预定义指令及格式:调整后的版本使用监督微调 (SFT) 针对下游任务,例如code版本写代码。
安全对齐+已有的采样答案选择:带有人类反馈的强化学习 (RLHF),以符合人类对有用性和安全性的偏好。
为了在聊天用例中充分释放预训练模型的潜力,还对指令调整方法进行了创新。
后培训方法是监督微调 (SFT)、拒绝抽样、近端策略优化 (PPO) 和直接偏好优化 (DPO) 的组合。
SFT 中使用的提示的质量以及 PPO 和 DPO 中使用的偏好排名对对齐模型的性能有很大影响。
在模型质量方面的一些最大改进来自于仔细管理这些数据,并对人工注释者提供的注释执行多轮质量保证。
通过 PPO 和 DPO 从偏好排名中学习也大大提高了 Llama 3 在推理和编码任务上的表现。
为什么做RLHF:其发现,如果你问一个模型一个它难以回答的推理问题,模型有时会产生正确的推理痕迹:模型知道如何产生正确的答案,但它不知道如何选择它。对偏好排名的训练使模型能够学习如何选择它。
8. 15Ttoken和128K标记的分词器
因为文本中有大量冗余标记组合成文本,所以分词器代表去冗余后的唯一标记数量。
9. 训练数据
目前代价较高的是还需要引入人工标注数据。目前开源模型一般不用公司生产闭源数据,都是用的公开数据+人工新标注的数据。以防止数据泄露。一般根据发布时间为2024.4月推断,有1年的时间滞后性。
概述Llama 3 在来自公开来源的超过 15 万亿个数据代币上进行了预训练。微调数据包括公开可用的指令数据集,以及超过1000万个人工注释的示例。预训练和微调数据集均不包含元用户数据。
数据新鲜度8B 的预训练数据截止时间分别为 2023 年 3 月和 2023 年 12 月(70B 模型)。
10. 需要构建内部评测库
虽然很多是公开数据集但是需要内部评测库自动化评测。
In this section, we report the results for Llama 3 models on standard automatic benchmarks. For all the evaluations, we use our internal evaluations library. For details on the methodology see here.
11. 为什么需要微调版本
普通版本基本做文本类的任务,微调版本可以做代码生成,Math数学等更复杂的合成与推理任务。同时高B模型效果更好,新一代模型效果更好。
为了在聊天用例中充分释放预训练模型的潜力,我们还对指令调整方法进行了创新。
我们的后培训方法是监督微调 (SFT)、拒绝抽样、近端策略优化 (PPO) 和直接偏好优化 (DPO) 的组合。
SFT 中使用的提示的质量以及 PPO 和 DPO 中使用的偏好排名对对齐模型的性能有很大影响。
我们在模型质量方面的一些最大改进来自于仔细管理这些数据,并对人工注释者提供的注释执行多轮质量保证。
通过 PPO 和 DPO 从偏好排名中学习也大大提高了 Llama 3 在推理和编码任务上的表现。
我们发现,如果你问一个模型一个它难以回答的推理问题,模型有时会产生正确的推理痕迹:模型知道如何产生正确的答案,但它不知道如何选择它。对偏好排名的训练使模型能够学习如何选择它。
12 Scaling Law的应用
-
应用场景为了预估已知模型尺寸下,用多少数据,或多少计算量(训练时间)能达到预期准确度,进而进行预算的预估。
-
为了在 Llama 3 模型中有效地利用我们的预训练数据,我们投入了大量精力来扩大预训练。具体而言,我们为下游基准评估制定了一系列详细的扩展法则。
-
这些缩放定律使我们能够选择最佳的数据组合,并就如何最好地使用我们的训练计算做出明智的决策。重要的是,缩放定律允许我们在实际训练模型之前预测最大模型在关键任务上的性能(例如,在 HumanEval 基准测试中评估的代码生成——见上文)。这有助于我们确保最终模型在各种用例和功能中具有强大的性能。
-
我们在 Llama 3 的开发过程中对缩放行为进行了一些新的观察。例如,虽然 8B 参数模型的 Chinchilla 最优训练计算量对应于 ~200B 标记,但我们发现,即使在模型使用两个数量级的数据进行训练后,模型性能仍在继续提高。我们的 8B 和 70B 参数模型在我们对高达 15T 的代币进行训练后,继续对数线性改进。较大的模型可以与这些较小模型的性能相匹配,但训练计算较少,但通常首选较小的模型,因为它们在推理过程中效率更高。
13 并行化策略
评测指标:计算利用率 compute utilization。
本质是针对张量不同维度进行切分。
数据并行:输入数据的批尺寸维度
-
模型并行:权重张量的行和列维度
-
流水并行:工作流流水线切分
-
序列并行:输入数据的序列长度维度(标记维度)
为了训练我们最大的 Llama 3 模型,我们结合了三种类型的并行化:数据并行化、模型并行化和管道并行化。我们最高效的实现是在 16K GPU 上同时训练时,每个 GPU 的计算利用率超过 400 TFLOPS。我们在两个定制的 24K GPU 集群上执行了训练运行。为了最大限度地延长 GPU 正常运行时间,我们开发了一种先进的新训练堆栈,可自动执行错误检测、处理和维护。
其是混合精度训练,其达到了接近40%的计算利用率。
14 系统稳定性保障
评测指标:有效训练时间。总时间减去down机和hang时间,除以总时间的比例。
-
我们还大大改进了硬件可靠性和静默数据损坏检测机制
-
并开发了新的可扩展存储系统,以减少检查点和回滚的开销
-
这些改进使总体有效训练时间超过 95%
总之,这些改进将 Llama 3 的训练效率提高了 ~3 倍,比 Llama 2 提高了 ~3 倍。
15 数据预处理技巧
完成特定任务一定经过这类数据训练(例如多语言,但是语料数量和质量不同,英语已知是效果最好和语料数据十分相关),开源模型一般采用公开数据,数据会投入大量资金。数据质量一般通过过滤保留高质量数据,过滤方法是基于规则,字典和基于模型,围绕安全和质量。数据混合方法通过类似自动化机器学习做实验方式尝试出来。
-
为了训练最佳语言模型,管理大型、高质量的训练数据集至关重要。根据我们的设计原则,我们在预训练数据方面投入了大量资金。
-
Llama 3 在超过 15T 的代币上进行了预训练,这些代币都是从公开来源收集的。
-
我们的训练数据集比 Llama 2 使用的数据集大 7 倍,包含的代码是 Llama 2 的 4 倍。结合评测,看到效果有实质性大幅提升。
-
为了应对即将到来的多语言用例,Llama 3 预训练数据集的 5% 以上由涵盖 30 多种语言的高质量非英语数据组成。但是,其预计这些语言的性能水平与英语不同。
-
为了确保 Llama 3 接受最高质量的数据训练,我们开发了一系列数据过滤管道。这些管道包括使用启发式筛选器、NSFW 筛选器、语义重复数据删除方法和文本分类器来预测数据质量。我们发现前几代 Llama 在识别高质量数据方面出奇地好,因此我们使用 Llama 2 为 Llama 3 提供支持的文本质量分类器生成训练数据。【模型评判数据或合成数据以促进新模型训练】
-
我们还进行了广泛的实验,以评估在最终的预训练数据集中混合来自不同来源的数据的最佳方法。这些实验使我们能够选择一种数据组合,确保 Llama 3 在包括琐事问题、STEM、编码、历史知识等在内的用例中表现良好_。【特征工程,自动化机器学习再次】_
16 下一步工作
-
我们最大的模型参数超过 400B,这些模型仍在训练中。
-
在接下来的几个月里,将发布多个具有新功能的模型,包括
-
多模态(输入数据模态)
-
使用多种语言交谈的能力(输入的文本类型,分词器类型)
-
更长的上下文窗口(输入数据序列长度)
-
更强大的整体功能(已有评测的整体提升)
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。