【论文笔记】Llama 3 技术报告

在这里插入图片描述
Llama 3中的顶级模型是一个拥有4050亿参数的密集Transformer模型,并且它的上下文窗口长度可以达到128,000个tokens。这意味着它能够处理非常长的文本,记住和理解更多的信息。Llama 3.1的论文长达92页,详细描述了模型的开发阶段、优化策略、模型架构、性能比较、新功能等。

在这里插入图片描述

pre-train(预训练阶段)

训练的两个阶段,第一个阶段是预训练做词语预测或者文章总结;第二个阶段是后训练用来做模型的微调,或者是人类偏好对齐。
pre-train(预训练阶段)
模型的预训练分多阶段,第一个阶段是初始化的预训练,第二阶段是长上下文预训练,第三阶段是退火模拟。

初始化

● 模型在训练的初始阶段,学习率从一个较低的值逐渐增加(称为线性预热)
● 为了提高训练的稳定性,在训练初期使用较小的批次大小。在训练过程中,为了提高效率,逐步增大批次大小。
● 增加非英语数据、数学数据、网络数据减少了那些在训练过程中被识别为低质量的数据子集(交叉熵自动计算&人工标注网站)。

长序列训练

● 目标:最终的预训练目标是让模型能够处理长达128K(128,000)个tokens的上下文序列。
● 逐步增加上下文长度:为了让模型逐渐适应更长的上下文长度,预训练过程中按阶段逐步增加序列长度。每个阶段会先让模型在新的序列长度下进行预训练,直到模型适应这个新的长度。
● 成功适应的评估:模型能够完美解决在这个长度下的“needle in a haystack”(大海捞针)任务。这种任务是指在很长的文本中找到特定的信息或答案。
● 最后阶段的长序列预训练使用了大约8000亿(800B)个训练tokens。

模拟退火

● 预训练过程的最后阶段:在预训练的最后阶段,使用了 4000 万个文本标记(tokens)来训练模型。
● 学习率(模型在每次迭代中调整其参数的速度)被线性下降到 0。也就是说,训练开始时学习率较高,然后逐渐降低,直到最后完全停止调整。
● 模型检查点的平均:在学习率逐渐降低的过程中,使用了一种叫做“Polyak 平均”的方法(根据 Polyak 在 1991 年提出的方法)。这意味着,取了多个时间点的模型参数的平均值,来得到一个更稳定、性能更好的最终模型。(模型)

post-train(后训练阶段)

在这里插入图片描述

核心策略是奖励模型和语言模型。
奖励模型:这个模型的目的是帮助评估生成的文本是否符合人类的偏好。它基于预训练好的模型,使用人类注释的偏好数据进行训练。
● 训练奖励模型:在预训练好的模型基础上,使用人类注释的偏好数据来训练奖励模型。人类注释的偏好数据是指人类标记哪些生成的文本更符合他们的期望或喜好。
● 有监督微调(SFT):接下来,对预训练好的模型进行有监督微调(SFT),这是利用具体任务的标注数据来进一步训练模型,使其在特定任务上表现更好。Tricks:使用奖励模型进行拒绝采样,提高用于微调的数据质量。
● 直接偏好优化(DPO):最后,使用直接偏好优化(DPO)进一步调整模型。DPO方法通过奖励模型的反馈,直接优化模型生成的文本,使其更符合人类的偏好。

聊天对话协议

● 定义聊天对话协议:为了让模型理解人类的指令并执行对话任务,需要定义一个聊天对话协议。
● 工具使用:与前一代模型相比,Llama 3 拥有新功能,例如工具使用,这可能需要在一个对话轮次内生成多个消息并发送到不同的地方(例如,用户、ipython)。
奖励模型
● 奖励模型的训练:在预训练好的模型基础上训练一个奖励模型,这个模型用于评估和提升模型的各项能力。
● 使用偏好数据:使用所有的偏好数据来训练奖励模型,但会过滤掉那些回应相似的样本。
● 偏好数据的处理:除了标准的偏好对(即chosen, rejected),还为一些提示创建了第三种“edited”,这些回应是在选中回应的基础上、人工进一步改进的。因此,每个偏好排序样本会有两到三种回应,且有明确的排序(edited > 即chosen > rejected)。

