当前位置: 首页 > news >正文

论文阅读_大语言模型_Llama2

英文名称: 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 指平局率)

相关文章:

论文阅读_大语言模型_Llama2

英文名称: 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 引用次数: 11…...

当量因子法、InVEST、SolVES模型等多技术融合在生态系统服务功能社会价值评估中的应用及论文写作、拓展分析

生态系统服务是人类从自然界中获得的直接或间接惠益,可分为供给服务、文化服务、调节服务和支持服务4类,对提升人类福祉具有重大意义,且被视为连接社会与生态系统的桥梁。自从启动千年生态系统评估项目(Millennium Ecosystem Asse…...

k8s Limits 限制内存

Limits 限制内存 在 Kubernetes (K8s) 中,可以使用 Limits(资源限制)来限制 Pod(容器)使用的内存数量。此处的 Limits 表示 Pod 在 K8s 集群中可用的最大内存量。一旦 Pod 内存使用超过这个限制,可能会触发…...

单片机第三季-第三课:STM32开发板原理图、配置、浮点运算单元

目录 1,开发板原理图 2,浮点运算单元(FPU) 1,开发板原理图 课程视频比较早,介绍了三款开发板。观看视频时用的开发板说和51单片机共板的STM32核心板,将51单片机从底座拆下来后,安…...

观察者模式 发布-订阅模式(设计模式与开发实践 P8)

文章目录 观察者模式运用实现 观察者模式 定义:他用来定义对象之间一种一对多的依赖关系,当一个对象状态发生改变时,所有依赖他的对象都会得到通知 运用 如果我们使用过 DOM 上的事件函数,那就接触过观察者模式 document.body…...

【日常业务开发】Java实现异步编程

【日常业务开发】Java实现异步编程 Java实现异步编程什么是异步异步的八种实现方式异步编程线程异步Future异步CompletableFuture实现异步Spring的Async异步Spring ApplicationEvent事件实现异步消息队列ThreadUtil异步工具类Guava异步 CompletableFuture异步编排工具类创建异步…...

学习笔记|模数转换器|ADC原理|STC32G单片机视频开发教程(冲哥)|第十七集:ADC采集

文章目录 1.模数转换器(ADC)是什么?手册说明: 2.STC32G单片机ADC使用原理19.1.1 ADC控制寄存器(ADC_CONTR)19.1.2 ADC配置寄存器(ADCCFG)19.1.4ADC时序控制寄存器(ADCTIM)19.3 ADC相…...

OpenCV实现“蓝线挑战“特效

原理 算法原理可以分为三个流程: 1、将视频(图像)从(顶->底)或(左->右)逐行(列)扫描图像。 2、将扫描完成的行(列)像素重新生成定格图像…...

容器管理工具 Docker生态架构及部署

目录 一、Docker生态架构 1.1 Docker Containers Are Everywhere 1.2 生态架构 1.2.1 Docker Host 1.2.2 Docker daemon 1.2.3 Registry 1.2.4 Docker client 1.2.5 Image 1.2.6 Container 1.2.7 Docker Dashboard 1.3 Docker版本 二、Docker部署 2.1 使用YUM源部署…...

js判断数据类型的方法

简单数据类型用:typeof, // 可以直接typeof空格接数据的方式,也可以typeof(数据)的方式使用 console.log(typeof ""); //string(检验字符串没问题) console.log(typeof 1); //number(检验数字没问题) console.log(typ…...

达梦数据库随系统开机自动启动脚本

写一个脚本,实现在服务器开机后自动启动达梦数据库的功能。 1. 在/etc/init.d/目录下,编写脚本,并将脚本命名为startdm.sh。脚本内容实现如下: #!/bin/bash #chkconfig:2345 80 90 #decription:启动达梦# 切换到 dmdba 用户 su …...

Python开发利器之VS Code

Python官方提供了一个Python集成开发环境(IDE): IDLE (Integrated Development and Learning Environment)。 它提供了一个图形用户界面,可以让开发者编写、调试和执行Python程序。IDLE包含Python解释器、代码编辑器、调试器和文件…...

【Axure视频教程】输入框控制滑动评分条

今天教大家在Axure里如何制作输入框控制滑动评分条的原型模板,可以通过鼠标左右拖动滑块,也可以点击条形让滑块移动到指定位置,标签和输入框里会返回具体的分值,分值由滑块所在的位置动态计算而成;也可以在输入框里输入…...

【学习笔记】[AGC064C] Erase and Divide Game

有点难😅,看到比自己低一级的选手场切这道题就更绷不住了😇 考虑 从低到高位 建立 trie \text{trie} trie 树,但是因为是对反串建立的,所以编号连续的点在 trie \text{trie} trie 树上的位置是分散的😅 …...

算法通关村-----数组中元素出现次数问题

数组中出现次数超过一半的数字 问题描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。详见剑指offer39 问题分析 最直接的方式就是使用hashMap,遍历给定数组&#xff0c…...

Qt-键盘消息的传递-键盘消息的获取-C++

文章目录 1.概述2.焦点3.强制获取键盘消息4.键盘常用组合方法5.总结 1.概述 QKeyEvent 类用来描述一个键盘事件。当键盘按键被按下或者被释放时,键盘事件便会被发送给拥有键盘输人焦点的部件。 QKeyEvent 的 key() 函数可以获取具体的按键,对于 Qt 中给…...

数据结构与算法(五)--链表概念以及向链表添加元素

一、前言 今天我们学习另一种非常重要的线性数据结构–链表,之前我们已经学习了三种线性数据结构,分别是动态数组,栈和队列。其中队列我们额外学习了队列的另一种实现方式–循环队列。其实我们自己实现过前三个数据结构就知道,它…...

计算机视觉与深度学习-图像分割-视觉识别任务02-目标检测-【北邮鲁鹏】

目录标题 参考目标检测定义深度学习对目标检测的作用单目标检测多任务框架多任务损失预训练模型姿态估计 多目标检测问题滑动窗口(Sliding Window)滑动窗口缺点 AdaBoost(Adaptive Boosting)参考 区域建议 selective search 思想慢…...

Flink——Flink检查点(checkpoint)、保存点(savepoint)的区别与联系

Flink checkpoint Checkpoint是Flink实现容错机制最核心的功能,能够根据配置周期性地基于Stream中各个Operator的状态来生成Snapshot,从而将这些状态数据定期持久化存储下来,从而将这些状态数据定期持久化存储下来,当Flink程序一…...

[篇五章五]-如何禁用 Windows Defender-我的创作纪念日

################################################## 目录 禁用掉烦人的 Windows Defender 在本地组策略编辑器中禁用 Windows Defende 关闭 Microsoft Defender 防病毒 禁止 Defender 开机自动运行 重新激活 Windows Defender #######################################…...

什么情况下使用微服务?

单体架构图参考网络: 1. 什么是单体应用 单体应用就是将应用程序的所有功能都打包成一个独立的单元,最终以一个WAR包或JAR包存在,没有外部的任何依赖,里面包含DAO、Service、UI等所有的逻辑。 优点: 1&…...

【Linux】Ubuntu美化主题【教程】

【Linux】Ubuntu美化主题【教程】 文章目录 【Linux】Ubuntu美化主题【教程】1. 安装优化工具Tweak2.下载自己喜欢的主题3. 下载自己喜欢的iconReference 1. 安装优化工具Tweak 首先安装优化工具Tweak sudo apt-get install gnome-tweak-tool安装完毕后在菜单中打开Tweak 然后…...

spring-boot2.x,使用EnableWebMvc注解导致的自定义HttpMessageConverters不可用

在json对象转换方面,springboot默认使用的是MappingJackson2HttpMessageConverter。常规需求,在工程中使用阿里的FastJson作为json对象的转换器。 FastJson SerializerFeatures WriteNullListAsEmpty :List字段如果为null,输出为[],而非nu…...

2023-09-20 Android CheckBox 让文字显示在选择框的左边

一、CheckBox 让文字在选择框的左边 &#xff0c;在布局文件里面添加下面一行就可以。 android:layoutDirection"rtl" 即可实现 android:paddingStart"10dp" 设置框文间的间距 二、使用的是left to right <attr name"layoutDirection">&…...

目标检测YOLO实战应用案例100讲-基于改进YOLOv5的口罩人脸检测

目录 前言 国内外研究现状 目标检测研究发展 国内外口罩人脸检测研究现状...

CentOS7 yum安装报错:“Could not resolve host: mirrorlist.centos.org; Unknown error“

虚拟机通过yum安装东西的时候弹出这个错误&#xff1a; 1、查看安装在本机的网卡 网卡ens33处于disconnected的状态 nmcli d2、输入命令&#xff1a; nmtui3、选择网卡&#xff0c;然后点击edit 4、移动到Automatically connect按空格键选择&#xff0c;然后移动到OK键按空格…...

关于token续签

通常我们会对token设置一个有效期&#xff0c;于是&#xff0c;就有了token续签的问题。由于token并没有续时机制&#xff0c;如果不能及时的替换掉过期的token&#xff0c;可能会拦截用户正常的请求&#xff0c;用户只能重新登录&#xff0c;如果提交的信息量很大&#xff0c;…...

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

淘宝分布式文件存储系统( 二 ) ->>TFS 目录 : 大文件存储结构哈希链表的结构文件映射原理及对应的API文件映射头文件的定义 大文件存储结构 : 采用块(block)文件的形式对数据进行存储 , 分成索引块,主块 , 扩展块 。所有的小文件都是存放到主块中的 &#xff0c;扩展块…...

Java中synchronized:特性、使用、锁机制与策略简析

目录 synchronized的特性互斥性可见性可重入性 synchronized的使用方法synchronized的锁机制常见锁策略乐观锁与悲观锁重量级锁与轻量级锁公平锁与非公平锁可重入锁与不可重入锁自旋锁读写锁 synchronized的特性 互斥性 synchronized确保同一时间只有一个线程可以进入同步块或…...

记一次clickhouse手动更改分片数异常

背景&#xff1a;clickhouse中之前是1分片1副本&#xff0c;随着数据量增多&#xff0c;想将分片数增多&#xff0c;于是驻场人员手动添加了分片数的节点信息 <clickhouse><!-- 集群配置 --><clickhouse_remote_servers><feihuang_ck_cluster><sha…...

建设与管理局网站/sem竞价代运营

1.常用事件 onload&#xff1a;当页面中的所有的标签&#xff0c;文档&#xff0c;图片等资源加载完毕后会触发onload事件      onclick&#xff1a;鼠标单击事件      ondblclick&#xff1a;鼠标双击事件      onmousedown&#xff1a;鼠标按下事件    …...

中央党建网站党建文化建设点/我在百度下的订单如何查询

方法调用方式 在scala中&#xff0c;有以下几种方法调用方式&#xff0c; 后缀调用法 中缀调用法 花括号调用法 无括号调用法 在后续编写spark、flink程序时&#xff0c;我们会使用到这些方法调用方式 1、后缀调用法 这种方法与Java没有区别。 语法 scala 对象名.方法名(参数) …...

wordpress php 採集/app推广的常用方法

一&#xff1a;在页面上增加类和删除类的方法&#xff1a; 增加类&#xff1a;传两个参数 节点和类名 方法如下&#xff1a; function addClass(obj,className){ obj.className" " className; return obj; } 删除类 也是传两个参数 节点和…...

旅游网站设计的目的/营销型网站建设设计

1.创建项目,项目名称(springdemo6),如图所示2.在项目中创建目录(src->源码目录,test->测试目录,source->配置文件目录,lib->jar包目录),如图所示3.在lib中创建相应的jar包目录,主要用于区分jar包.如图所示4.在lib的相应的jar包目录中添加jar包.如图所示5.在src目录…...

手机销售网站怎么做/百度网站排名规则

Composer 前言 最近看了php之道&#xff0c;作为一个现代phper&#xff0c;开发的时候跟的上潮流&#xff0c;而不是因循守旧&#xff0c;停留在模板解析语言阶段&#xff0c;扯远了…最近内部在搭建一个订单数据中心项目&#xff0c;总的需求就是同步商城跟管易上面的订单数…...

福州公司注册代办营业执照/旺道seo网站优化大师

江西省教育考试院高考成绩查询系统入口2021http://www.jxeea.cn 江西省教育考试院网站是2021江西高考官方网站&#xff0c;http//wwwjxeeacn江西教育考试院提供2021江西高考报名、江西高考志愿填报、2021江西高考成绩查询查分系统、2021江西高考录取分数线结果查询系统等17.考试…...