算力就这么点,如何提升语言模型性能?谷歌想了个新点子

简介: 算力就这么点,如何提升语言模型性能?谷歌想了个新点子

【新智元导读】语言模型越来越厉害,也越来越大。如何在不扩大规模的情况下提升模型性能?谷歌AI想出了一个「强强联合」的好点子。


近年来,语言模型(LM)在自然语言处理(NLP)研究中变得更加突出,在实践中也越来越有影响力。一般来说,扩大模型的规模已被证明可以提升在一系列NLP任务中的性能。


不过,扩大模型规模的挑战也是显而易见的:训练新的、更大的模型需要大量的计算资源。此外,新的模型往往是从头开始训练的,无法利用以前的模型的训练权重。

对于这个问题,谷歌的研究人员探讨了两种互补的方法,在不额外消耗大量计算资源的情况下,大幅提高现有语言模型的性能。

首先,在 「Transcending Scaling Laws with 0.1% Extra Compute」一文中,研究人员介绍了UL2R,这是一个轻量级的第二阶段预训练模型,使用一个混合enoisers目标。UL2R提高了一系列任务的性能,甚至在以前具有接近随机性能的任务上释放出突发性能。

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

另外,在「Scaling Instruction-Finetuned Language Models」中,探讨了在一个以指令为措辞的数据集上微调语言模型的问题,这个过程我们称为 "Flan"。这种方法不仅提高了性能,而且还提高了语言模型对用户输入的可用性。

论文链接:https://arxiv.org/abs/2210.11416

最后,Flan和UL2R可以作为互补技术结合在一个名为Flan-U-PaLM 540B的模型中,该模型在一系列具有挑战性的评估基准中,比未经调整的PaLM 540B模型表现高出10%。

UL2R的训练


传统上,大多数语言模型都是在因果语言建模目标上进行预训练,使模型能够预测序列中的下一个词(如GPT-3或PaLM)或去噪目标,其中模型学习从损坏的单词序列中恢复原句(如T5)。

尽管在语言建模目标中存在一些权衡,即因果关系的语言模型在长句生成方面表现更好,而在去噪目标上训练的语言模型在微调方面表现更好,但在之前的工作中,研究人员表明,包括这两个目标的混合enoisers目标在两种情况下都能取得更好的性能。

不过,在不同的目标上从头开始对大型语言模型进行预训练,在计算上是很困难的。因此,我们提出了UL2修复(UL2R),这是一个用UL2目标继续预训练的附加阶段,只需要相对较少的计算量。

我们将UL2R应用于PaLM,并将产生的新语言模型称为U-PaLM。

在实证评估中,我们发现,只需少量的UL2训练,模型就会有大幅改善。

例如,通过在PaLM 540B的中间检查点上使用UL2R,可以达到PaLM 540B在最终检查点的性能,同时使用了2倍的计算量。当然,将UL2R应用于最终的PaLM 540B检查点也会带来巨大的改进。

PaLM 540B和U-PaLM 540B在26个NLP基准上的计算与模型性能对比。U-PaLM 540B继续训练PaLM,计算量非常小,但在性能上有很大的提升。

使用UL2R的另一个好处是,它在一些任务上的性能比纯粹在因果语言建模目标上训练的模型好得多。例如,有许多BIG-Bench任务具备所谓「新兴能力」,即只有在足够大的语言模型中才有的能力。

虽然最常见的发现新兴能力的方式是通过扩大模型规模,但UL2R实际上可以在不扩大模型规模的情况下激发新兴能力。

比如在BIG-Bench的导航任务中,衡量模型进行状态跟踪的能力,除了U-PaLM,所有模型的训练FLOPs少于10^23个。另一个例子是BIG-Bench的Snarks任务,该任务衡量模型检测讽刺语言的能力。

对于来自BIG-Bench的两种能力,展示了新兴的任务性能,U-PaLM由于使用了UL2R目标,所以在较小的模型规模下实现了新兴性能。

指令微调


在第二篇论文中,我们探讨了指令微调,这涉及到在一组以指令为措辞的NLP数据集上对LM进行微调。

在之前的工作中,我们将指令微调应用于62个NLP任务的137B参数模型,比如回答一个小问题,对电影表达的情感进行分类,或者将句子翻译成西班牙语等。

在这项工作中,我们在超过1.8K的任务上微调了540B参数的语言模型。此外,以前的工作只对有少量例证的语言模型(如MetaICL)或无例证的零例证语言模型(如FLAN、T0)进行微调,而我们对两者的组合都进行了微调。

我们还包括思维链微调数据,这使得模型能够进行多步骤推理。我们把我们改进的方法称为 "Flan",用于微调语言模型。

值得注意的是,即使在1.8K的任务上进行微调,与预训练相比,Flan只用了一小部分的计算量(对于PaLM 540B,Flan只需要预训练计算量的0.2%)。

在1.8K个以指令形式表述的任务上对语言模型进行微调,并在新任务上对模型进行评估,这些任务不包括在微调中。分别在有/无示例的情况下进行微调(即0-shot 和 few-shot),以及有/无思维链的情况下进行微调,使模型可以在一系列评估场景中推广开来。

本文中,一系列规模的LM进行了指令-微调,目的是研究同时扩大语言模型的规模和增加微调任务数量的共同效果。

