微软清华提出全新预训练范式,指令预训练让8B模型实力暴涨!实力碾压70B模型

现在的大模型训练通常会包括两个阶段:

一是无监督的预训练,即通过因果语言建模预测下一个token生成的概率。该方法无需标注数据,这意味着可以利用大规模的数据学习到语言的通用特征和模式。

二是指令微调,即通过自然语言指令构建的多样任务对预训练模型进行微调,显著增强了任务泛化能力。

最近,微软与清华提出了指令预训练(Instruction Pre-Training)的新方法,该方法在第一阶段引入指令—响应对的数据,采用监督多任务学习来探索预训练语言模型的新途径。

指令预训练使Llama3-8B模型在部分领域上的表现甚至超越了Llama3-70B模型。

图片

论文标题:
Instruction Pre-Training: Language Models are Supervised Multitask Learners

论文链接
https://arxiv.org/pdf/2406.14491

github链接
https://github.com/microsoft/LMOps

可能有同学会担心指令—响应对的数据从何而来,人工构建的话耗时耗力,如果是合成数据,其质量又如何保障?

为了解决以上问题,作者通过将现有的数据集转换为固定格式,然后微调7B大小的开源模型,构建了200M高质量多样化的指令-响应对,覆盖40多个任务类别。

另外,通过与常规的预训练方法相比,指令预训练不仅提高了模型性能,还有望强化指令微调,减少微调步数。在持续的预训练中,指令预训练使Llama3-8B模型在部分领域上的表现甚至超越了Llama3-70B模型。

指令预训练

与传统的直接在原始语料库上进行预训练不同,指令预训练( Instruction Pre-Training)通过使用指令合成器生成一组指令-响应对(instruction-response pairs)来增强每个原始文本,然后利用增强后的语料库对语言模型进行预训练。

图片

这些增强的指令-响应对是基于大量原始语料库的内容合成的,确保了高知识覆盖率和正确性。因此指令预训练的核心就是如何构建一个指令合成器,下文将详细叙述这个过程。

指令合成器

简单来说,指令合成器的开发,需要先将广泛的现有数据集转换们需要的格式:每个示例包含原始文本以及一组指令-响应对。使用这些数据,然后微调语言模型,以基于相应原始文本生成指令-响应对。

与现有使用GPT-3等大型或专有模型合成数据不同,本文选用7B的开源模型,节省成本但性能不输大模型。合成的数据具有高度多样性,使得指令合成器能够泛化到未见过的数据。

数据收集

从基于上下文的任务完成数据集中抽样并格式化数据。每个数据样本的上下文作为原始文本,下游任务作为指示-响应对,模版如下图所示。这些上下文跨越各种领域,如百科全书、社交媒体和学术测试 ,任务包括共性推理和情感分析等各种领域。

图片

微调

使用few-shot的方式微调指令合成器,如下图所示,一个样本包含一段原始文本以及它的指令响应对,多个样本序列相互连接。所有示例均从同一数据集中抽样,保障不同指示-响应对集合中的模式的一致性。

图片

推理

在推理时,每一轮都将之前轮次的文本、指示-响应对前置到当前文本。这使得指示合成器能够基于先前示例生成新的指示-响应对。

语言模型预训练

在收集合成的指令-回应对之后,使用多样的模板使指令格 式多样化,并将每个原始文本与其指令-回应对连接起来。通过连接来自M轮的文本和指令对,为后续的预训练创建了一个M次示例。

除了预训练数据外, 指令预训练保持所有其他预训练设置与一般预训练相同,同样使用下一个Token预测目标进行 训练,并在所有Token上计算损失。

作者同样进行了从零开始的常规预训练和领域自适应的持续预训练(Domain-Adaptive Continual Pre-Training),以验证在不同预训练场景中的有效性。

实验结果

指令预训练 VS 常规预训练

指令预训练表现出强大的泛化性

作者在不同规模的模型上使用不同的数据进行与训练,结果如下表所示。Vanilla PT代表常规的预训练方式,Instrcut PT是本文所提出的方法,Mix PT将一般预训练使用的原始语料库与指令合成器的微调数据混合在一起。

