论文阅读_大语言模型_Llama2

news2025/3/1 1:56:22

英文名称: Llama 2: Open Foundation and Fine-Tuned Chat Models
中文名称: Llama 2:开源的基础模型和微调的聊天模型
文章: http://arxiv.org/abs/2307.09288
代码: https://github.com/facebookresearch/llama
作者: Hugo Touvron
日期: 2023-07-19
引用次数: 110

1 读后感

这是一篇77页的论文,正文也有36页,让人望而却步。整体分成:Introduction,Pretraining,Fine-tune,Safety,Discussion,RelateWork, Conclusion几部分,如果没有时间,看看前三个部分,大概20页左右也就差不多了。

产出的模型从7B到70B参数,其成果除了基本的 LLAMA-2 模型,还有精调的 LLAMA 2-CHAT 模型,其精调模型与 ChatGPT (3.5) 性能相当,可作为闭源模型的替代品,且 70B 的体量也是可接受的。

在基础模型方面,文章中没有涉及很新的算法,主要偏重工程化,通过实验,产生一些经验性的结论,比如什么情况下会 over-fitting,对于 SFT 和 RLHF 标注应该如何分配资源,如何设置模型超参数,用蒸馏方法利用大模型训练小模型等等。

之前开源模型对 RLHF 的具体方法讨论不多,而本文算法调整主要在强化学习部分,比如在RLHF中如何训练奖利模型以更好地利用偏好标注;选择PPO和Rejection Sampling作为强化学习的策略优化网络参数。如果你对 RLHF 具体实现感兴趣,比较推荐看看这篇文章。

2 介绍

之前的开源模型效果往往与GPT-3相当,而像ChatGPT、BARD 和 Claude 这些封闭的大在模型经过 RLHF 精调,更符合人类偏好。精调往往需要巨大的算力和人工标注成本,且常是不透明且不易复制的,这限制了社区推进人工智能对齐的进展,文章致力于改进此问题。

文章产出包括:

  • Llama 2 :Llama 1 的更新版本,使用新的公开数据组合进行训练。还将预训练语料库的大小增加了 40%,将模型的上下文长度加倍,并采用分组查询注意力机制。最终发布具有 7B、13B 和 70B 参数的 Llama 2 基础模型。
  • Llama 2-Chat:Llama 2 的微调版本,针对对话用例进行了优化。也发布了具有 7B、13B 和 70B 参数的模型。

3 预训练

预测训练使用了 从 Touvron(2023 原 Llama论文)中描述的预训练方法。使用优化的自回归Transformer,又使用了:更稳健的数据清理,更新了数据混合,增加了 40% Token 进行了训练,将上下文长度加倍,并使用分组查询注意力 (GQA) 来提高大模型的推理可扩展性。表-1 比较了新 Llama 2 与 Llama 1。
[图片上传失败...(image-8c1ec7-1695215062279)]

从图-2中可以看到,纵轴是 Loss,当训练数据增加到2T时,模型仍在优化:

在这里插入图片描述
模型使用 A-100 80G 集群训练,表-2展示了模型使用的算力和碳排:

在这里插入图片描述
由于模型最终被发布,后续模型可以基于该模型调优,从这个角度看,开放的模型也可以算是减少了大模型的全球碳排。

在评测方面,文章对比了主流的开源模型和闭源模型,主要在:编码,常识推理,世界知识,阅读理解,数学,聚合评测(如:MMLU,BBH,AGI Eval)方面进行了评测:

在这里插入图片描述
在这里插入图片描述

可以看到,Llama-2 各项结果明显优于当前的开源模型,和闭源模型相比有差异。请注意:这是预训练的版本,后面还会继续比较 fine-tune 之后的结果。

4 精调

Llama 2-Chat 主要使用了对齐技术(包括 SFT 和 RLHF)需要大量的计算和标注资源。另外,还使用了 Ghost Attention (GAtt) 注意力机制来优化多轮对话。

4.1 SFT 有监督微调

SFT supervised fine-tuning 有监督微调,也叫作 instruction tuning 指令微调。一对标注数据一般包含一个提示和一个答案,训练时只对答案部分进行反向传播调优网络。一开始使用了公开的指令调优数据;在实验过程中发现,高质量的标注数据可有效提升模型效果,不需要太多标注,只需要上万条高质量数据即可达到很好效果,最终使用 27,540 个标注数据。从而把更多精力用于 RLHF 标注。

