Llama 2第二波划重点:过于「谨慎」、代码生成改进空间大

简介: Llama 2第二波划重点:过于「谨慎」、代码生成改进空间大

上周,Meta 发布了免费可商用的开源大模型 Llama2,来自 Huggingface 的机器学习科学家 Nathan Lambert 根据论文内容迅速写了一篇分析文章来梳理 Llama 2 的技术要点,现在他又写了一篇后续文章来补充内容,以下是文章原文。

有用 VS 无害


有人发现,Llama-2-chat 在安全过滤器方面表现出一些过于敏感的行为。即使是询问一些无害的事情,比如「如何制作辣椒蛋黄酱」或「如何终止一个进程」,结果会导致该模型疯狂地表示它无法做到,如下图所示:



对于这种现象,一种常见的理论解释是使用 RLHF(Reinforcement Learning from Human Feedback)方法太久导致的,这也揭示了大型语言模型领域的趋势。在 RLHF 中,训练期间使用的主要性能指标是偏好模型(preference model)中奖励的单调增加。这就存在两个问题:a)训练时使用的奖励模型是不完整的。b)忽视了对中间训练技巧的有效评估。


只要我们训练的奖励模型在验证集上只能达到 65-75% 的准确率,模型就会因为过长时间的 RLHF 而出现这种情况。当模型对于奖励模型采取过多优化步骤时,它会过于偏向该奖励模型喜欢的行为,如果对模型进行更全面的评估可能会得出不同的结论。


目前还没有一个有效且全面的解决方案,但是本文作者的团队正在尝试在 RL 训练的每个 epoch 中使用 MT Bench 和其他自动的 NLP 评估方法。目前,至少在对话模型领域,LLM 的训练与用户期望非常不匹配。


Meta 的评估显示,对话模型可能有两个潜在的致命弱点:


1、该模型据会拒绝回答高达 27%的边缘问题,这与初创公司 Anthropic 的研究紧密相关。Anthropic 提出一种方案:首先开发出一个有用的语言模型,然后再让这个语言模型无害,因为同时进行这两项工作会导致模型出现「回避行为」。Meta 应该正在想办法解决这个问题。


这种「有用性 VS 无害性」之间的权衡是开源社区面临的根本问题。如下图(右)所示,模型在「边缘数据集」上拒绝回答的情况骤增。



2、奖励模型集成方法还有一个重要问题 —— 在有些情况下会出现高度分歧 —— 例如,有用性很强、安全性很低时应该怎么做,反之亦然,如下图所示:


显然,这种集成方法虽然是一个很棒的技术创新,但还需要进一步改进。


如今,在人工智能领域,「公开(public)」这个概念被极度滥用,网络上的信息和数据被视为公开的,但事实却并非如此。Meta 无法明确地说明他们是否涉嫌侵犯了版权或服务条款,但毫无疑问的是,Meta 在访问数据和文档方面还有很大的改进空间。

推理与微调


现在有很多方法可以让 7b 或 13b 的大模型在 GPU 上运行,并且将很快就可以在 iPhone 上运行。


但 70b 的更大模型要复杂一些。有研究表明 70b 的模型在加载 4 位量化的情况下会使用 36-38GB 的 VRAM。如果将量化增加到 8 位(float16),内存预计会相应地增加。而在任何单个 GPU 上使用完整的、非量化模型会非常困难。


在文本生成推理方面,HuggingFace 提供了如下 GPU 建议:


对于 7B 模型,建议选择 "GPU [medium] - 1x Nvidia A10G";

对于 13B 模型,建议选择 "GPU [xlarge] - 1x Nvidia A100";

对于 70B 模型,建议选择 "GPU [xxxlarge] - 8x Nvidia A100"。


HuggingFace 社区成员重新编写了 HuggingFace Transformers 的部分代码,使其对 Llama 模型更加节省内存、更快速,并支持使用 RoPE 方法扩展上下文长度。


具体来说,这种改进使 Llama 2 70B 模型在序列长度是 4096 时推理速度约为 10.5 tokens / 秒,并且没有出现内存溢出的情况。同时,序列长度为 8192 时,推理速度为每秒 8 tokens / 秒,仍然没有内存溢出。