图片

与Vanilla PT相比,混合了指令合成器的微调数据的Mix PT有所提升。而Instrcut PT则在大多数评估数据集上实现了更好的性能。另外指令合成器的微调数据中不包含任何评估数据集,但却在未见过的数据集上表现良好,展示出强大的泛化性。

指令预训练在不同模型规模上具有一致的数据效率。

另外,当将Instrcut PT与其他开源模型比较时,Instrcut PT以较少的参数量与token花费得到了不错的性能。如下表所示:

图片

使用100B个tokens,500M参数的Instrcut PT,达到了Pythia-1B使用300B tokens的性能,而使用100B个tokens,1.3B参数的Instrcut PT达到了BLOOM-3B使用341B个tokens训练的性能。

Instrcut PT有望减少微调的步骤数量。

通过对比Vanilla PT与Instrcut PT在zero-shot 和 few-shot下的表现,如下图所示,随着步骤增长,Instrcut PT稳步提升。

图片

作者认为,指令预训练与指令调优阶段的任务更紧密对齐,有助于在预训练和微调之间实现顺畅的过渡。这种紧密的对齐使得模型能够更高效地学习下游任务,从而有望显著减少进一步微调的步骤数量。

指令预训练 VS 领域自适应持续预训练

所谓领域自适应持续预训练就是使用领域语料(本文中使用生物医学领域和金融领域)对语言模型进一步逐步预训以使其适应一系列领域。

这里作者展示了经由Vanilla PT持续预训练后,以及经由Instruct PT持续预训练后的效果。还展示了Llama3-70B的表现作为参考,如下表所示:

图片

Instruct PT在几乎所有领域特定任务上始终表现优于Vanilla PT。使用Instruct PT进行持续预训练大大提升了 Llama3-8B 的领域特定表现,达到与甚至超过 Llama3-70B 的水平

在金融 NER 基准测试中,Instruct PT表现不及 Vanilla PT,表现出相当大的方差,甚至Llama3-70B 不如 Llama3-8B,表明此基准测试可能不够可靠。

评估指令合成器生成质量

在本文中起关键作用的是前文介绍的指令合成器,能够生成任何原始文本的指令-响应对。因此,作者在已见数据集和未见数据集上评估了指令合成器的性能。

响应准确性

为了评估生成响应的准确性,作者给定原始文本和任务指令,使指令合成器生成一个响应,然后计算生成的响应与黄金响应之间的 F1 相似度以评估响应准确性。

由于该指令合成器是从基础 Mistral-7B 模型微调而来的。为了比较,作者对比基础模型的结果。如下表所示:

图片

可以看到,微调的合成器在已知和未知数据集上明显优于基础模型。

指令-响应对质量

该评测是给定原始文本,指令合成器生成一组指令-响应对。与基础模型相比,微调的合成器在零样本、少样本、已知和未知数据集这四个维度上显著优于基准。

图片

合成的指令-响应对提高LM的泛化性

这给定里将测试原始文本、合成对和测试指令串联在一起的提示,LM 生成一个响应。然后通过在提示中使用或者不使用合成的指令-响应对分别衡量LM的性能,结果如下图所示:

图片

在已知和未知数据集上,本文加入合成的指令-响应对的方法持续增强了 LM 在测试任务上的表现,超过了所有基线。即使是没有见过的数据集,也能带来很大的帮助。

合成的指令-响应对的多样性

作者从语料库中抽取了500个增强的指令文本,并使用GPT-4示评估合成的指令是否与原始文本的上下文相关(上下文相关性),以及基于指令和上下文回复是否准确(回复准确性)。

图片

从上表中,可以看到指令合成器生成涵盖 49 个不同任务类别的指令-响应对,其中超过 85% 与上下文相关,响应准确率达到70%。

作者进一步将任务类别分为 9 个通用任务场景。下图显示了通用预训练中指令增强语料库中每个任务场景的百分比。表明本文的合成数据涵盖了所有通用任务场景,展示了高度多样化。

图片

结论