4.2 RLHF 人类反馈的强化学习

人类反馈的强化学习 RLHF(Reinforcement Learning with Human Feedback)用于对齐模型行为和人类偏好,简单地说,就是让标注者选择他们喜欢的两个模型输出中的哪一个。随后用标注数据训练奖励模型,该模型用于后续对偏好进行预测。

4.2.1 人类偏好的数据收集

标注过程如下:首先要求注释者编写提示,然后根据要求在两个模型的返回结果之间进行选择。除了选择哪个更好,还要求他们标记对更喜欢答案的喜爱程度:明显更好,更好,稍微更好,或者可以忽略/不确定。

标注关注答案”有用性“和”安全性“,在安全方面,比如:用户提问“怎么做炸弹”返回的答案就可能是不安全的。安全性标注包括三个选项:优选答案安全另一个不安全;答案都不安全;答案都安全。这里认为人们会优选更安全的答案。

表-6 展示了标注的数据和其它开源数据集的比较结果。可以看到:摘要和在线论坛数据的提示通常较长,而对话式的提示通常较短。与现有的开源数据集相比,文中收集的偏好数据具有更多的对话轮次,并且平均时间更长。

在这里插入图片描述

4.2.2 奖励模型

奖励模型的输入是:提示、模型响应(包括之前的上下文),输出是标量分数以指示模型生成的质量(有用性和安全性)。利用模型响应分数作为奖励,在后续的 RLHF 期间优化 Llama 2-Chat。

为了解决有用性和安全性有时相互抵消的问题,实验训练了两个单独的奖励模型,一个针对有用性进行优化,另一种针对安全性进行优化。另外,使用预训练的聊天模型初始化奖励模型,使模型都受益于预训练中获得的知识;模型架构和超参数与预训练语言模型相同,只是将下一个标记预测的分类头替换为用于输出标量奖励的回归头。

最终训练模型时使用了开源标注数据和新的标注数据。
在这里插入图片描述
从图-6中可以看到,在逐步收集数据过程中模型性能的变化:更多的数据和更大的模型会提高准确性,如果有更多数据,模型性能还可能进一步提升。后续实验也证明,在其他条件相同的情况下,奖励模型的改进可以直接转化为 Llama 2-Chat 的改进。

4.2.3 迭代微调

随着得到更多批次的偏好数据标注,通过训练更好的奖励模型并收集更多提示。从逐步训练迭代模型:从 RLHF-V1 … 到 RLHF-V5。这里使用了两种算法:近端策略优化 PPO 和 拒绝采样微调 Rejection Sampling fine-tuning。

在 RLHF (V4) 之前,仅使用拒绝采样微调,之后,将两者结合起来,在再次采样之前在生成的拒绝采样检查点之上应用 PPO。从而在探索和当前最优策略之间取得平衡。
图-8展示了温度的影响:更高的温度将对更多样化的输出进行采样,最佳温度是 T ∈ [1.2, 1.3]。
在这里插入图片描述

拒绝采样微调
从模型中采样 K 个输出,并根据奖励选择最佳候选者,然后使用选定的输出进行梯度更新。对于每个提示,奖励分数最高的样本被认为是新的金标准。

PPO 近端策略优化
PPO的优化目标是:最终通过训练模型得到策略 π,以最大化奖励 R。

arg ⁡ max ⁡ π E p ∼ D , g ∼ π [ R ( g ∣ p ) ] \arg \max _{\pi} \mathbb{E}_{p \sim \mathcal{D}, g \sim \pi}[R(g \mid p)] argπmaxEpD,gπ[R(gp)]

其中 R 是 奖励,D 是数据集,p是prompt,通过策略 π 产生 g。

最终的奖励,还考虑了当前策略与初始策略的差异作为惩罚项(使用KL散度计算),以避免过大的调整,保证了训练的稳定性。

R ( g ∣ p ) = R ~ c ( g ∣ p ) − β D K L ( π θ ( g ∣ p ) ∥ π 0 ( g ∣ p ) ) R(g \mid p)=\tilde{R}_{c}(g \mid p)-\beta D_{K L}\left(\pi_{\theta}(g \mid p) \| \pi_{0}(g \mid p)\right) R(gp)=R~c(gp)βDKL(πθ(gp)π0(gp))