例如,对于PaLM类语言模型,包括8B、62B和540B参数规格。在四个具有挑战性的基准评估标准(MMLU、BBH、TyDiQA和MGSM)上评估了我们的模型,发现扩大参数数量和微调任务数量都能提高在此前未见的新任务上的性能表现。

扩大到540B的参数模型和使用1.8K的微调任务都能提高性能。上图y轴是四个评估套件(MMLU、BBH、TyDiQA和MGSM)的归一化均值。

除了更好的性能之外,指令微调LM能够在推理时对用户的指令做出反应,而不需要少量的示例或提示工程。这使得LM在一系列的输入中更加方便用户。例如,没有指令微调的LM有时会重复输入或不能遵循指令,但指令微调可以减轻这种错误。

我们的指令微调语言模型Flan-PaLM与没有指令微调的PaLM模型相比,对指令的反应更好。

强强联合,实现「1+1>2」


最后,我们表明,UL2R和Flan可以结合起来训练Flan-U-PaLM模型。

由于Flan使用来自NLP任务的新数据,并能实现零点指令跟踪,我们将Flan作为UL2R之后的次选方法。

我们再次对四个基准套件进行评估,发现Flan-U-PaLM模型优于只有UL2R(U-PaLM)或只有Flan(Flan-PaLM)的PaLM模型。此外,当与思维链和自洽性相结合时,Flan-U-PaLM在MMLU基准上达到了新的SOTA,得分达到75.4%。

与只使用UL2R(U-PaLM)或只使用Flan(Flan-U-PaLM)相比,将UL2R和Flan(Flan-U-PaLM)结合起来会带来最佳性能:四个评估套件(MMLU、BBH、TyDiQA和MGSM)的归一化平均值。

总的来说,UL2R和Flan是两种互补的方法,用于改进预训练的语言模型。UL2R使用相同的数据使LM适应denoisers的混合目标,而Flan则利用超过1.8K NLP任务的训练数据来教模型遵循指令。

随着语言模型变得更大,像UL2R和Flan这样无需大量计算就能提高一般性能的技术,可能会变得越来越有吸引力。

参考资料:https://ai.googleblog.com/2022/11/better-language-models-without-massive.html

相关文章
|
物联网 数据处理 智能硬件
基于STM32的智能家居控制系统设计与实现
基于STM32的智能家居控制系统设计与实现
1669 0
|
存储 运维 监控
在Linux中,发现CPU负载过大,接下来怎么办?
在Linux中,发现CPU负载过大,接下来怎么办?
|
机器学习/深度学习 算法 计算机视觉
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
564 7
|
机器学习/深度学习 Serverless 索引
分类网络中one-hot的作用
在分类任务中,使用神经网络时,通常需要将类别标签转换为一种合适的输入格式。这时候,one-hot编码(one-hot encoding)是一种常见且有效的方法。one-hot编码将类别标签表示为向量形式,其中只有一个元素为1,其他元素为0。
471 3
|
SQL 资源调度 数据处理
实时计算 Flink版产品使用问题之在DolphinScheduler调度Flink批作业时,遇到作业提交后状态立即变为成功,但实际上作业还在后台运行的情况,如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
存储 算法 数据库
人脸识别数据集
人脸识别数据集
2177 155
|
Python 容器
Python与GUI编程:创建图形用户界面
Python的Tkinter库是用于构建GUI应用的内置工具,无需额外安装。它提供了丰富的控件,如按钮、文本框等,让用户通过图形界面与程序交互。创建GUI窗口的基本步骤包括:导入Tkinter库,创建窗口对象,设置窗口属性,添加控件(如标签和按钮),并使用布局管理器(如`pack()`或`grid()`)来组织控件的位置。此外,可以通过绑定事件处理函数来响应用户操作,例如点击按钮。Tkinter还有更多高级功能,适合开发复杂GUI应用。
|
数据采集 数据挖掘 数据处理
DataFrame 的缺失值处理:填充、删除与插值
【5月更文挑战第19天】DataFrame数据处理中,面对缺失值问题,常用方法包括填充(如固定值、平均值)和删除。插值是一种有效手段,如线性插值适合时间序列数据。根据数据特性和分析目标,可组合使用多种方法,如先填充再插值。灵活应用这些策略能提升数据质量和分析准确性,为决策提供可靠支持。
904 2
|
安全 Swift iOS开发
【Swift开发专栏】Swift基础语法详解
【4月更文挑战第30天】Swift是苹果2014年发布的编程语言,适用于iOS、macOS等多个平台。它比Objective-C更安全、现代、易学。本文主要介绍Swift基础:常量变量(`let`和`var`),数据类型(整数、浮点数、布尔、字符串),元组,可选类型(Optional)。此外,还涉及运算符(算术、比较、逻辑)、控制流(`if`、`for`、`while`、`switch`)以及函数和闭包的使用。通过这些基础知识的学习,可以帮助初学者快速上手Swift。
475 1
|
前端开发 测试技术 C++
Python自动化测试面试:unittest、pytest与Selenium详解
【4月更文挑战第19天】本文聚焦Python自动化测试面试,重点讨论unittest、pytest和Selenium三大框架。unittest涉及断言、TestSuite和覆盖率报告;易错点包括测试代码冗余和异常处理。pytest涵盖fixtures、参数化测试和插件系统,要注意避免过度依赖unittest特性。Selenium的核心是WebDriver操作、等待策略和测试报告生成,强调智能等待和元素定位策略。掌握这些关键点将有助于提升面试表现。
1158 0

热门文章

最新文章