大语言模型的指令微调(Instruction Tuning)最全综述:从数据集到技术全解析

13,457 阅读

当前的大语言模型主要是预训练大模型,在大规模无监督数据上训练之后,再经过有监督微调和对齐之后就可以完成很多任务。尽管如此,面对垂直领域的应用,大模型依然需要微调才能获得更好地应用结果。而大模型的微调有很多方式,包括指令微调、有监督微调、提示工程等。其中,指令微调(Instruction Tuning)作为改进模型可控性最重要的一类方法,目前并没有很好的资料参。浙江大学研究人员联合Shannon AI等单位发布了一篇最新的关于指令微调的综述,详细描述指令微调的各方面内容。

大模型微调简介

此前,我们已经介绍了大模型的三类微调技术(实际案例说明AI时代大语言模型三种微调技术的区别——Prompt-Tuning、Instruction-Tuning和Chain-of-Thought)。但实际上,大模型的微调还可以分成很多种。

从微调的参数规模来说,可以简单分为全参数微调和高效参数微调。前者一般是用预训练模型作为初始化权重,在特定数据集上继续训练,全部参数都更新的方法。而后者则是期望用更少的资源完成模型参数的更新,包括只更新一部分参数或者说通过对参数进行某种结构化约束,例如稀疏化或低秩近似来降低微调的参数数量。

如果按照在模型哪个阶段使用微调,或者根据模型微调的目标来区分,也可以从提示微调、指令微调、有监督微调的方式来。本次的综述文章主要就是指令微调的综述。

指令微调简介

指令微调是一种通过在由(指令,输出)对组成的数据集上进一步训练LLMs的过程。其中,指令代表模型的人类指令,输出代表遵循指令的期望输出。这个过程有助于弥合LLMs的下一个词预测目标与用户让LLMs遵循人类指令的目标之间的差距。

指令微调可以被视为有监督微调(Supervised Fine-Tuning,SFT)的一种特殊形式。但是,它们的目标依然有差别。SFT是一种使用标记数据对预训练模型进行微调的过程,以便模型能够更好地执行特定任务。而指令微调是一种通过在包括(指令,输出)对的数据集上进一步训练大型语言模型(LLMs)的过程,以增强LLMs的能力和可控性。指令微调的特殊之处在于其数据集的结构,即由人类指令和期望的输出组成的配对。这种结构使得指令微调专注于让模型理解和遵循人类指令。

总的来说,指令微调是有监督微调的一种特殊形式,专注于通过理解和遵循人类指令来增强大型语言模型的能力和可控性。虽然它们的目标和方法相似,但指令微调的特殊数据结构和任务关注点使其成为SFT的一个独特子集。

指令微调常用的数据集总结

在这篇综述中,作者总结了25个指令微调数据集。并将指令微调的数据集分为以下三大类:

泛化到未见任务 这类数据集通常包含多样化的任务,每个任务都有专门的指令和数据样例。模型在这类数据集上训练后,可以泛化到未见过的新任务上。

在单轮中遵循用户指令 这类数据集包含指令及其对应的响应,用于训练模型单轮回复用户指令。训练后,模型可以理解指令并作出回复。

像人类一样提供帮助 这类数据集包含多轮闲聊对话。训练后,模型可以进行多轮交互,像人类一样提供帮助。

总体来说,第一类数据集侧重任务泛化能力,第二类侧重单轮指令理解能力,第三类侧重连续多轮对话能力。研究人员可以根据所需的模型能力选择不同类型的数据集进行指令调优。

所有的25个用以大语言模型的指令微调数据集列表如下:

