代码以及视频讲授
本文所涉及全部资源均在传知代码平台可获取
本文概述
本文起首会介绍一下Llama2大模型࿰
c;然后会使用一个公开的中文法律讯断数据集࿰
8;部分࿰
9;进行Llama2提示学习的分类实战。
论文重要内容
这篇文章介绍了Llama 2࿰
c;这是由Meta AI团队开发和发布的一系列预训练和微调的大型语言模型࿰
8;LLMs࿰
9;࿰
c;参数规模从7亿到70
亿不等。Llama 2-Chat是为对话用例优化的微调模型࿰
c;它在大多数测试基准上的表现超过了现有的开源聊天模型࿰
c;而且在人类评估的有用性和安全性方面࿰
c;可能是封闭源模型的符合替换品。
文章具体描述了Llama 2-Chat的微调和安全性改进方法࿰
c;以便社区能够在这项工作的基础上进行构建࿰
c;并为LLMs的负责任发展做出贡献。此外࿰
c;文章还分享了在开发Llama 2和Llama 2-Chat过程中观察到的新现象࿰
c;比方工具使用的出现和知识的时空组织。
文章的重要内容包括:
- 介绍:大型语言模型࿰
8;LLMs࿰
9;作为AI助手的潜力和能力。
- 预训练:Llama 2模型的预训练方法࿰
c;包括数据、训练细节和评估。
- 微调:包括监视式微调࿰
8;SFT࿰
9;和强化学习与人类反馈࿰
8;RLHF࿰
9;的方法。
- 安全性:在预训练和微调阶段接纳的安全性步伐࿰
c;以及通过红队测试和迭代评估进步模型安全性的方法。
- 讨论:在开发过程中的学习和观察࿰
c;包括模型的范围性和伦理考虑。
- 相干工作:对大型语言模型范畴的相干研究进行回顾。
- 结论:Llama 2模型的发布对社区和负责任的AI发展的潜在影响。
文章还包含了一些附录部分࿰
c;提供了作者贡献、预训练和微调的额外细节、安全性的额外信息、数据注释、数据污染题目和模型卡片等。
论文重要贡献
文章的重要贡献可以总结为以下几点:
- Llama 2模型的开发与发布:开发了一系列从7亿到70
亿参数规模的预训练和微调大型语言模型࿰
8;LLMs࿰
9;࿰
c;特别是Llama 2-Chat࿰
c;这是一个为对话用例优化的微调模型。
- 性能优化:Llama 2-Chat在多个基准测试中表现优于现有的开源聊天模型࿰
c;而且在人类评估的有用性和安全性方面与一些封闭源模型相称。
- 微调方法的具体描述:文章提供了对Llama 2-Chat微调方法的具体描述࿰
c;包括监视式微调࿰
8;SFT࿰
9;和强化学习与人类反馈࿰
8;RLHF࿰
9;。
- 安全性改进:介绍了为进步Llama 2-Chat模型的安全性所做的积极࿰
c;包括安全特定的数据注释、微调和红队测试。
- 社区贡献:通过开放Llama 2模型࿰
c;鼓励社区在这项工作的基础上进行构建࿰
c;为负责任的LLMs发展做出贡献。
- 新观察和发现:分享了在开发Llama 2和Llama 2-Chat过程中的新观察࿰
c;比方工具使用的出现和知识的时空组织。
- 负责任的发布计谋:讨论了怎样安全地发布这些模型࿰
c;以及怎样通过负责任的使用指南和代码示例来促进安全摆设。
- 情况影响考量:评估了预训练过程中的碳足迹࿰
c;并讨论了通过开放模型来镌汰其他公司重复预训练本钱的潜在情况效益。
这些贡献展示了Meta AI在推动大型语言模型技术发展、进步模型性能和安全性、以及促进AI范畴负责任创新方面的积极。
Llama 2-chat的训练流程图:
[img]https://img-blog.csdnimg.cn/direct/5685e390
85e74599bfaf27eb53feb5a2.png[/img]
这个过程从使用公开的在线资源对Llama进行预训练开始。然后通过应用监视微调创建了Llama 2-Chat的初始版本。随后࿰
c;使用带人反馈的强化学习࿰
8;RLHF࿰
9;方法࿰
c;特别是通过拒绝采样和近端计谋优化࿰
8 PO࿰
9;࿰
c;对模型进行迭代优化。在整个RLHF阶段࿰
c;与模型增强并行的迭代奖励建模数据的积累对于确保奖励模型保持在分布范围内至关重要。
Llama2技术细节
预训练
为了创建新的Llama 2模型家族࿰
c;文章使用了优化的自回归变压器࿰
c;但进行了一些更改以进步性能。具体来说࿰
c;文章执行了更稳健的数据清算࿰
c;更新了数据混合࿰
c;在40
%以上的tokens上进行了训练࿰
c;将上下文长度增加了一倍࿰
c;并使用分组查询注意力࿰
8;GQA࿰
9;来进步大型模型的推理可扩展性。表1比较了新的Llama 2模型与Llama 1模型的属性。
[img]https://img-blog.csdnimg.cn/direct/df2a980
a2e60
496a9c2fc89964d8e93b.png[/img]
预训练数据
相较于llama的预训练1.4T个tokens数据࿰
c;llama2使用了2Ttokens数据进行训练。
[img]https://img-blog.csdnimg.cn/direct/a550
a74e7c1f456699c44b85beb51fec.png[/img]
这是预训练数据语种分布。可以看到英文占绝大部分࿰
c;以是原始的模型对英语的结果最好。
模型架构
Llama 2接纳了Llama 1中的大部分预训练设置和模型架构:
文章使用标准transformer架构
使用RMSNorm应用预归一化
使用SwiGLU激活函数
旋转位置嵌入(RoPE)
Llama 2与Llama 1的重要架构差异包括增加的上下文长度和分组查询注意力࿰
8;GQA࿰
9;
GQA如下:
[img]https://img-blog.csdnimg.cn/direct/826a0
f2a354f49918d1efb65b76ea324.png[/img]
中间就是GQA࿰
c;可以看到࿰
c;Q进行分组࿰
c;每组共享相同的V和K࿰
c;如许能够节流显存而又不怎么影响模型结果。
超参数设置
Llama 2使用AdamW优化器进行训练࿰
c;其中β1=0
.9࿰
c;β2=0
.95࿰
c;eps=10
−5。
使用余弦学习率计划࿰
c;预热20
0
0
步࿰
c;并将最终学习率衰减到峰值学习率的10
%。
使用0
.1的权重衰减和1.0
的梯度剪裁。
图5࿰
8;a࿰
9;显示了具有这些超参数的Llama 2的训练丧失。
分词器
Llama 2使用与Llama 1相同的标记器;它接纳了字节对编码࿰
8;BPE࿰
9;算法࿰
c;使用了来自PensionePiece的实现。与Llama 1一样࿰
c;将全部数字拆分为单个数字࿰
c;并使用字节分解未知的UTF-8字符。总词汇巨细为32k个标记
因此࿰
c;Llama 1和Llama 2的一些区别如下:
[img]https://img-blog.csdnimg.cn/direct/154984b0
acbe4288986387215234127a.png[/img]
Llama2预训练模型的评估结果
微调
指令微调
Quality Is All You Need. SFT数据集的质量很重要࿰
c;万级别的高质量结果就能达到很好的结果。使用供应商精标了27,540
条࿰
8;人工撰写prompt 和 answer࿰
c;包括 helpfulness 和 safety 两大类 ࿰
9;࿰
c;发现结果比几百万公开的还要好。
使用余弦学习率࿰
c;初始学习速率为2e−5࿰
c;权重衰减为0
.1࿰
c;批量巨细为64࿰
c;序列长度为40
96个tokens。
对于微调过程࿰
c;每个样本都包含一个提示和一个答案。为了确保模型序列长度精确添补࿰
c;将训练会集的全部提示和答案连接起来。使用一个特别的标记来分隔提示段和应答段。
使用自回归目标࿰
c;并从用户提示中消除tokens的丧失࿰
c;因此只对回答tokens进行反向传播。末了࿰
c;使用两个epoch微调模型。
人的反馈强化学习࿰
8;RLHF࿰
9;
RLHF是一种模型训练过程࿰
c;应用于微调的语言模型࿰
c;以进一步使模型行为与人类偏好和指令遵循相一致。文章网络的数据代表了经验上9个样本的人类偏好࿰
c;通过这些数据࿰
c;人类注释者可以选择他们喜欢的两个模型输出中的哪一个。这种人工反馈随后被用于训练奖励模型࿰
c;该模型学习人工注释者偏好的模式࿰
c;然后可以自动进行偏好决策。
人类偏好数据
在表6中࿰
c;文章报告了随着时间的推移网络的奖励建模数据的统计数据࿰
c;并将其与多个开源偏好数据集进行了比较࿰
c;这些数据集包括Anthropic Helpful和Harmless、OpenAI Summary、OpenAI-WebGPT、StackExchange、Stanford Human Preferences和Synthetic GPT-J。作者网络了一个大型数据集࿰
c;其中包含超过10
0
万个基于人类应用我们指定的指南进行的二进制比较࿰
c;称之为元奖励建模数据。请注意࿰
c;提示和答案中的标记数量因文本域而异。摘要和在线论坛数据的提示通常较长࿰
c;而对话式的提示通常较短。与现有的开源数据集相比࿰
c;这个偏好数据的特点是对话次数更多࿰
c;平均时间更长。
[img]https://img-blog.csdnimg.cn/direct/4b4faf929375487293b5323370
1723af.png[/img]
奖励模型
文章训练了两个独立的奖励模型࿰
c;一个针对帮助性(称为helpfulness RM)进行了优化࿰
c;另一个针对安全性(safety RM)进行了优化。并从预训练的聊天模型检查点初始化奖励模型࿰
c;因为它确保两个模型都受益于预训练中获得的知识。简而言之࿰
c;奖励模式“知道”聊天模型知道的是什么。
迭代微调
近端计谋优化(PPO)、拒绝采样微调。
这两种强化学习算法的重要区别在于:
•广度-在拒绝抽样中࿰
c;模型为给定提示探索K个样本࿰
c;而PPO只进行一次天生。
•深度-在PPO中࿰
c;在步骤t的训练期间࿰
c;样本是在前一步梯度更新后从t−1更新的模型计谋的函数。在拒绝采样微调中࿰
c;在应用类似于SFT的微调之前࿰
c;我们对给定模型初始计谋的全部输出进行采样以网络新的数据集。然而࿰
c;由于应用了迭代模型更新࿰
c;两种强化学习算法之间的根本差异就不那么显着了
文章还有很多关于模型结果、安全性等方面的具体分析࿰
c;这里就不再赘述了
中文LLaMA2模型Atom-7B-Chat实战
从Llama2的训练数据就能看得出࿰
c;这个大模型对中文的支持并不好࿰
c;因为模型在大量的英文数据集上进行预训练࿰
c;对英文的支持较好。
因此࿰
c;我们必要使用Llama2在大量中文数据集预训练微调后的模型上使用才会有比较好的中文结果
Atom就是在Llama2的基础上࿰
c;接纳大规模的中文数据进行持续预训练࿰
c;包含百科、册本、博客、消息、公告、小说、金融数据、法律数据、医疗数据、代码数据、专业论文数据、中文天然语言处理比赛数据集等
我们可以使用这个模型来做一个简朴的对法律案件辨认的任务。
数据集介绍
[img]https://img-blog.csdnimg.cn/direct/e2ab40
89db724f4bba4f3fbc3b3dd292.png[/img]
使用的是一个法律讯断数据集࿰
c;因为原来的数据集数量太多࿰
c;因此我就抽取了其中的三类犯罪范例进行实验。
data_fact是对案件的描述
data_accusation_clear是案件涉及的犯罪名称
data_accusation_labels是犯罪名称的数字标签࿰
8;0
࿰
c;1࿰
c;2࿰
9;
data_fact的一个例子如下:
其对应的data_accusation_clear如下:
表明上述案件中࿰
c;重要的罪名为盗窃
。
其对应的data_accusation_labels如下:
表明盗窃
这个标签࿰
c;使用0
来表现。
使用到的数据集罪名范例数量分布如下:
盗窃
4947
故意伤害 440
7
掳掠 40
71
因此可以看到࿰
c;这是一个三分类的题目
提示模板
考虑到装备的原因࿰
c;我们只进行prompt提示学习而不对模型本身进行微调࿰
c;即在零样本的情况下࿰
c;测试模型对法律讯断的能力。
提示模板设置如下:
- prompt_template = ['<s>Human: 请你明确指出以下案例是盗窃
- 、故意伤害、掳掠哪一项罪名?请注意࿰
- c;你的答案只能是“盗窃
- 、故意伤害、掳掠”三者其中之一而且答案不能超过4个字。', '\n</s><s>Assistant: ']
复制代码 这里对模型的评判也比较简朴࿰
c;当模型的结果中包含案件分类的类别时࿰
c;就判断模型的预测结果为精确࿰
c;否则就是错误。
实验结果
[img]https://img-blog.csdnimg.cn/direct/6a0
3468714ab4d5280
348bf70
759cf77.png[/img]
这是使用20
条数据进行测试的结果࿰
c;可以看到࿰
c;结果照旧不错的࿰
c;但是提示的约束并不是完全生效࿰
c;大部分情况都生效࿰
c;但是也有不符合提示的情况࿰
c;因此࿰
c;之后可以尝试更好的提示模板或者使用提示微调等࿰
c;提拔模型的表现结果。
当使用全数据时࿰
c;当输入数据的长度为512时࿰
c;三分类精确率为:54.0
4%
当输入长度为10
24时࿰
c;三分类精确率为:62.32%
可以看到࿰
c;当给模型的数据越多时࿰
c;模型的表现确实会提拔。
代码运行
安装须要的包
- pip install -r requirements.txt --default-timeout=120
- -i https://pypi.tuna.tsinghua.edu.cn/simple
复制代码 运行代码
源码下载
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |