您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

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

时间:2023-07-28 09:12:09  来源:机器之心Pro  作者:

选自interconnects

作者:NATHAN LAMBERT

机器之心编译

编辑:rome

上周,Meta 发布了免费可商用的开源大模型 Llama 2,来自 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 的第二篇分析文章的主要内容。



Tags:Llama   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
解决LLaMA、BERT等部署难题:首个4-bit浮点量化LLM来了
大语言模型 (LLM) 压缩一直备受关注,后训练量化(Post-training Quantization) 是其中一种常用算法,但是现有 PTQ 方法大多数都是 integer 量化,且当比特数低于 8 时,量化后模型的...【详细内容】
2023-11-17  Search: Llama  点击:(144)  评论:(0)  加入收藏
让大模型自主探索开放世界,北大&智源提出训练框架LLaMA-Rider
大语言模型因其强大而通用的语言生成、理解能力,展现出了成为通用智能体的潜力。与此同时,在开放式的环境中探索、学习则是通用智能体的重要能力之一。因此,大语言模型如何适配...【详细内容】
2023-11-07  Search: Llama  点击:(238)  评论:(0)  加入收藏
20B量级大模型性能媲美Llama2-70B!完全开源,从基座到工具全安排明白了
新智元报道编辑:编辑部【新智元导读】国产模型开源纪录,又被刷新了!上海AI实验室等机构开源的InternLM-20B,竟然能和Llama2-70B打个平手?就在刚刚,国内开源模型参数量纪录,又被刷新...【详细内容】
2023-09-22  Search: Llama  点击:(265)  评论:(0)  加入收藏
RLHF何以成LLM训练关键?AI大牛盘点五款平替方案,详解Llama 2反馈机制升级
新智元报道编辑:LRS【新智元导读】AI领域日新月异,RLHF也逐渐成为过时的技术,但新路线尚不明朗:应该采用无需人工的反馈,还是继续改进RLHF机制?在ChatGPT引领的大型语言模型时代,一...【详细内容】
2023-09-18  Search: Llama  点击:(296)  评论:(0)  加入收藏
llama2.mojo比llama2.c快20%,最年轻的语言Mojo惊艳开发者社区
机器之心报道编辑:梓文你听说过 Mojo 的「传奇色彩」吗?如果说 Python 是最流行的语言,C 语言是最经典的语言,那么 Mojo 也有它的之最 —— 最年轻。Mojo 能够与 Pyth...【详细内容】
2023-09-13  Search: Llama  点击:(235)  评论:(0)  加入收藏
LLaMa 量化部署常用方案总结
本文导论部署 LLaMa 系列模型常用的几种方案,并作速度测试。包括 Huggingface 自带的 LLM.int8(),AutoGPTQ, GPTQ-for-LLaMa, exllama, llama.cpp。总结来看,对 7B 级别的 LLaM...【详细内容】
2023-09-05  Search: Llama  点击:(341)  评论:(0)  加入收藏
Open LLM榜单再次刷新,比Llama 2更强的「鸭嘴兽」来了
为了挑战 OpenAI 的 GPT-3.5 和 GPT-4 等闭源模型的主导地位, 一系列开源模型力量正在崛起,包括 LLaMa、Falcon 等。最近,Meta AI 发布了 LLaMa-2 模型,被誉为开源领域最强的大...【详细内容】
2023-08-17  Search: Llama  点击:(60)  评论:(0)  加入收藏
百度千帆大模型平台宣布接入LLaMA2等33个模型,上线103个Prompt模板
新浪科技讯 8月2日下午消息,百度智能云方面表示,千帆大模型平台已完成新一轮升级,重点升级了三大功能。百度智能云AI与大数据平台总经理忻舟表示,目前,千帆大模型平台已经全面接...【详细内容】
2023-08-02  Search: Llama  点击:(71)  评论:(0)  加入收藏
阿里云成首家支持Meta开源AI模型Llama2的中国企业
最近这两天,Meta 宣布开源Llama2大语言模型无疑是科技圈最热话题之一。这个开源大模型在国内市场也掀起了波澜。近日,阿里云机器学习平台PAI在国内率先对Llama2系列模型进行深...【详细内容】
2023-07-28  Search: Llama  点击:(45)  评论:(0)  加入收藏
Llama 2第二波划重点:过于「谨慎」、代码生成改进空间大
选自interconnects作者:NATHAN LAMBERT机器之心编译编辑:rome上周,Meta 发布了免费可商用的开源大模型 Llama 2,来自 Huggingface 的机器学习科学家 Nathan Lambert 根据论文内...【详细内容】
2023-07-28  Search: Llama  点击:(322)  评论:(0)  加入收藏
▌简易百科推荐
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(5)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(12)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(8)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(5)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(10)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(8)  评论:(0)  加入收藏
为什么都说 HashMap 是线程不安全的?
做Java开发的人,应该都用过 HashMap 这种集合。今天就和大家来聊聊,为什么 HashMap 是线程不安全的。1.HashMap 数据结构简单来说,HashMap 基于哈希表实现。它使用键的哈希码来...【详细内容】
2024-03-22  Java技术指北  微信公众号  Tags:HashMap   点击:(11)  评论:(0)  加入收藏
如何从头开始编写LoRA代码,这有一份教程
选自 lightning.ai作者:Sebastian Raschka机器之心编译编辑:陈萍作者表示:在各种有效的 LLM 微调方法中,LoRA 仍然是他的首选。LoRA(Low-Rank Adaptation)作为一种用于微调 LLM(大...【详细内容】
2024-03-21  机器之心Pro    Tags:LoRA   点击:(12)  评论:(0)  加入收藏
这样搭建日志中心,传统的ELK就扔了吧!
最近客户有个新需求,就是想查看网站的访问情况。由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的...【详细内容】
2024-03-20  dbaplus社群    Tags:日志   点击:(4)  评论:(0)  加入收藏
Kubernetes 究竟有没有 LTS?
从一个有趣的问题引出很多人都在关注的 Kubernetes LTS 的问题。有趣的问题2019 年,一个名为 apiserver LoopbackClient Server cert expired after 1 year[1] 的 issue 中提...【详细内容】
2024-03-15  云原生散修  微信公众号  Tags:Kubernetes   点击:(6)  评论:(0)  加入收藏
站内最新
站内热门
站内头条