本文提出的指令预训练(Instruction Pre-Training)方法展示了监督多任务学习的巨大潜力。通过微调指令合成器生成高质量多样化的指令-响应对来增强语料库,然后在增强的语料库上对LMs进行预训练,该方法显著提高了模型在多种任务上的泛化能力。此外,在持续预训练中,指令预训练使得小模型在特定领域的表现能够媲美甚至超过大模型。

希望这项工作能够激发对监督多任务预训练领域的进一步探索,有效提升LMs的通用能力。

图片

图片

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

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

相关文章

通过高德地图 JS API实现单击鼠标进行标注

效果图: 核心代码: <template><a-modal title="选择地图所在位置" :width="width" :visible="visible" @ok="handleOk" @cancel="handleCancel" cancelText="关闭"><div class="location-…

场外期权有交割日吗?场外期权应该怎么交割?

今天带你了解场外期权有交割日吗&#xff1f;场外期权应该怎么交割&#xff1f;场外个股期权是一种非标准化的金融衍生品&#xff0c;它允许投资者在未来某一特定日期以特定价格买入或卖出某一特定股票。 交割日就是买卖双方进行交割的日期,期权合约具有到期日,到期日的后一天…

C电池 和 D 电池的作用和类型详解及其之间的区别

C 和 D 电池是我们日常生活中必不可少的部件。它们通常用于高功率设备。例如手电筒和玩具。 D 型电池和 C 型电池是两种常见的电池类型。它们是一次性圆柱形电池。您可以在很多设备上使用它们。虽然它们有很多相似之处&#xff0c;但它们也有不同的特点。这些特点使它们适合某…

如何用qq邮箱注册outlook邮箱

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 ​ 目录 第一步输入qq邮箱 第二步…

数据类型及数据块认知

西门子STEP7编程语言 梯形图(LAD) 功能块图(FBD) 语句表(STL) 其中梯形图和功能块图可以相互转换 CPU常用数据区 信号输入区 I 信号输出区 Q 程序中表现形式&#xff0c;IX.X/QX.X;IWX/QWX-访问的是CPU输出输入过程映像区 另一种形式IWX:P/QWX:P-访问的是信号端口地址&#xf…

深度整合全球资源,分贝通打造高效、合规的海外差旅管理平台

在全球化商业活动的背景下,中国企业出海已成为常态。然而,随着海外差旅市场的全面增长,企业在海外支出管理上面临诸多挑战。据2023年数据显示,分贝通出海差旅业务GMV同比增长高达500倍,这一增长背后隐藏着企业对于更省钱、更高效管控方式的迫切需求。 面对与日俱增的开支,企业开…

Websocket 替代方案:如何使用 Firestore 监听实时事件

大家好,我是CodeQi! 一位热衷于技术分享的码仔。 ​在现代 Web 开发中,实时更新功能对于许多应用程序(如聊天应用、协作工具和在线游戏)都是必不可少的。虽然 WebSocket 是一种常用的实时通信技术,但 Google 的 Firestore 也提供了一种强大的替代方案,使得实时监听变得…

Golang中defer和return顺序

在Golang中&#xff0c;defer 和 return 的执行顺序是一个重要的特性&#xff0c;它们的执行顺序如下&#xff1a; return语句不是一条单独的语句&#xff0c;实际上&#xff0c;它是由赋值和返回两部分组成的。赋值步骤会先执行&#xff0c;这一步会计算return语句中的表达式…

赛氪网受邀出席浙江省应用数学研究会,共启数学教育与竞赛新篇章

2024年7月5日&#xff0c;浙江省应用数学研究会在风景如画的嘉兴市成功举办了2024年学术研讨会暨第七届第六次理事会工作会议的首日活动。作为技术支持单位&#xff0c;赛氪网受邀参与此次盛会&#xff0c;彰显了其在数学教育及竞赛领域的深厚实力与积极贡献。 开幕式由嘉兴大学…

linux watchdog 子系统

目录 一、watchdog 子系统二、关键数据结构2.1 watchdog_device2.2 watchdog_ops2.3 watchdog_info 三、重要流程3.1 watchdog 初始化3.2 watchdog 设备注册3.3 watchdog 设备文件操作函数3.4 watchdog 喂狗用户空间 watchdog&#xff08;busybox&#xff09;内核空间喂狗疑问 …