在微调方面,使用 TRL 库(Transformer Reinforcement Learning)就可以很容易地运行有监督的微调,你可以在 T4 GPU 上训练 Llama 2 7B 模型,甚至可以在单个 A100 GPU 上训练 70B 模型。这说明这种技术是相当容易实现的,大多数消费级 GPU 都可以用于微调 7B 或 13B 的模型变体。值得注意的是,RLHF 方法需要在内存中存储更多的梯度计算。


然而,Open LLM 排行榜的榜首仍然是从 LLaMA v1 微调出来的模型,为什么会这样?



有些讨论表明,这似乎是因为排行榜上缺乏足够多的评估类型(即将进行更改),在评估集上或类似的数据集上微调模型很容易获得更高的性能。随着时间的推移,使用相同数据集微调 Llama 2 得到的模型几乎肯定会性能更好。

此外,Llama 2 还有一些值得关注的方面,包括:


工具的应用:Llama 2-Chat 仅通过语义就能够理解工具的应用和 API 参数,尽管其从未接受过使用工具的训练。将 LLM 用作工具具有极大的潜力。为了推动其发展,我们需要一些标准的评估环境。


Prompt 方面的问题:prompt 可能是导致回避行为的问题所在。Llama 2 的 prompt 是个需要持续关注的问题,因为根据 LLaMA v1 的评估结果,prompt 是导致不一致结果的重要因素。


代码生成:Llama 2 在代码生成方面不够好,很多人表示他们更愿意使用 ChatGPT。关于这一点,Yann Lecun 暗示 Meta 可能会再发布一个版本。


有趣的商业许可:Meta 的许可规定,在发布时拥有超过 7 亿活跃用户的公司不能商业化使用该模型。



Ghost 注意力