另外,这里的奖励函数 Rc 综合了可用性和安全性。

4.3 多轮一致性

文中提出了 Ghost Attention (GAtt),这种微调使数据更关注多轮对话,而不会快速忘记早期的内容。请注意:这里的 Attention 不是对模型 Transformer 结构中注意力的优化。该方法让模型更注重第一轮对话,比如:请扮演XXX,用法语回答。其效果如下,右侧使用了 Gattr,可以看到,它更容易接受初始设置的”用表情回答“。
在这里插入图片描述

4.4 RLHF 结果

在这里插入图片描述

图-11 展示了 Llama 2-Chat 与 ChatGPT 相比的获胜率百分比,多次迭代微调后的演变结果。左侧图的判断标准是文中的奖励模型,可能对文中的模型有利,右侧的判断标准是GPT-4,更为中立。RLHF-V3 后文中模型在两个轴上都优于 ChatGPT(无害性和有用性 >50%)。

[图片上传失败...(image-ae0aa9-1695215349343)]

图-12展示了 Llama-2 各个版本与其它模型在人工评测方面的对比结果,从最右图可以看到,Llama-2 70B-chat 与 ChatGPT gpt-3.5-turbo-0301 效果相当,或者说已经超过了 ChatGPT 3.5。(图中的 tie 指平局率)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1026862.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PHP8的类与对象的基本操作之成员变量-PHP8知识详解

成员变量是指在类中定义的变量。在类中可以声明多个变量,所以对象中可以存在多个成员变量,每个变量将存储不同的对象属性信息。 例如以下定义: public class Goods { 关键字 $name; //类的成员变量 }成员属性必须使用关键词进行修饰&#xf…

淘宝分布式文件存储系统(一) -TFS

淘宝分布式文件存储系统( 一 ) ->>TFS 目录 : 什么是文件系统文件存储的一些概念文件的结构系统读取文件的方式为什么采用大文件结构的原因 文件系统 : 将我们的数据整合成目录或者文件,提供对文件的存取接口,基于文件的权限进行访问,简单的说,文件系统就是对文件进行…

List<HashMap<String,String>>实现自定义字符串排序(key排序、Value排序)

系列文章目录 SpringBootVue3实现登录验证码功能 Java实现发送邮件(定时自动发送邮件) 换个角度使用Redis去解决跨域存取Session问题 Redis缓存穿透、击穿、雪崩问题及解决方法 Spring Cache的使用–快速上手篇 更多该系列文章请查看我的主页哦 文章目录…

Vue路由与nodejs环境搭建

目录 一、Vue路由 1.1 SPA简介 1.2 路由简介 1.3 路由实现思路 1.3.1 引入vue-router的js依赖 1.3.2 定义组件 1.3.3 定义路由 1.3.4 组装路由器 1.3.5 将路由挂载根实例 1.3.6 定义触发路由的按钮 1.3.7 定义锚点 1.4 示例 二、nodejs环境搭建 2.1 nodejs简介 2…

MATLAB配置编译器(包括vs和mingw)

版本:matlab2022b,VS2022,mingw:8.1.0 之前安装好了matlab和vs后,在matlab的命令行输入 mex -setup时,自动找到并且配置好了vs编译器,可能是应为二者安装在了同一个根目录下,比如都在…

支付宝开发问题:很抱歉,系统监测到你的支付宝账号有异常,入驻失败,如需帮助请拨打热线

想开发个支付宝小程序,结果困难重重啊 妹的,这一个星期一直都被这个问题困扰,找了一个个体户资质,一直失败,专门去注册了一个公司,还是提交失败。 给支付宝客服打电话,跟没打一样,…

Kafka核心原理

一、kafka安装步骤 (1)配置profile文件 vim /etc/profile// KAFKA export KAFKA_HOME/opt/soft/kafka212 export PATH$KAFKA_HOME/bin:$PATHsource /etc/profile (2)创建kfkdata目录 cd /opt/soft/kafka212/ mkdir kfkdata …

OpenCV实现图像去水印功能(inpaint)

水印定位 需要根据图像特征获取水印的位置。 如图所示,图像左下角、右下角有水印。第一步,我们首先得定位水印所在位置。 Mat gray;cvtColor(src, gray, COLOR_BGR2GRAY);//图像二值化,筛选出白色区域部分Mat thresh;threshold(gray, thres…

可转债实战与案例分析——成功的和失败的可转债投资案例、教训与经验分享

实战与案例分析——投资案例研究 股票量化程序化自动交易接口 一、成功的可转债投资案例 成功的可转债投资案例提供了有价值的经验教训,以下是一个典型的成功案例: 案例:投资者B的成功可转债投资 投资者B是一位懂得风险管理的投资者&#…

LLM各层参数详细分析(以LLaMA为例)

网上大多分析LLM参数的文章都比较粗粒度,对于LLM的精确部署不太友好,在这里记录一下分析LLM参数的过程。 首先看QKV。先上transformer原文 也就是说,当h(heads) 1时,在默认情况下, W i Q W_i…

RabbitMQ - 死信、TTL原理、延迟队列安装和配置

目录 一、死信交换机 1.1、什么是死信交换机 1.2、TTL 1.2.1、什么是 TTL 1.2.2、通过 TTL 模拟触发死信 二、延迟队列 2.1、什么是延迟队列 2.2、配置延迟队列插件 2.2.1、延迟队列配置 a)下载镜像 b)运行容器 c)刚刚设定的Rabb…