生成随机密码

生成8位无重复的密码&#xff08;可以包含数字、大小写字母&#xff09; import random import string character string.digits string.ascii_letters password .join(random.sample(character, 8)) print(f"生成的随机密码为:{password}")

如何快速实现一个无缝轮播效果

&#x1f9d1;‍&#x1f4bb; 写在开头 点赞 收藏 学会&#x1f923;&#x1f923;&#x1f923; 需求简介 轮播图是我们前端开发中的一个常见需求&#xff0c;在项目开发中&#xff0c;我们可以使用element、ant等UI库实现。某些场景&#xff0c;为了一个简单的功能安装一…

IDEA新建项目并撰写Java代码的方法

本文介绍在IntelliJ IDEA软件中&#xff0c;新建项目或打开已有项目&#xff0c;并撰写Java代码的具体方法&#xff1b;Groovy等语言的代码也可以基于这种方法来撰写。 在之前的文章IntelliJ IDEA社区版在Windows电脑中的下载、安装方法&#xff08;https://blog.csdn.net/zheb…

在任何岗位都可以把自己当成一个项目经理

这几天跟一个刚入职场的姐妹交流的时候&#xff0c;她问了我一个问题&#xff0c;如果让你总结三年从助理升到经理的关键点&#xff0c;你觉得是什么&#xff1f;我思考了那么几秒钟&#xff0c;大概就是——在任何岗位都把自己当项目经理。 今天给大家介绍我的项目管理工具——…

头歌资源库(21)走方格

一、 问题描述 二、算法思想 首先&#xff0c;确定方格中间下方人所在的位置&#xff0c;即(row, col) (n//2, m//2)。初始化路径和为0。从初始位置开始&#xff0c;按照给定的5个方向进行移动&#xff1a;上(U)&#xff0c;下(D)&#xff0c;左(L)&#xff0c;右(R)&#x…

关于腾讯的那些事(6月新闻纪要)

祝贺&#xff01;深圳市科技进步一等奖 这份文件是关于腾讯云数据库TDSQL获得深圳市科技进步一等奖的详细报道。以下是详细总结分析&#xff1a; 获奖荣誉&#xff1a; 腾讯云数据库TDSQL荣获2022年深圳市科技进步一等奖&#xff0c;成为唯一入选的数据库产品。该奖项由深圳市…

10、Python之写出更加Pythonic的代码:unpacking拆包机制

引言 有些小伙伴有其他编程语言的学习、使用的经验&#xff0c;然后迁移到Python。一般会比完全的新手小白&#xff0c;更快速地把Python用起来。这是他们的优势&#xff0c;但也是他们的劣势。 之所以这么说&#xff0c;是因为从其他编程语言带过来的&#xff0c;除了相通的编…

第十八节 LLaVA如何按需构建LORA训练(视觉、语言、映射多个组合训练)

文章目录 前言一、基于llava源码构建新的参数1、添加lora_vit参数2、训练命令脚本设置二、修改源码,构建lora训练1、修改源码-lora训练2、LLM模型lora加载3、VIT模型加载4、权重冻结操作5、结果显示三、实验结果前言 如果看了我前面文章,想必你基本对整个代码有了更深认识。…

Raylib 实现超大地图放大缩小与两种模式瓦片地图刷新

原理&#xff1a; 一种刷新模式&#xff1a; 在宫格内整体刷新&#xff0c;类似九宫格移动到边缘&#xff0c;则九宫格整体平移一个宫格&#xff0c;不过这里是移动一个瓦片像素&#xff0c;实际上就是全屏刷新&#xff0c;这个上限是 笔记本 3060 70帧 100*100个瓦片每帧都…

数据库之MQL

1&#xff0c;查询所有 mysql> select * from grade;2&#xff0c; mysql> select id,firstname,lastname from grade;3&#xff0c; mysql> select firstname,lastname from grade where id > 4;4&#xff0c; mysql> select * from grade where sex f;5&…