类型数据集实例数量任务数量语言数构建方式是否泛化到未见任务链接
泛化到未见任务UnifiedQA75万46英语人工构建UnifiedQA
OIG4300万30英语人-机混合OIG
UnifiedSKG80万-英语人工构建UnifiedSKG
Natural Instructions19万61英语人工构建Natural Instructions
Super-Natural Instructions500万7655种语言人工构建Super-Natural Instructions
P31200万62英语人工构建P3
xP38100万5346种语言人工构建xP3
Flan 2021440万62英语人工构建Flan 2021
COIG----COIG
在单轮中遵循用户指令InstructGPT1.3万-多语言人工构建
Unnatural Instructions24万-英语InstructGPT生成Unnatural Instructions
Self-Instruct5.2万-英语InstructGPT生成Self-Instruct
InstructWild10万429-模型生成InstructWild
Evol-Instruct5.2万-英语ChatGPT生成Evol-Instruct
Alpaca5.2万-英语InstructGPT生成Alpaca
LogiCoT-2英语GPT-4生成LogiCoT
Dolly1.5万7英语人工构建Dolly
GPT-4-LLM5.2万-中英文GPT-4生成GPT-4-LLM
LIMA1千-英语人工构建LIMA
像人类一样提供帮助ChatGPT--多语言人工构建
Vicuna7万-英语用户共享
Guanaco534万-多语言模型生成Guanaco
OpenAssistant16万-多语言人工构建OpenAssistant
Baize v1111万-英语ChatGPT生成Baize
UltraChat67万-中英文模型生成UltraChat

不同领域的指令微调

其实,很多领域都有对大模型做指令微调的需求,但是不同领域的指令微调需求可能也有差异。

这篇综述总共总结了8种不同领域的大模型指令微调情况,如下表所示:

好的,已补全所有8个领域的指令调优对比情况:

领域简介独特性和挑战解决思路模型案例
对话使模型进行自然对话理解长序列语义联系,生成连贯回复构建长序列对话指令数据集,扩大模型编码长度InstructDial,ChatGPT
意图分类和槽填充使模型进行意图分类和槽值抽取处理不同领域的意图和词汇构建跨领域的意图分类和槽填充指令数据集LINGUIST
信息抽取使模型进行结构化信息抽取处理不同规范的信息抽取构建规范化信息抽取指令数据集InstructUIE
基于方面的情感分析使模型进行观点级情感分析理解复杂的观点和情感关系将其转化为问答式指令基于T5的框架
写作使模型进行风格化写作遵循具体写作风格和逻辑构建丰富风格化写作指令数据集Writing-Alpaca, CoEdIT
医学使模型进行医学问答需要专业医学知识,避免错误信息在医学知识图谱上进行指令调优Radiology-GPT, ChatDoctor
算术使模型解决算术问题理解不同表达方式的算术构建多样化算术表达式指令数据集Goat
代码使模型进行代码生成处理不同编程语言和规范收集多语言代码生成指令样例WizardCoder

高效指令微调技术

高效指令微调技术的主要目的在于可以利用一小部分参数的更新来使得模型达到训练效果。其实与有监督学习里面或者大语言模型里面的高校参数微调基本一致。高效微调技术主要包括如下几类:

方法原理优势缺点
LoRA将模型权重分解为低秩分量进行更新,使调优局限在相关任务子空间减少调优的参数量,降低计算内存低秩分解可能削弱模型表征能力
HINT使用超网络根据指令和少量样例生成参数化模块进行模型调优可以处理长指令,避免重复计算调优模块性能可能弱于全量调优
Qlora对模型权重进行量化,只调整低秩适配器参数减少参数内存,兼容量化量化会损失部分精度
LOMO融合梯度计算和更新,避免完整梯度存储减少梯度内存占用需要精心设计保证收敛稳定
Delta-tuning将调优参数限制在低维流形上提供理论分析,参数高效低维流形假设可能不够准确

总体来说,当前的高效指令调优技术主要是通过参数量减少、梯度压缩、量化等方式来降低计算和内存消耗。这些方法在降低资源占用方面非常有效,但也存在一定的缺点,如精度损失、收敛稳定性等问题。

论文名称:Instruction Tuning for Large Language Models: A Survey 论文地址:https://arxiv.org/abs/2308.10792

DataLearner 官方微信

欢迎关注 DataLearner 官方微信,获得最新 AI 技术推送

DataLearner 官方微信二维码