许多语言模型都存在一个问题:你在第一轮告诉它做某事(例如「用海盗的风格回答」,那么经过一两轮对话后模型就会忘记这个要求。


Meta 在论文中解释了这种多轮指令的要求:

在对话设置中,有些指令应该适用于所有对话轮次,例如简洁地回答,或者「扮演」某个角色。

为了让 Llama 2 有效地遵循多轮指令,Meta 提出了 Ghost Attention(GAtt),这是一种类似于上下文蒸馏的新方法。GAtt 并不是必须实现的步骤,但它确实能让语言模型更好地遵循多轮指令。


RLHF 的一些细节


RS


训练过程:Llama 2 使用的损失函数实际上并不是那么清楚。在 Meta 的论文中,他们说使用了迭代式训练,因此实际结果与 PPO(Proximal Policy Optimization)并没有太大的区别,但他们并未对损失函数进行详细说明。这有点让人难以理解,该研究几乎肯定是在高奖励样本上使用了 LLM 的标准自回归预测损失,而这对结果有很大影响。

 

研究团队观察到拒绝采样(RS)重新训练样本会导致模型能力退化。为了解决这个问题,他们重新引入了过去版本中的高分样本,改善了模型性能。这是 RLHF 方法中常见的对奖励模型过拟合的一种形式。


所有较小的对话模型都是在大模型的数据上进行训练的,ChatGPT 很可能也是这样训练的。这是因为科技公司希望充分利用其最大和最优模型的出色推理能力,将其优势延续下去。


在采样过程中,他们使用高温度(high temperature)参数来获得多样化的输出,并增加批量样本的最大奖励。


必须根据模型和批量大小(batch size)逐渐调整温度参数。Llama 2 的论文中有很多关于温度参数的内容,不太清楚有多少是针对特定情况的。


你可以参考如下项目的内容来更好地理解 Llama 2 模型:



项目地址:https://github.com/lvwerra/trl/blob/main/examples/notebooks/best_of_n.ipynb


PPO

在 Llama 2 中,PPO 的实现包含很多罕见的技巧,并继续简化了 RLHF 方法,包括:


使用了 InstructGPT 中提出的 SFT 约束项,通过在损失函数中添加额外的项来比较人类注释者编写的文本与模型生成结果之间的距离,以保持模型分布接近人类书写示例。

使用来自偏好集合的安全 tag,将生成结果传递给安全性偏好模型。这种方法很可能在未来会应用到更多的模型中,也有可能 GPT-4 模型已经使用了该方法。

对最后的线性层得分进行白化(whiten)处理以稳定训练。本质上讲,Llama 2 的研究创建了一个不同的线性层,帮助梯度在奖励模型中表现得更好。这是一个有趣的技巧。


以上就是 Nathan Lambert 关于 Llama 2 的第二篇分析文章的主要内容。


为了紧跟大模型技术前沿,我们建了一个 Llama 2 学习讨论社群,欢迎感兴趣的同学扫码入群,更高效地交流技术与实践。




原文链接:https://www.interconnects.ai/p/llama-2-part-2


相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
26天前
|
人工智能 自然语言处理 测试技术
利用Qwen-coder提升编程效率:代码生成、错误检测与重构建议
利用Qwen-coder提升编程效率:代码生成、错误检测与重构建议
40 2
|
2月前
|
机器学习/深度学习 自然语言处理 算法
通过RAG增强大模型回答原本无法回答的问题
RAG(检索增强生成)是一种结合信息检索和文本生成技术的方法,旨在提升大规模语言模型处理特定问题的能力。通过先从大量文档中检索相关信息,再利用这些信息生成更准确的答案,RAG特别适用于需要最新数据或专业知识的场景,如医疗咨询、法律建议等。此方法不仅提高了答案的质量和准确性,还增强了系统的可扩展性和适应性。随着技术进步,RAG有望在更多领域发挥重要作用。
51 2
|
2月前
|
数据采集 自然语言处理 算法
|
2月前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
64 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
2月前
|
人工智能 人机交互 智能硬件
从大模型的原理到提示词优化
本文介绍了大语言模型(LLM)的基本概念及其工作原理,重点探讨了AI提示词(Prompt)的重要性和几种有效技巧,包括角色设定、One-shot/Few-shot、任务拆解和思维链。通过实例解析,展示了如何利用这些技巧提升LLM的输出质量和准确性,强调了提供高质量上下文信息对优化LLM表现的关键作用。
71 0
|
5月前
|
人工智能 SEO
Sora信息问题之sora使用过程中的注意事项如何解决
Sora信息问题之sora使用过程中的注意事项如何解决
75 0
|
机器学习/深度学习 人工智能 数据可视化
【网安AIGC专题10.19】论文4:大模型(CODEX 、CodeGen 、INCODER )+自动生成代码评估:改进自动化测试方法、创建测试输入生成器、探索新的评估数据集扩充方法
【网安AIGC专题10.19】论文4:大模型(CODEX 、CodeGen 、INCODER )+自动生成代码评估:改进自动化测试方法、创建测试输入生成器、探索新的评估数据集扩充方法
477 1
|
7月前
|
机器学习/深度学习 自然语言处理
【大模型】如何处理微调LLM来编写创意内容?
【5月更文挑战第7天】【大模型】如何处理微调LLM来编写创意内容?
|
7月前
|
人工智能 自然语言处理 测试技术
论文介绍:LLMLingua-2——面向高效忠实任务无关性提示压缩的数据蒸馏方法
【5月更文挑战第2天】LLMLingua-2是一种针对大型语言模型(LLMs)的数据蒸馏方法,旨在实现高效且忠实的提示压缩。通过从LLMs中提取知识,该方法在压缩提示的同时保持关键信息,提高模型泛化能力和效率。采用Transformer编码器,LLMLingua-2将提示压缩转化为标记分类问题,确保压缩后的提示忠实度并减少延迟。实验表明,该方法在多个数据集上优于基线,并在压缩延迟上取得显著改进,但也存在泛化能力和扩展性限制。论文链接:https://arxiv.org/abs/2403.12968
148 5
|
7月前
|
数据采集 人工智能 算法
你要牢记的四个常用AI提示词框架:ICIO、CRISPE、BROKE、RASCEF,有助于获取更加稳定和高质量的内容
你要牢记的四个常用AI提示词框架:ICIO、CRISPE、BROKE、RASCEF,有助于获取更加稳定和高质量的内容
下一篇
DataWorks