jmeter下载安装教程

一、下载安装jdk(jmeter需要) 1、首页下载jdk,地址:Java Downloads | Oracle 2、下载se,注意需要oracle账号,注册即可 这里的8u384代表JDK 8版本,384代表子版本,u是update(更新)的…

flink集群与资源@k8s源码分析-运行时

1 运行时 运行时提供了Flink作业运行过程依赖的基础执行环境,包含Dispatcher、ResourceManager、JobManager和TaskManager等核心组件,本节分析资源相关运行时组件构建和启动。 flink没有使用spring,缺少ioc的构建过程相当复杂,所有依赖手动关联和置入,为了共享组件,fli…

jenkins容器内配置python项目运行环境(Python3.7.3)

目录 1.查看启动的容器2.进入jenkins容器内部3.使用wget:提示没有wget命令4.查看jenkins容器系统版本5.换成国内源(阿里)5.更新apt-get6.安装wget7.创建python存放目录8.下载python9.解压10.安装依赖11.运行脚本configure12.make编译make ins…

汽车三高试验离不开的远程试验管理平台-TFM

随着信息技术的高速发展,企业对远程试验实时监控与数据管理的需求日益增强。而利用远程试验信息协同技术,可突破部门与地域的限制,并把试验现场的车辆状态信息、试验数据和分析结果实时传输给数据分析部门和设计部门等,从而缩短时…

什么是HTTP/2?它与HTTP/1.1相比有什么改进?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ HTTP/2 简介⭐ 主要的改进和特点1. 多路复用(Multiplexing)2. 头部压缩(Header Compression)3. 服务器推送(Server Push)4. 二进制传输(Binary Protocol&…

12基于MATLAB的短时傅里叶变换( STFT),连续小波变换( CWT),程序已调通,可以直接运行。

基于MATLAB的短时傅里叶变换( STFT),连续小波变换( CWT),程序已调通,可以直接运行

jdk exe安装包如何自制zip解压版

jdk8 oracle官方下载页面 https://www.oracle.com/java/technologies/downloads/#java8-windows 可以看到,只有exe安装包 下载最新的exe安装包 解压 用7Zip解压 里面有好几个JAVA_CAB*文件夹,我们只需要关注两个:9和10,JAVA_CA…

【操作系统笔记】内存分配

内存对齐 问题:为什么需要内存对齐呢? 主要原因是为了兼容,为了让程序可以运行在不同的处理器中,有很多处理器在访问内存的时候,只能从特定的内存地址读取数据。换个说法就是处理器每次只能从内存取出特定个数字节的数…

卡尔曼滤波(Kalman Filter)C#测试

一、操作过程 刚学了一下卡尔曼滤波,具体原理还没细看,大致过程如下 分为两步,第一步Predict,以下两个公式 第二步Correct,以下三个公式 公式看起来很复杂,其中是我们要处理的数据, 是滤…