监督训练

● 使用奖励模型进行拒绝采样:使用之前训练的奖励模型对人工标注的数据进行拒绝采样。这意味着会根据奖励模型的评分来筛选出高质量的回应。
● 监督微调阶段:这一阶段称为监督微调(SFT),尽管很多训练目标是模型生成的。这意味着用高质量的训练数据对模型进行进一步调整,使其性能更好。

直接偏好优化

● DPO:一种优化算法,用于调整模型以更好地符合人类偏好。相比其他算法(如PPO),DPO在大规模模型上的计算需求更少,性能更好,尤其是在遵循指令的基准测试上表现出色。
● 训练数据:使用最新收集的偏好数据,这些数据来自于之前优化轮次中表现最好的模型。这样,训练数据更符合正在优化的策略模型的分布。

实验结果

改进了一些具体的能力,以提升模型的整体表现。
● 代码能力:提升模型理解和生成代码的能力。
● 多语言能力(:让模型能够处理多种语言,而不仅限于一种语言。
● 数学和推理能力:提高模型进行数学计算和逻辑推理的准确性和能力。
● 长上下文处理能力:增强模型处理长文本的能力,使其在面对长篇文章时表现更好。
● 工具使用能力:提升模型使用各种工具和接口的能力。
● 事实性:确保模型提供的信息准确且基于事实。
● 可引导性:增强模型按照用户指令进行操作和回答的能力。

参考文献

arxiv-pdf:https://arxiv.org/pdf/2407.21783v3
llama官方主页:https://llama.meta.com/

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

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

相关文章

JVM深入原理(一+二):JVM概述和JVM功能

目录 1. JVM概述 1.1. Java程序结构 1.2. JVM作用 1.3. JVM规范和实现 2. JVM功能 2.1. 功能-编译和运行 2.2. 功能-内存管理 2.3. 功能-即时编译 1. JVM概述 1.1. Java程序结构 1.2. JVM作用 JVM全称是Java Virtual Machine-Java虚拟机 JVM作用:本质上是一个运行在…

SQL Server Integration Services (SSIS) 服务无法启动

问题现象: 安装 SQL Server 2022 后,SQL Server Integration Services (SSIS) 服务无法启动,日志报错 “服务无法响应控制请求”(错误代码 1067)或 “依赖服务不存在或已标记为删除”。 快速诊断 检查服务状态与依赖项…

Spring Boot 定时任务的多种实现方式

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

Java基础之反射的基本使用

简介 在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意属性和方法;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。反射让Java成为了一门动…

AI产品的上层建筑:提示词工程、RAG与Agent

上节课我们拆解了 AI 产品的基础设施建设,这节课我们聊聊上层建筑。这部分是产品经理日常工作的重头戏,包含提示词、RAG 和 Agent 构建。 用 AI 客服产品举例,这三者的作用是这样的: 提示词能让客服很有礼貌。比如它会说&#x…

蓝桥杯刷题记录【并查集001】(2024)

主要内容:并查集 并查集 并查集的题目感觉大部分都是模板题,上板子!! class UnionFind:def __init__(self, n):self.pa list(range(n))self.size [1]*n self.cnt ndef find(self, x):if self.pa[x] ! x:self.pa[x] self.fi…

海外SD-WAN专线网络部署成本分析

作为支撑企业国际业务的重要基石,海外SD-WAN专线以其独特的成本优势和技术特性,正成为企业构建高效稳定的全球网络架构的首选方案。本文将从多维度解构海外SD-WAN专线部署的核心成本要素,为企业的全球化网络布局提供战略参考。 一、基础资源投…

操作系统(二):实时系统介绍与实例分析

目录 一.概念 1.1 分类 1.2 主要指标 二.实现原理 三.主流实时系统对比 一.概念 实时系统(Real-Time System, RTS)是一类以时间确定性为核心目标的计算机系统,其设计需确保在严格的时间约束内完成任务响应。 1.1 分类 根据时间约束的严…

Golang的消息中间件选型

# Golang的消息中间件选型 消息中间件的作用 消息中间件是一种用于分布式系统中应用程序之间进行通信的基础架构工具,它能够有效地解耦发送者和接收者,并提供高可用性和可靠性的消息传递机制。在Golang应用程序中,选择适合的消息中间件对于构…

大模型中的参数规模与显卡匹配

在大模型训练和推理中,显卡(GPU/TPU)的选择与模型参数量紧密相关,需综合考虑显存、计算能力和成本。以下是不同规模模型与硬件的匹配关系及优化策略: 一、参数规模与显卡匹配参考表 模型参数量训练阶段推荐显卡推理阶…

带头结点 的单链表插入方法(头插法与尾插法)

带头结点的单链表插入方法(头插法与尾插法) 在单链表的操作中,插入是最常见的操作之一,本文介绍 带头结点的单链表 如何实现 后插法 和 前插法(包括 插入法 和 后插数据交换法),并提供完整的 C …

Prometheus的工作流程

Prometheus 是一个开源的监控和告警系统,专为监控分布式系统而设计。它的工作流程主要包括以下几个关键步骤: 1. 数据采集 (Scraping) 目标发现 (Service Discovery): Prometheus 自动或手动配置监控目标,通过 DNS、Kubernetes、…

软件工程面试题(二十二)

1、常用的设计模式有哪些?并写出一段程序代码 Factory(工厂模式),Adapter(适配器模式),Singleton(单例模式),State(状态模式),Observer(观察者模式) 等。 单例模式 public class Singleton{ private static Singleton …

【Pandas】pandas DataFrame select_dtypes

Pandas2.2 DataFrame Attributes and underlying data 方法描述DataFrame.index用于获取 DataFrame 的行索引DataFrame.columns用于获取 DataFrame 的列标签DataFrame.dtypes用于获取 DataFrame 中每一列的数据类型DataFrame.info([verbose, buf, max_cols, …])用于提供 Dat…

如何利用ATECLOUD测试平台的芯片测试解决方案实现4644芯片的测试?

作为多通道 DC-DC 电源管理芯片的代表产品,4644 凭借 95% 以上的转换效率、1% 的输出精度及多重保护机制,广泛应用于航天航空(卫星电源系统)、医疗设备(MRI 梯度功放)、工业控制(伺服驱动单元&a…

Python 编程实战:打造高效便捷的目录结构生成器

Python 编程实战:打造高效便捷的目录结构生成器 相关资源文件已经打包成EXE文件,可双击直接运行程序,且文章末尾已附上相关源码,以供大家学习交流,博主主页还有更多Python相关程序案例,秉着开源精神的想法&…

移动端六大语言速记:第6部分 - 错误处理与调试

移动端六大语言速记:第6部分 - 错误处理与调试 本文将对比Java、Kotlin、Flutter(Dart)、Python、ArkTS和Swift这六种移动端开发语言在错误处理与调试方面的特性,帮助开发者理解和掌握各语言的异常处理机制。 6. 错误处理与调试 6.1 异常处理 各语言异常处理的语法对比:…

PyTorch优化器

PyTorch 提供了多种优化算法用于神经网络的参数优化。以下是对 PyTorch 中主要优化器的全面介绍,包括它们的原理、使用方法和适用场景。 一、基本优化器 1. SGD (随机梯度下降) torch.optim.SGD(params, lr0.01, momentum0, dampening0, weight_decay0, nesterov…

C++的UDP连接解析域名地址错误

背景 使用c开发一个udp连接功能的脚本,可以接收发送数据,而且地址是经过内网穿透到外网的 经过 通常发送数据给目标地址,需要把目的地址结构化,要么使用inet_addr解析ip地址,要么使用inet_pton sockaddr_in target…

Spark,上传文件

上传文件 1.上传 先使用命令打开HDFS的NameNode [roothadoop100 hadoop-3.1.3]$ sbin/start-dfs.sh [roothadoop100 hadoop-3.1.3]$ sbin/stop-dfs.sh 和YARN的Job [roothadoop101 hadoop-3.1.3]$ sbin/start-yarn.sh [roothadoop101 hadoop-3.1.3]$ sbin/stop-yarn.sh 在Nam…