本文综述了快速发展的指令微调( IT )领域的研究工作,IT是增强大型语言模型( LLM )的能力和可控性的关键技术。指令调优是指通过使用(INSTRUCTION, OUTPUT)数据对大型语言模型进行有监督的进一步训练,以实现模型在遵循人类指令方面与其下一个单词预测目标之间的衔接。在这项工作中,我们对文献进行了系统回顾,包括指令调优的一般方法论、指令调优数据集的构建、指令调优模型的训练,以及在不同形式、领域和应用方面的应用,同时还对影响指令调优结果的各个方面进行了分析(例如指令输出的生成、指令数据集规模等)。这段话的意思是,我们还对指令调优存在的潜在问题进行了审视,包括对其的批评,同时也指出了现有策略的不足之处,并提出了一些有益研究的方向。
近年来,大型语言模型( Large Language Models,LLMs )领域取得了令人瞩目的进展。诸如GPT-3(Brown等人,2020b)、PaLM(Chowdhery等人,2022)和LLaMA(Touvron等人,2023a)这样的大型语言模型,在各种自然语言任务中展示了令人印象深刻的能力。LLMs的一个主要问题是训练目标和用户目标之间的不匹配:LLMs通常在大型语料库上训练最小化上下文词预测误差;而用户则希望模型"有帮助地、安全地遵循他们的指令"。
为了解决这种不匹配,指令调优( Instruction Tuning,IT )被提出,作为一种有效的技术来增强大型语言模型的能力和可控性。指令调优方法涉及到使用(INSTRUCTION, OUTPUT)数据对大型语言模型进行进一步训练。其中,INSTRUCTION代表模型应该遵循的人类指令,而OUTPUT则指的是紧随该指令后应生成的预期输出。指令调优方法的好处有三个:(1)在指令数据集上微调大型语言模型可以弥合大型语言模型的下一个词预测目标与用户按指令执行的目标之间的差距;(2)相比于标准的大型语言模型,指令调优方法可以实现更可控和可预测的模型行为,指令调优方法通过约束模型的输出,使其与期望的响应特征或领域知识相吻合,为人类介入模型行为提供了一个途径。(3)指令调优方法在计算上高效,并且可以帮助大型语言模型快速适应特定领域,而无需进行大规模重新训练或架构更改。
尽管IT是有效的,但也带来了挑战:(1)创建高质量的指令,以正确涵盖所需的目标行为是一项复杂的任务。现有的指令数据集通常在数量、多样性和创造性方面存在限制;(2)越来越多的人担心指令调优方法只能在指令训练数据集中得到很好的表现,并不能很好地适应其他任务;(3)人们对指令调优方法存在强烈的批评,认为它只能捕捉表面层次的模式和风格(例如,输出格式),而不能理解和学习任务本身。提高指令遵循度和处理未预期的模型响应仍然是开放的研究问题。这些挑战凸显了在这一领域进一步的调查、分析和总结的重要性,以优化微调过程并更好地理解指令微调的语言模型的行为。
文献中出现了越来越多有关LLMs(语言模型)的研究,包括预训练方法,推理能力,下游应用,但很少涉及LLM指令微调的话题。这项调查试图填补这一空白,整理关于这一快速发展领域的最新知识状况。具体来说,
在这一部分中,我们描述了指令调优中使用的一般流水线。
指令数据集中的每个实例包含三个元素:指令、可选输入和预期输出。指令是用自然语言文本序列来明确指定任务的内容(例如,给XX写一封感谢信,写一篇关于XX主题的博客等)。可选输入提供了与上下文相关的补充信息。它可以帮助更好地理解和完成指令。预期输出基于指令和可选输入,指示对应任务的期望结果。这三个元素共同构成了每个指令数据集实例的要素。
构建指令数据集的方法一般有两种:
基于收集的IT数据集,一个预训练的模型可以直接以全监督的方式进行训练,在给定指令和输入的情况下,通过依次预测输出中的每个token来训练模型。
在这一部分,我们详细介绍了社区中广泛使用的指令调优数据集。表1给出了数据集的概况。
“Natural Instructions”(自然语言指令)是一个由人类手工制作的英文指令数据集,包含了来自61个不同的自然语言处理任务的约193K个实例。该数据集由 “指令” 和 “实例” 组成。“指令” 中的每个实例都是一个任务描述,由7个组成部分构成:标题、定义、需要避免的强调/注意事项、提示、正例和负例。图2中的子图( a )给出了"指令"的例子。“实例"由(“输入”,“输出”)对组成,这些对是正确遵循给定指令的输入数据和文本结果。图2中的子图( b )给出了一个例子。
数据来源于现有的61个任务的NLP数据集。作者通过参考注释指令文件来收集"指令”。接下来,作者通过统一处理所有的自然语言处理(NLP)数据集中的数据实例,将其构建成 “实例”,形成了(“输入”,“输出”)对。
P3(Public Pool of Prompts)(Sanh等,2021年)是一个由整合了170个英语NLP数据集和2,052个英语提示构建而成的指令微调数据集。提示(有时也称为任务模板)是将传统的NLP任务(例如,问答、文本分类)中的数据实例映射为自然语言输入-输出对的函数。P3中的每个实例都包含三个组成部分: “inputs”、 “answer_choices"和"targets”。"Inputs"是一段以自然语言描述任务的文本序列(例如:“If he like Mary is true, is it also true that he like Mary’s cat?”)。"Answer choices"是一组文本字符串的列表,这些字符串是对给定任务适用的可能响应(例如:[“yes”, “no”, “undetermined”])。"Targets"是一段文本字符串,它代表了对于给定"inputs"而言正确的响应(例如:“yes”)。作者建立了PromptSource,这是一个用于协作创建高质量提示和开源高质量提示的工具与档案库。P3数据集是通过从PromptSource中随机抽样一个提示,并将每个示例映射到一个(“inputs”, “answer choices”, “targets”)三元组来构建的。
xP3(跨语言公共提示池)(Muennighoff等,2022年)是一个多语言指令数据集,包含46种语言中的16个多样化的自然语言任务。每个数据集实例都有两个组成部分:“inputs"和"targets”。"inputs"是自然语言中的任务描述,而"targets"是按照"inputs"指令正确执行后的文本结果。xP3的原始数据来自三个来源:英语指令数据集P3、P3中的4个英语未见过的任务(例如翻译、程序合成)以及30个多语言自然语言处理数据集。作者通过从PromptSource中抽样人类编写的任务模板,然后填充这些模板来将多样化的自然语言处理任务转化为统一的形式,从而构建了xP3数据集。例如,自然语言推理任务的一个任务模板如下所示:“如果前提是真的,那么假设也是真的吗?”;答案选项为“是”、“可能”和“否”,对应于原始任务标签中的“蕴含(0)”、“中立(1)”和“矛盾(2)”。
Flan 2021是由Longpre等人于2023年发布的一个英语指令数据集,它通过将62个广泛使用的NLP基准测试(例如SST-2、SNLI、AG News、MultiRC)转化为语言输入输出对来构建。Flan 2021中的每个实例都有“输入”和“目标”组成部分。“输入”是一段自然语言指令,描述了一个任务(例如,“确定句子‘他喜欢猫’的情感是积极还是消极?”)。“目标”是一个文本结果,可以正确地执行“输入”指令(例如,“积极”)。作者通过以下步骤将传统的自然语言处理(NLP)数据集转化为输入-目标对:步骤1:手动构建指令和目标模板。步骤2:使用数据集中的实例填充模板。
《不自然指令》(Honovich et al., 2022)是一个包含约240,000个实例的指令数据集,使用InstructGPT(textdavinci-002)(Ouyang et al., 2022)构建而成。数据集中的每个实例都包含四个部分:指令(INSTRUCTION)、输入(INPUT)、约束(CONSTRAINTS)和输出(OUTPUT)。其中,"指令"是用自然语言描述的教授任务的说明。"输入"是指用自然语言描述的参数,用于实例化指令任务。"约束条件"是指对任务输出空间的限制。"输出"是在给定输入参数和约束条件的情况下,能够正确执行指令的文本序列。
作者首先从手工构建的《超自然指令》数据集(Wang等人,2022d)中抽取了种子指令。接着,研究者们使用InstructGPT来引导生成一个新的(指令,输入,约束条件)三元组,其中使用了三个种子指令作为演示。接下来,作者通过随机改写指令或输入的方式扩展了数据集。将指令、输入和约束条件连接起来,然后将其输入InstructGPT模型,以获取输出。
《自我指导》(Self-Instruct)是一个包含52,000个训练指令和252个评估指令的英语指令数据集,是使用InstructGPT(Ouyang等人,2022)构建的。每个数据实例由“指令”、“输入”和“输出”组成。“指令”是自然语言中的任务定义(例如,“请回答以下问题。”)。"输入"是可选的,并且用作指令的补充内容(例如,“哪个国家的首都是北京?”),而“输出”则是正确遵循指令的文本结果(例如,“北京”)。完整的数据集是根据以下步骤生成的:第一步,作者从175个种子任务中随机抽取了8个自然语言指令作为示例,并启动InstructGPT生成更多的任务指令。第二步,作者确定了在第一步生成的指令是否为分类任务。如果是,他们要求InstructGPT基于给定的指令生成所有可能的输出选项,并随机选择一个特定的输出类别,以提示InstructGPT生成相应的“输入”内容。对于不属于分类任务的指令,应该有无数个“输出”选项。作者提出使用“先输入后输出”的策略,首先根据给定的“指令”提示InstructGPT生成“输入”,然后根据“指令”和生成的“输入”生成“输出”。第三步,根据第二步的结果,作者使用InstructGPT结合先输出或先输入的策略生成相应指令任务的“输入”和“输出”。第四步,作者对生成的指令任务进行后处理(例如,过滤相似指令、删除输入和输出的重复数据),最终得到了52,000个英文指令。
Evol-Instruct(Xu等人,2023a)是一个包含52,000个指令的训练集和218个指令的评估集的英文指令数据集。作者使用ChatGPT(OpenAI,2022)提示进行了深度和广度进化策略下的指令改写。深度进化策略包含五种类型的操作,例如添加约束、增加推理步骤、复杂化输入等。广度进化策略将简单的指令升级为更复杂的指令,或直接生成新的指令以增加多样性。作者首先使用了52,000个(指令,回复)对作为初始集合。然后他们随机选择一种进化策略,并要求ChatGPT根据选择的进化策略对初始指令进行改写。作者采用ChatGPT和规则来过滤掉未经进化的指令对,并使用新生成的进化指令对更新了数据集。在重复上述过程4次后,作者收集到了25万个指令对。除了训练集之外,作者还从实际场景中(例如开源项目、平台和论坛)收集了218个人工生成的指令,称为EvolInstruct测试集。
LIMA(Zhou等人,2023年)是一个英文指令数据集,包括一个包含1,000个数据实例的训练集和一个包含300个实例的测试集。训练集包含1,000个(“指令”, “回复”)对。对于训练数据,其中75%是从三个社区问答网站(即Stack Exchange、wikiHow和Pushshift Reddit数据集(Baumgartner等人,2020))中随机选取的;20%由作者小组A手动编写,灵感来源于他们的兴趣;5%是从超自然指令数据集(Wang等人,2022d)中随机选取的。至于有效集,作者从A组作者撰写的数据集中抽取了50个实例。测试集包含300个例子,76.7 %由另一组( B组)作者编写,23.3 %从Reddit社区内部的问题和答案集合Pushshift Reddit Dataset (鲍姆加特纳等, 2020)中采样。
超级自然指令( Wang et al , 2022d)是由616个NLP任务和5M个任务实例组成的多语言指令集合,涵盖了76种不同的任务类型(例如,文本分类、信息抽取、文本重写、文本合成等。)和55种语言。数据集中的每个任务由"指令"和"任务实例"组成。具体来说,“指令"有三个组成部分:用自然语言描述任务的"定义”;“正例”,即输入和正确输出的样本,以及对每个样本的简短解释;和"反例",即输入和非期望输出的样本,以及对每个样本的简要解释,如图2(a)所示。"任务实例"是由文本输入和可接受的文本输出列表组成的数据实例,如图2(b)所示。《超级自然指令》中的原始数据来源于三个来源:(1)现有的公开NLP数据集(例如, CommonsenseQA);(2)通过众包过程(例如,在众包QA数据集中对给定问题的解释结果)生成的适用的中间注释;(3)合成任务,即由符号任务转化而来,并在几个句子(例如,代数运算,如数的比较)中重新表述的任务。
Dolly (康诺弗等, 2023a)是一个包含15000个人工生成数据实例的英文教学数据集,旨在使LLMs能够与类似ChatGPT的用户进行交互。该数据集旨在模拟广泛的人类行为,涵盖了7种具体类型:开放式问答、封闭式问答、从维基百科中提取信息、从维基百科中总结信息、头脑风暴、分类和创造性写作。数据集中各任务类型示例如表2所示。
OpenAssistant Conversations (科普夫等, 2023)是一个人工制作的多语种辅助式会话语料库,由来自35种语言的66,497棵会话树的161,443条消息(即91 , 829条用户提示, 69 , 614条助手回复)组成,以及461,292条人工标注的质量评分。数据集中的每个实例都是一个chat tree( CT )。具体来说,会话树中的每个节点表示会话中角色(即提示语、助手)产生的消息。CT的根节点表示提示者发出的初始提示,其他节点表示提示者或助手的回复。CT中从根节点到任意节点的路径代表了提示者和助手之间的有效对话,被称为线程。图4展示了一个由6个线程中的12条消息组成的会话树的例子。
作者们首先按照五个步骤的流程收集了对话树:第一步是提示:贡献者充当提示者角色,创作初始提示;第二步是标记提示:贡献者为第一步的初始提示评分,作者们采用平衡抽样策略选择高质量的提示作为根节点;第三步是展开树节点:贡献者作为提示者或助手添加回复信息;第四步是标记回复:贡献者为现有的节点回复分配分数;第五步是排序:贡献者按照指南为助手回复进行排序。
树状态机在整个对话构建过程中管理和跟踪状态(例如,初始状态、生长状态、结束状态)。随后,通过过滤掉冒犯和不适当的对话树,构建了OpenAssistant Conversations 数据集。
Baize (Conover et al., 2023a)是一个英文多轮聊天语料库,使用ChatGPT构建,共有111.5K个实例。每个轮次由用户的提示和助手的响应组成。Baize v1中的每个实例包含3.4轮对话。
为了创建Baize数据集,作者们提出了自对话(self-chat)方法,其中ChatGPT在轮流扮演用户和AI助手的角色,并以对话形式生成消息。具体而言,作者们首先设计了一个任务模板,定义了ChatGPT的角色和任务(如表格3所示)。接下来,他们从Quora和Stack Overflow等数据集中采样问题(例如,“如何修复无法工作的Google Play商店帐户?”),作为对话的种子(即话题)。然后,他们使用模板和采样的种子提示ChatGPT。ChatGPT会不断为双方生成消息,直到达到自然的停止点。
在这一部分中,我们详细介绍了社区中广泛使用的LLM模型,这些模型通过指令微调进行训练。
InstructGPT (176B)(Ouyang等,2022)是在GPT-3 (176B)(Brown等,2020b)的基础上进行初始化,并随后通过人类指令进行微调。微调过程包括以下三个步骤:(1) 在经过人工筛选的指令数据集上进行监督微调(SFT),该数据集是从Playground API历史记录中收集而来的;(2) 训练一个奖励模型,根据一个注释数据集来预测人类偏好,该数据集通过采样一条指令的多个响应并将它们从最好到最坏进行排序,由人力完成构建;(3) 使用步骤(2)中训练的奖励模型和新的指令进一步优化步骤1中的模型。使用近端策略优化(Proximal Policy Optimization,PPO)(Schulman等,2017)方法更新参数,这是一种策略梯度强化学习方法。步骤(2)和(3)会交替进行多次,直到模型性能没有显著改善为止。
总体而言,InstructGPT的表现优于GPT-3。对于自动评估,相较于TruthfulQA(Lin等,2021)数据集的真实性和RealToxicityPrompts(Gehman等,2020)数据集的有毒性,InstructGPT的真实性和有毒性表现均比GPT-3高出10%和7%。在NLP数据集(如WSC)上,InstructGPT的性能与GPT-3相当。对于人类评估,以正确遵循指令、遵循明确约束、减少错觉和生成适当响应等四个不同方面为考虑因素,InstructGPT的实验结果分别比GPT-3 +10%、+20%、-20%和+10%更好。
BLOOMZ(176B)(Muennighoff等,2022)是使用BLOOM(176B)(Scao等,2022)初始化,然后在指令数据集xP3(Muennighoff等,2022)上进行微调的结果。xP3是一个由人类指令数据集组成的收藏品,涵盖了46种语言,来自两个来源:(1)P3,它是一组(英文指令,英文响应)对的数据集;以及(2)一个(英文指令,多语言响应)集合,它是通过用预定义的英文指令填充任务模板来从多语言NLP数据集(例如中文基准)转化而来的。在自动评估方面,BLOOMZ在零样本设置下的表现优于BLOOM,分别在指代消解、句子完成和自然语言推理数据集上提高了10.4%、20.5%和9.8%。对于HumanEval基准(Chen等,2021),BLOOMZ在Pass@100度量上的表现优于BLOOM,提升了10%。在生成任务中,与BLOOM相比,BLOOMZ在lm-evaluation-harness基准上获得了9%的BLEU改进。
Flan-T5(11B)是一个大型语言模型,使用T5(11B)(Raffel等,2019)进行初始化,然后在FLAN数据集(Longpre等,2023)上进行微调的结果。FLAN数据集是由62个数据集的12个NLP任务(例如,自然语言推理、常识推理、释义生成)构成的(指令,对)对的收集,通过在统一的任务规范下使用各种指令填充模板来构建。
在微调过程中,FLAN-T5采用了基于JAX的T5X框架,并在每2k步评估保留的任务上选择最佳模型。与T5的预训练阶段相比,微调过程消耗了0.2%的计算资源(大约128个TPU v4芯片,共计37小时)。
在评估方面,FLAN-T5(11B)在少样本设置下表现优于T5(11B),并且在与更大型号的模型进行比较时取得了可比较的结果,包括PaLM(60B)(Chowdhery等,2022)。在MMLU(Hendrycks等,2020)、BBH(Suzgun等,2022)、TyDiQA(Clark等,2020)、MGSM(Shi等,2022)、开放式生成和RealToxicityPrompts(Gehman等,2020)数据集上,FLANT5分别比T5的表现提高了18.9%、12.3%、4.1%、5.8%、2.1%和8%。在少样本设置下,FLAN-T5在BBH和TyDiQA数据集上的表现比PaLM高出1.4%和1.2%。
Alpaca(7B)(Taori等,2023)是通过在由InstructGPT(175B,text-davinci003)(Ouyang等,2022)生成的构建指令数据集上对LLaMA(7B)(Touvron等,2023a)进行微调训练得到的语言模型。微调过程采用了混合精度训练和完全共享数据并行的方式,在一台8卡80GB A100设备上耗时约3小时。
在人类评估方面,Alpaca(7B)在性能上可以与InstructGPT(175B,text-davinci-003)相媲美。具体而言,Alpaca在自我指导数据集上表现优于InstructGPT,在89个实例中获得了90次胜利。
Vicuna(13B)(Chiang等,2023)是通过在由ChatGPT生成的对话数据集上对LLaMA(13B)(Touvron等,2023a)进行微调训练得到的语言模型。
作者从ShareGPT.com收集了用户共享的ChatGPT对话,并在滤除低质量样本后获得了70,000个对话记录。LLaMA(13B)在构建的对话数据集上进行了微调,并使用了经过修改的损失函数,以适应多轮对话。为了更好地理解跨多个对话轮次的长上下文,作者将最大上下文长度从512扩展到2048。在训练中,作者采用了渐进检查点和闪存注意力(Dao等,2022)技术,以减少微调过程中的GPU内存占用。微调过程在一台8 × 80GB A100设备上耗时24小时,完全共享数据并行化。
作者构建了一个专门用于评估聊天机器人性能的测试集。他们收集了一个由8个问题类别组成的测试集,例如费米问题、角色扮演情景、编码/数学任务等,并要求GPT4(OpenAI,2023)评估模型的回答,考虑到其是否有帮助、相关性、准确性和细节。在构建的测试集上,Vicuna(13B)在90%的测试问题中表现优于Alpaca(13B)(Taori等,2023)和LLaMA(13B),并且在45%的问题中生成的评分回复与ChatGPT相当或更好。
GPT-4-LLM (7B)(Peng等,2023)是通过在GPT-4(OpenAI,2023)生成的指令数据集上对LLaMA(7B)(Touvron等,2023a)进行微调训练得到的语言模型。GPT-4-LLM使用LLaMA初始化,然后通过以下两个步骤进行微调训练:(1)在构建的指令数据集上进行监督微调。作者使用了Alpaca(Taori等,2023)的指令,然后利用GPT-4收集回复。LLaMA在GPT-4生成的数据集上进行微调。微调过程在一台8个80GB A100显卡的机器上使用混合精度和完全共享的数据并行性进行,大约需要三个小时。(2)优化第一步模型使用近端策略优化(PPO)(Schulman等,2017)方法,作者首先通过收集来自GPT-4、InstructGPT(Ouyang等,2022)和OPT-IML(Iyer等,2022)对一系列指令的回复构建了一个比较数据集,然后要求GPT-4对每个回复进行从1到10的评分。利用这些评分,基于OPT(Zhang等,2022a)训练了一个奖励模型。然后,使用奖励模型计算策略梯度来优化第一步微调得到的模型。
在评估方面,GPT-4-LLM(7B)不仅优于基线模型Alpaca(7B),而且优于包括Alpaca(13B)和LLAMA(13B)等更大的模型。对于自动化评估,GPT-4-LLM(7B)在User-Oriented-Instructions-252(Wang等,2022c)、Vicuna-Instructions(Chiang等,2023)和Unnatural Instructions(Honovich等,2022)数据集上分别比Alpaca表现更好0.2、0.5和0.7。对于人类评估,涉及到有用性、诚实性和无害性等方面,GPT-4-LLM分别比Alpaca表现更好11.7、20.9和28.6。
Claude是通过在指令数据集上对预训练语言模型进行微调而训练得到的语言模型,旨在生成有用和无害的回复。微调过程包括两个阶段:(1)在指令数据集上进行监督式微调。作者通过收集了52,000个不同的指令,并配对GPT-4生成的回复来创建了一个指令数据集。微调过程在一台8张80GB A100显卡的机器上使用混合精度和完全共享的数据并行性进行,大约需要八个小时。(2)使用近端策略优化(Proximal Policy Optimization,Schulman等,2017)方法来优化第一步模型。作者首先通过收集多个大型语言模型(如GPT-3(Brown等,2020b))对给定的指令集生成的回复构建了一个比较数据集,然后要求GPT-4(OpenAI,2023)对每个回复进行评分。利用这些评分,训练了一个奖励模型。然后,使用奖励模型和近端策略优化方法对第一步微调得到的模型进行优化。
与基础模型相比,Claude生成的回复更有帮助且无害。在自动评估方面,针对毒性问题,Claude在RealToxicityPrompts(Gehman等,2020)数据集上相比于GPT-3,表现提升了7%。在人工评估方面,涉及到遵循正确的指令、遵循明确的限制、减少虚假信息和生成适当的回复等四个不同方面,Claude相比于GPT-3(Brown等,2020b)分别表现出了10%、20%、-20%和10%的提升。
WizardLM(7B)(Xu等,2023a)是一种语言模型,通过在由ChatGPT生成的指令数据集Evol-Instruct上微调LLaMA(7B)(Touvron等,2023a)训练而成。它在Evol-Instruct的一个子集(包含70K个指令)上进行微调,以便与Vicuna(Chiang等,2023)进行公平比较。微调过程基于8个V100 GPU,并使用Deepspeed Zero-3(Rasley等,2020)技术,在3个时代下进行,耗时约为70小时。在推理过程中,最大生成长度为2048。
为了评估LLMs在复杂指令上的性能,作者从真实场景(例如开源项目、平台和论坛)收集了218个人工生成的指令,称为Evol-Instruct测试集。评估是在Evol-Instruct测试集和Vicuna的测试集上进行的。对于人工评估,WizardLM在性能上远远超过Alpaca(7B)(Taori等,2023)和Vicuna(7B),并且相比于ChatGPT,在67%的测试样本上生成相等或更好的回复。
自动评估是通过要求GPT-4对LLMs的回复进行评分来进行的。具体而言,与Alpaca相比,WizardLM在Evol-Instruct测试集和Vicuna的测试集上分别提升了+6.2%和+5.3%。在Evol-Instruct测试集上,WizardLM超过Vicuna +5.8%,在Vicuna的测试集上超过1.7%。
ChatGLM2(6B)(杜等,2022)是一个语言模型,通过在包含英文和中文指令的双语数据集上对GLM(6B)(杜等,2022)进行微调而训练得到。双语指令数据集包含了1.4万亿个标记,中文和英文的比例为1:1。数据集中的指令是从问答和对话完成任务中进行采样的。ChatGLM使用GLM进行初始化,然后通过三步微调策略进行训练,这类似于InstructGPT(欧阳等,2022)。为了更好地建模多轮对话中的上下文信息,作者将最大上下文长度从1024扩展到32K。为了减少微调阶段的GPU内存成本,作者采用了多查询注意力和因果掩码策略。在推理过程中,ChatGLM2使用FP16需要13GB的GPU内存,并使用INT4模型量化技术支持最长8K的对话,只需6GB的GPU内存。
在四个英文和中文基准测试中进行了评估,包括MMLU(英文)(Hendrycks等,2020)、C-Eval(中文)(Huang等,2023)、GSM8K(数学)(Cobbe等,2021)和BBH(英文)(Suzgun等,2022)。ChatGLM2(6B)在所有基准测试上表现优于GLM(6B)和基准模型ChatGLM(6B)。具体而言,ChatGLM2在MMLU上相比于GLM提升了+3.1,在C-Eval上提升了+5.0,在GSM8K上提升了+8.6,在BBH上提升了+2.2。ChatGLM2在MMLU、C-Eval、GSM8K和BBH上分别比ChatGLM提升了+2.1、+1.2、+0.4、+0.8的性能。
LIMA(65B)(Zhou等,2023)是一个通过在指令数据集上微调LLaMA(65B)(Touvron等,2023a)而训练得到的大型语言模型。这个指令数据集是基于提出的表层对齐假设构建的。表层对齐假设指的是模型的知识和能力几乎都是在预训练阶段获取的,而对齐训练(例如指令微调)则是教导模型在用户优先的形式下生成响应。基于这种表层对齐假设,作者声称,通过将大型语言模型微调到一小部分指令数据上可以生成令用户满意的响应。因此,作者构建了指令训练/验证/测试集来验证这个假设。
在构建的测试集上进行了评估。对于人工评估,LIMA在性能上分别比InstructGPT和Alpaca提高了17%和19%。此外,LIMA的结果与BARD、Cladue和GPT4相媲美。对于自动评估,通过询问GPT-4对响应进行评分,较高的评分表示更好的性能。LIMA在自动评估中分别比InstructGPT和Alpaca提高了20%和36%,达到了与BARD相当的结果,但略逊于Claude和GPT-4。实验结果验证了提出的表层对齐假设。
OPT-IML (175B) (Iyer等,2022) 是一个通过对构建的Instruction Meta-Learning (IML)数据集进行微调,从而训练出的大型语言模型。这个数据集包括来自8个公开可用基准测试的1500多项NLP任务,如PromptSource (Bach等,2022),FLAN (Longpre等,2023)和Super-NaturalInstructions (Wang等,2022d)。微调后,OPT-IML在所有基准测试中均优于OPT。
Dolly 2.0 (12B) (Conover等,2023a) 是一个初始化了预训练语言模型Pythia (12B) (Biderman等,2023)并在指令数据集databricks-dolly15k上进行微调的模型。该数据集包含7种NLP任务类别,如文本分类和信息提取。微调后,Dolly 2.0 (12B) 在EleutherAI LLM Evaluation Harness基准测试中远远优于Pythia (12B),并且取得了与有两倍参数的GPT-NEOX(20B) (Black等,2022)相当的性能。
Falcon-Instruct (40B) (Almazrouei等,2023a) 是一个大型语言模型,该模型是通过对Falcon (40B) (Almazrouei等,2023b)在一个英语对话数据集上进行微调得到的。该数据集包含来自Baize数据集 (Xu等,2023c)的1.5亿个单词标记,以及来自RefinedWeb数据集 (Penedo等,2023)的额外5%数据。为了降低内存使用率,作者采用了闪光注意力 (Dao等,2022)和多查询技术。在评估方面,与基准模型Falcon (40B)相比,Falcon-Instruct (40B)在Open LLM Leaderboard (Beeching等,2023)上取得了更好的性能,并且优于参数更多的Guanaco (65B)。
Guanaco (7B) (JosephusCheung,2021) 是一个多轮对话语言模型,通过对构建的多语言对话数据集进行对LLaMA (7B) (Touvron等,2023a)微调而得到。该多语言对话数据集来自两个来源:Alpaca (Taori等,2023),其中包含52K个英语指令数据对;以及一个多语言(如简体中文、繁体中文、日语、德语)对话数据,包含534K+个多轮对话。经过微调,Guanaco能够在多轮对话中生成与角色相关的回复和连续的话题相关回复。
Minotaur (15B)是一个大型语言模型,通过对开源指令数据集(包括WizardLM和GPTeacher-General-Instruct)进行对Starcoder Plus (15B) (Li等,2023f)微调而得到。对于模型推理,Minotaur支持最大18K个token的上下文长度。
Nous-Herme (13B)是一个大型语言模型,通过对一个包含30万多条指令的数据集进行对LLaMA (13B) (Touvron等,2023a)微调而得到,该数据集从GPTeacher、CodeAlpaca (Chaudhary, 2023)、GPT-4-LLM (Peng等,2023)、Unnatural Instructions (Honovich等,2022)和CamelAI (Li等,2023c)中的BiologyPhysicsChemistry子集中采样得到。生成的回复由GPT-4完成。在评估方面,Nous-Herme (13B)在ARC挑战 (Clark等,2018)和BoolQ (Clark等,2019)等多个任务上表现与GPT-3.5turbo相当。
TÜLU (6.7B)是一个大型语言模型,通过对包含FLAN V2、CoT、Dolly、Open Assistant-1、GPT4-Alpaca、Code-Alpaca (Chaudhary, 2023)和ShareGPT的混合指令数据集进行对OPT (6.7B) (Zhang等,2022a)微调而得到。微调后,TÜLU (6.7B)平均达到ChatGPT性能的83%和GPT4性能的68%。
YuLan-Chat (13B)是一个语言模型,通过对包含25万个中英文指令对的构建数据集进行对LLaMA (13B) (Touvron等,2023a)微调而得到。微调后,YuLan-Chat-13B的结果与最先进的开源模型ChatGLM (6B) (Du等,2022)相当,并在英文BBH3K数据集上优于Vicuna (13B) (Chiang等,2023)。
MOSS (16B)是一个双语对话语言模型,旨在进行多轮对话并利用各种插件,通过对对话指令进行微调而训练得到。微调后,MOSS的表现优于基础模型,并生成更符合人类偏好的回复。
Airoboros (13B)是一个大型语言模型,通过对Self-instruct数据集 (Wang等,2022c)进行LLAMA (13B) (Touvron等,2023a)微调而得到。微调后,Airoboros在所有基准测试中显著优于LLAMA (13B),并且在特定基准测试中达到了与专门为该基准测试微调的模型相媲美的结果。
UltraLM (13B)是一个大型语言模型,通过对LLAMA (13B) (Touvron等,2023a)进行微调而得到。在评估中,UltraLM (13B)优于Dolly (12B) (Conover等,2023a),并且取得了高达98%的胜率。此外,它分别超过了之前最好的开源模型Vicuna (Chiang等,2023)和WizardLM (Xu等,2023a),它们的胜率分别为9%和28%。
MUL-TIINSTRUCT (Xu等,2022)是一个多模态指令微调数据集,以统一的序列到序列格式包含了62个多样化的多模态任务。该数据集涵盖了10个广泛的类别,并从21个现有的开源数据集中派生出任务。每个任务都配备有5个由专家撰写的指令。对于现有的任务,作者使用其可用的开源数据集中的输入/输出对创建实例。而对于每个新任务,作者通过提取现有任务实例的必要信息或重新组织它们来创建5k到5M个实例。MUL-TIINSTRUCT数据集已经证明了它在增强各种迁移学习技术方面的有效性。例如,使用MUL-TIINSTRUCT上的混合指令微调和顺序指令微调等各种迁移学习策略对OFA模型(930M)(Wang等,2022a)进行微调,可以改善针对所有未见任务的零样本性能。在通识VQA任务上,经过MUL-TIINSTRUCT微调的OFA模型在RougeL上达到了50.60,在准确率上达到了31.17,而原始OFA模型在RougeL上的得分只有14.97,在准确率上的得分只有0.40。
PMC-VQA(张等,2023c)是一个大规模的医学视觉问答数据集,包含了22.7万个图像-问题对和14.9万张图像,涵盖了各种模态或疾病。该数据集可用于开放式和多项选择任务。生成PMC-VQA数据集的流程包括从PMC-OA(Lin等,2023)数据集中收集图像-标题对,使用ChatGPT生成问题-答案对,并手动验证数据集的子集以确保质量。作者提出了一种基于生成的模型MedVInT,通过将视觉信息与大型语言模型进行对齐,用于医学视觉理解。在PMCVQA上预训练的MedVInT实现了最先进的性能,并在VQA-RAD(Lau等,2018)和SLAKE(Liu等,2021a)基准测试中优于现有模型,在VQA-RAD上的准确率达到81.6%,在SLAKE上的准确率达到88.0%。LAMM-Dataset包括了用于常识知识问答的数据对,其采用了来自Bamboo(张等,2022b)数据集和相应的维基百科描述的分层知识图标签系统。作者还提出了LAMM-Benchmark,该基准测试评估了现有的多模态语言模型(MLLM)在各种计算机视觉任务上的表现。它包括9个常见的图像任务和3个常见的点云任务,并且还有LAMM-Framework,这是一个主要的MLLM训练框架,它区分了不同模态的编码器、投影器和LLM微调块,以避免模态冲突。
InstructPix2Pix ( 983M ) (布鲁克斯等, 2022)是在构建的包含450K以上文本编辑指令和编辑前后对应图像的多模态数据集上,通过微调Stable Diffusion ( 983M ) (龙巴赫et al , 2022)训练得到的条件扩散模型。作者结合两个大规模预训练模型的能力,一个语言模型GPT - 3 ( Brown et al , 2020b)和一个文本到图像模型Stable Diffusion (龙巴赫et al , 2022),来生成训练数据集。GPT - 3被微调以生成基于图像提示的文本编辑,而Stable Diffusion被用于将生成的文本编辑转换为实际的图像编辑。然后使用潜在扩散目标在生成的数据集上训练InstructPix2Pix。
图5展示了生成图像编辑数据集并在该数据集上训练扩散模型的过程。作者将所提出的方法与SDEdit ( Meng et al , 2022)和Text2Live ( Bar-Tal et al , 2022)等先前的工作进行了定性比较,突出了模型遵循图像编辑指令的能力,而不是对图像或编辑层的描述。作者还使用衡量图像一致性和编辑质量的指标与SDEdit ( Meng et al , 2022)进行了定量比较。
LLaVA ( 13B ) ( Liu et al . , 2023b)是将CLIP ( 400M ) (雷德福et al , 2021)的视觉编码器与语言解码器LLaMA ( 7B ) (图夫龙等, 2023a)连接起来开发的大型多模态模型。LLaVA使用生成的由158K个独特的语言-图像指导-跟随样本组成的教学视觉-语言数据集进行微调。数据收集过程包括创建对话、详细描述和复杂的推理提示。GPT - 4用于将图像-文本对转换为适合本数据集的指令跟随格式。使用字幕和边界框等视觉特征对图像进行编码。在合成的多模态教学数据集上,LLaVA与GPT - 4相比获得了85.1 %的相对得分。当在Science QA上进行微调时,LLa VA和GPT - 4的协同作用达到了92.53 %的最新精度。
语言模型具有同时理解视频中视觉和听觉内容的能力。Video - LLaMA的架构包括两个分支编码器:视觉-语言( VL )分支和音频-语言( AL )分支,以及一个语言解码器( Vicuna ( 7B / 13B ) ( Chiang et al , 2023),LLaMA ( 7B ) (图夫龙等, 2023a)等)。VL分支包括一个冻结的预训练图像编码器(预训练视觉成分BLIP - 2 ( Li et al , 2023d ),它包括一个ViT - G / 14和一个预训练的Q - former ),一个位置嵌入层,一个视频Q - former和一个线性层。AL分支包括一个预训练的音频编码器( ( ImageBind (吉达尔et al , 2023) )和一个音频Q形成器。图6展示了Video - LLaMA的总体架构,包括视觉语言分支和听觉语言分支。VL分支在具有视频到文本生成任务的Webvid - 2M (贝恩等, 2021)视频字幕数据集上进行训练,并在MiniGPT - 4 ( Zhu et al , 2023)、LLaVA ( Liu et al . , 2023b)和视频对话( Li et al . , 2023e)的指令调优数据上进行微调。在视频/图像指令数据上训练AL分支,将ImageBind的输出连接到语言解码器。经过微调后,VideoLLaMA能够感知和理解视频内容,展示了其整合听觉和视觉信息、理解静态图像、识别常识概念和捕捉视频中时间动态的能力。
InstructBLIP ( 1.2B ) ( Dai et al , 2023)是由图像编码器、LLM ( FlanT5 ( 3B / 11B ) ( Chung et al , 2022)或Vicuna ( 7B / 13B ) ( Chiang et al , 2023) )和查询转换器( Q-Former )组成的预训练BLIP - 2 ( Li et al , 2023d)模型初始化的视觉语言指令调优框架。如图7所示,Q - Former从冻结图像编码器的输出嵌入中提取指令感知的视觉特征,并将视觉特征作为软提示输入到冻结LLM中。作者在多种视觉语言任务上对提出的InstructBLIP模型进行了评估,包括图像分类、图像描述、图像问答和视觉推理。他们使用26个公开可用的数据集,将其分为13个持有式数据集和13个持有式数据集进行训练和评估。作者证明了InstructBLIP在广泛的视觉语言任务上实现了最先进的零样本性能。与BLIP - 2相比,最小的InstructBLIP ( 4B )在所有6个共享评估数据集上的平均相对改进为15.0 %,优于弗拉明戈( 80B ) (阿莱拉克等, 2022),平均相对改进为24.8 %。
Otter ( Li et al . , 2023b)是通过微调OpenFlamingo ( 9B ) ( Awadalla et al , 2023)训练的多模态模型,其语言和视觉编码器冻结,仅微调知觉者重采样模块、交叉注意力层和输入/输出嵌入。作者组织了涵盖11个类别的多模态任务,构建了2.8 M多模态指令-响应对的多模态语境指令调优数据集MIMIC - IT,该数据集由图像-指令-答案三元组组成,其中指令答案是根据图像定制的。每个数据样本还包括上下文,其中包含一系列图像-指令-答案三元组,这些三元组在上下文中与查询的三元组相关联。相比于OpenFlamingo(Awadalla等,2023),Otter展示了更准确地遵循用户指令并提供更详细图像描述的能力。每个数据样本还包括上下文,其中包含一系列图像-指令-答案三元组,这些三元组在上下文中与查询的三元组相关联。相比于OpenFlamingo(Awadalla等,2023),Otter展示了更准确地遵循用户指令并提供更详细图像描述的能力。
MultiModal-GPT(Gong等,2023)是一种多模态指令微调模型,能够遵循各种指令,生成详细的描述,计数特定对象,并回答一般性问题。MultiModal-GPT通过在包括VQA、图像字幕、视觉推理、文本OCR和视觉对话在内的多个开放数据集上,对OpenFlamingo(9B)(Awadalla等,2023)进行微调训练。实验证明了MultiModal-GPT在与人类进行连续对话方面的熟练程度。
在本节中,我们将描述在不同的领域和应用程序中的指令调优。
InstructDial (Gupta et al.,2022)是一个为对话而设计的指令调优框架。它包含了48个对话任务的集合,从59个对话数据集以一致的文本到文本格式创建。每个任务实例都包括一个任务描述、实例输入、约束、指令和输出。为了确保遵守说明,该框架引入了两个元问题:(1)指令选择任务,其中模型选择与给定的输入输出对对应的指令;(2)一个指令二进制任务,如果一个指令导致一个输入的给定输出,模型预测“是”或“否”。两个基本模型T0-3B(Sanh等,2021)(T5的3B参数版本(Lester等,2021))和BART0 (Lin等,2022)(基于Bart-large (Lewis等,2019)的406M参数)根据指令表号的任务进行了微调。InstructDial在看不见的对话数据集和任务上取得了令人印象深刻的结果,包括对话评估和意图检测。此外,当应用于几个镜头的设置时,它甚至会提供更好的结果。
LINGUIST (Rosenbaum等人,2022)微调AlexaTM 5B(Soltan等人,2022),一个50亿参数的多语言模型,用于意图分类和槽标记任务的指令数据集。每个指令由五个块组成:(i)生成的输出的语言,(ii)意图,(iii)槽类型和输出中包含的值(例如,[3中的数字3对应槽类型,雪是该槽使用的值),(iv)从槽类型标签到数字的映射,以及(v)多达10个用于指示输出格式的例子。LINGUIST 在使用剪断数据集的10次新颖的意图设置中,比最先进的方法有了显著的改进(Coucke et al.,2018)。在mATIS++数据集的零镜头跨语言设置中(Xu等人,2020年),语言学家在保持意图分类性能的同时,超越了跨6种语言的插槽对齐机器翻译的强大基线。
InstructUIE (Wang et al.,2023b)是一个基于指令调优的统一信息提取(IE)框架,它将IE任务转换为seq2seq格式,并通过在构建的IT数据集上微调11B FlanT5(Chung et al.,2022)来解决它们。图8显示了DoucltUIE的总体架构。它引入了IE指令,一个由32个不同的信息提取数据集组成的基准,以统一的文本-到文本格式和专家编写的指令。每个任务实例都由四个属性来描述:任务指令、选项、文本和输出。
任务指令包含诸如要提取的信息类型、输出结构格式以及在提取过程中需要遵守的附加约束或规则等信息。选项可参考一个任务的输出标签约束。文本是指输入的句子。输出是通过转换样本的原始标签(例如,“实体标签:实体跨度”)而获得的句子。在监督设置下,DuultUIE的表现与BERT(Devlin等人,2018)相当,在零镜头设置下优于最先进的GPT3.5(Brown等人,2020a)。
Varia等人(2022)提出了一个统一的指令调整框架,用于解决基于精细的T5(220M)模型的方面情绪分析(ABSA)任务(Raffel等人,2019)模型。该框架处理了涉及ABSA的四个要素的多个因子分解的子任务,即方面术语、方面类别、意见术语和情绪。它将这些子任务视为五个问题回答(QA)任务的组合,通过使用为每个任务提供的指令模板来转换语料库中的每个句子。例如,使用的一个指令模板是“text中的方面术语是什么:$TEXT?”该框架在少镜头学习场景中显示了比最先进的显著改进(平均8.29F1),并且在完全微调场景中仍然具有可比性。
Zhang等人(2023d)提出Writing-Alpaca-7B,在写作指令数据集上微调LLaMa-7B(Peng等人,2023),以提供写作帮助。所提出的指令数据集是基于指令数据的教学基准(Dwivedi-Yu et al.,2022)基准的扩展,删除了更新任务,引入了语法性任务。该指导方案严格遵循Stanford Alpaca 项目(Taori et al.,2023),包括一个通用的序言,一个指导任务完成的指导字段,一个提供要编辑的文本的输入字段,以及一个需要模型填写的响应字段。Writing-Alpaca-7B提高了LLaMa在所有写作任务上的性能,并优于其他更大的现成的llm。
CoEdIT(Raheja等人,2023)在指令数据集上细化FLANT5(Chung等人,2022)(770M参数,3B参数和11B参数),用于文本编辑,以提供编写帮助。该指令数据集包括大约82K的
CoPoet(Chakrabarty et al.,2022)是一种协作的诗歌写作工具,它利用了一个大型语言模型(如T5-3B、T5-11B和T0-3B模型),训练了不同的诗歌写作指导集合。指令数据集中的每个示例都包含一个
Radiology-GPT (Liu et al.,2023c)是一种精细的-7B(Taorietal.,2023)放射学模型,它在广泛的放射学领域知识数据集上利用了一种指令调优方法。放射学报告通常包括两个相应的部分:“发现”和“印象”。“发现”部分包含了对放射学图像的详细观察,而“印象”部分总结了从这些观察中得出的解释。放射学-gpt对“发现”文本提供了一个简短的指导:“从放射学报告中的发现中得出印象”。来自同一报告的“印象”文本作为目标输出。与一般语言模型如StableLM(伊斯lamovic)、多利(康诺弗等,2023)和LLaMA(Touvron等,2023a)相比,放射学-gpt在放射诊断、研究和交流方面表现出了显著的适应性。
ChatDoctor ( Li et al , 2023g)基于微调后的LLaMa - 7B (Touvron 等, 2023a)模型,使用alpaca指令数据集( ? )和HealthCareMagic100k医患对话数据集。并设计提示模板,用于在医患对话过程中检索外部知识库,如Disease Database和Wikipedia retrieval,以获得模型更准确的输出。ChatDoctor显著提高了模型理解患者需求和提供知情建议的能力。通过为模型配备可靠的在线和离线来源的自主信息检索,其响应的准确性得到了显著提高。
ChatGLM-Med (Haochun Wang, 2023)基于ChatGLM-6B (Du et al , 2022)模型在中文医疗指令数据集上进行微调。指令数据集包括医学相关的问题和答案对,使用GPT 3.5 API和医学知识图谱创建。该模型提高了ChatGLM ( Du et al , 2022)在医疗领域的问答性能。
Goat ( Liu and Low , 2023)是基于指令微调的LLaMA - 7B (Touvron等, 2023a)模型,旨在解决算法问题。它通过使用ChatGPT (Open AI , 2022)生成数百个指令模板,以自然语言问答的形式表达算法问题,如" What is 8914/64 ? “。该模型使用了多种技术来增强其对不同问题格式的适应性,例如随机删除算术表达式中数字和符号之间的空间,用"x"或"times"替换”*"。Goat模型在BIG-bench (Srivastava等, 2022)算法子任务上取得了最先进的性能。特别地,零样本Goat-7B匹配或超过了少样本PaLM-540B ( Chowdhery et al , 2022)的精度。
WizardCoder (Luo et al , 2023)以StarCoder 15B ( Li et al , 2023f)为基础,采用Evol-Instruct方法( Xu et al , 2023a)对代码域进行复杂指令微调。训练数据集是通过在Code Alpaca数据集( ? )上迭代应用Evol-Instruct技术产生的,其中包括每个样本的以下属性:指令、输入和期望输出。例如,当指令为"修改下面的SQL查询以选择不同的元素"时,输入为SQL查询,期望输出为生成的答案。在HumanEval和HumanEval+上,WizardCoder超过了所有其他的开源代码LLMs,甚至超过了最大的封闭LLMs,Anthropic’s的Claude和Google’s Bard。
高效的微调技术旨在通过多种方式优化小部分参数,使LLM适应下游任务,即基于加法、基于规格说明和基于重新参数化。基于加法的方法引入了原模型中不存在的额外的可训练参数或模块。代表性的方法包括适配器调优(Houlsby et al, 2019)和基于提示的调优(Schick和许策, 2021)。基于规范的方法在冻结其他参数的同时,指定了某些需要调整的固有模型参数。例如,BitFit (Zaken et al, 2022)对预训练模型的偏置项进行调优。再参数化方法将模型权重转化为更具参数效率的形式进行调优。关键的假设是模型适应是低秩的,因此权重可以重新参数化为低秩因子或低维子空间(e.g. , LoRA ( Hu et al , 2021) )。内在提示调优找到了跨不同任务的调优提示共享的低维子空间。
低秩自适应( Low-Rank Adaptation,LoRA ) ( Hu et al . , 2021)能够利用低秩更新对LLMs进行有效的自适应。LoRA使用Deep Speed ( Rasley et al , 2020)作为训练骨干。LoRA的关键见解是,新任务适应所需的LLMs权重的实际变化位于一个低维子空间中。具体来说,对于一个预训练的权重矩阵W0,我们将适应后的权重矩阵建模为W0+∆W,其中∆W是一个低秩更新,∆W被参数化为∆W = BA,其中A和B是小得多的可训练矩阵。选择ΔW的秩r远小于W0的维数。直觉是,作者不是直接训练所有的W0,而是训练低维的A和B,从而在一个对下游任务很重要的方向的低秩子空间中间接训练W0。这导致与完全微调相比,可训练的参数要少得多。对于GPT-3,与全微调相比,LoRA减少了10000倍的可训练参数,减少了3倍的内存使用。
HINT ( Ivison et al , 2022)结合了指令微调的泛化优势和高效的按需微调,避免了重复处理冗长指令。HINT的本质在于超网络,它基于自然语言指令和少量样本生成参数高效的模块用于LLMs适配。所采用的超网络将指令和小样本转换成编码指令,并使用预训练的文本编码器和基于交叉注意力的参数生成器生成适配器和前缀参数。然后,将生成的适配器和前缀作为高效的调优模块插入到骨干模型中。在推理时,超网络在每个任务中只执行一次推理,以生成适应的模块。这样做的好处是,与常规的微调或输入串联方法不同,HINT可以在不增加计算量的情况下合并长指令和额外的少数几个镜头。
QLORA (Dettmers等, 2023)包括最优量化和内存优化,旨在提供高效且有效的LLMs微调。QLORA包括4-bit NormalFloat ( NF4 ) Quantization,是针对LLM权重的典型正态分布而优化的量化方案。通过基于正态分布的分位数进行量化,NF4提供了比标准4位整数或浮点数量化更好的性能。为了进一步减少内存,量化常数本身被量化为8位。这种第二级量化平均每个参数节省0.37bit。QLORA利用NVIDIA的统一内存特性,当GPU内存超过时,页面优化器向CPU RAM状态转移,避免了训练过程中的内存溢出。QLORA能够在单个48GB的GPU上训练一个65B参数的LLM,并且与全16位微调相比没有退化。QLORA通过冻结4位量化基LLM,然后将其反向传播成一组16位低秩适配器权值,并对其进行学习。
LOw-Memory Optimization (LOMO) (吕越等, 2023)通过融合梯度计算和更新,利用有限的计算资源实现了LLMs的全参数微调。其实质是在反向传播过程中,将梯度计算和参数更新融合为一步,从而避免了全梯度张量的存储。首先,在LOMO中提供了理论分析,说明为什么SGD可以很好地用于微调大的预训练模型,尽管它对较小的模型有挑战。此外,LOMO在反向传播计算梯度后立即更新每个参数张量。每次存储一个参数的梯度将梯度存储量降低到O(1)。LOMO采用梯度值裁剪、分离梯度范数计算和动态损失缩放来稳定训练。激活检查点和ZeRO优化方法的集成节省了内存。
Delta-tuning ( Ding et al , 2023b)为理论分析提供了优化和最优控制的视角。直观地讲,delta调优通过将调优限制在低维流形上来进行子空间优化。调整后的参数作为最优控制器,引导模型对下游任务的行为。
HELM( Liang et al , 2022)是对语言模型( Language Models,LMs )的整体评估,以提高语言模型的透明度,从而更全面地了解语言模型的能力、风险和局限性。具体来说,与其他评价方法不同,HELM认为语言模型的整体评价应关注以下3个因素:
( 1 )覆盖面广。在开发过程中,语言模型可以适应各种NLP任务(例如,序列标注和问答),因此,对语言模型的评估需要在广泛的场景中进行。为了涉及所有潜在的场景,HELM提出了一种自顶向下的分类方法,该方法首先将一个主要的NLP会议( ACL2022 )中的所有现有任务编译到一个任务空间中,并将每个任务划分为场景(例如,语言)和度量(例如,准确性)的形式。然后当面对一个特定的任务时,分类法会在任务空间中选择一个或多个场景和度量来覆盖它。HELM通过分析各任务的结构,明确了评价内容(任务场景和度量指标),提高了语言模型的场景覆盖率。
( 2 )多尺度测量。为了使人类能够从不同角度权衡语言模型,HELM提出了多指标综合评价法度量。HELM涵盖了16种不同的场景和7个度量指标。为了确保密集多度量测量的结果,HELM测量了112个可能的核心场景中的98个( 87.5 % )。
( 3 )标准化。语言模型的规模和训练复杂度的增加严重阻碍了人类对每个语言模型结构的理解。为了建立对现有语言模型的统一认识,HELM基准测试了30个著名的语言模型,涵盖了Google ( UL2 ( Tay et al , 2022)、OpenAI ( GPT-3 ( Brown et al , 2020b)、埃留塞瑞( GPT-NeoX ( Black et al , 2022 ))等机构。有趣的是,HELM指出,T5 ( Raffel et al , 2019)和AnthropicLMv4-s3 ( Bai et al , 2022a)等LM在最初的工作中并没有直接进行比较,而GPT - 3和YaLM等LLM在多次评估后仍与其相应的报道存在差异。
Gupta等人( 2023 )试图估计IT模型所需的最小下游训练数据,以匹配各种任务上的SOTA监督模型。Gupta等人( 2023 )在单任务学习算法( STL )和多任务学习( MTL )两种环境下对来自超自然指令( SuperNI )的119个任务进行了实验。结果表明,在STL场景下,仅有25 %的下游训练数据的IT模型在这些任务上的表现优于SOTA模型,而在MTL场景下,仅有6 %的下游训练数据能够引导IT模型达到SOTA性能。这些发现表明,即使在数据有限的情况下,指导语调优也能有效地帮助模型快速学习任务。然而,由于资源限制,Gupta等人( 2023 )没有对T5 - 11B这样的LLMs进行实验。因此,为了对IT模型有更全面的理解,有必要使用更大的语言模型和数据集进行进一步的研究。
IT需要大量专门的教学数据用于培训。Zhou等人( 2023 )假设预训练的LLM只需要学习与用户交互的风格或格式,并提出了LIMA,通过仅在1000个精心选择的训练样本上微调LLM即可获得强大的性能。
具体来说,LIMA首先手动管理1000个演示,并提供高质量的提示和响应。然后利用1 000次演示对预训练的65B参数LLaMa (图夫龙等, 2023b)进行微调。相比之下,在300多个具有挑战性的任务中,LIMA优于GPT-davinci003 ( Brown et al , 2020b),后者通过人为反馈调节在5 200个例子上进行了微调。不仅如此,LIMA仅用了一半的演示次数就取得了与GPT-4 (Open AI , 2023)、Claude (Bai et al , 2022b)和Bard相当的效果。最重要的是,LIMA证明了LLMs的强大知识和能力可以暴露给用户,只需要少量精心规划的指令就可以进行微调。
IT模型的性能高度依赖于IT数据集。然而,目前缺乏从开放和主观方面对这些IT数据集的评估。
为了解决这个问题,Wang等( 2023c )通过在各种开放IT数据集上微调LLaMa模型(图夫龙等, 2023b)来进行数据集评估,并通过自动评估和人工评估来衡量不同的微调模型。在IT数据集的组合上训练一个额外的模型。对于该结果,Wang等( 2023c )的研究表明,在所有任务中并不存在单一的最佳IT数据集,而通过手动组合数据集可以获得最佳的整体性能。此外,Wang等人( 2023c )指出,尽管IT可以在所有大小的LLMs上带来巨大的好处,但较小的模型和具有高基质量的模型从IT中获益最大。对于人类评价,Wang等人( 2023c )一个更大的模型更有可能获得更高的可接受性分数。
为了解决模型通过指令调优获得的具体知识不清晰的问题,Kung和Peng ( 2023 )通过比较提供修改指令和原始指令时的调优,深入分析了模型如何在IT期间使用指令。
具体来说,Kung和Peng ( 2023 )创建了简化的任务定义,删除了所有的语义成分,只保留了输出信息。除此之外,Kung和Peng ( 2023 )还纳入了包含错误的输入-输出映射的令人难以捉摸的例子。令人惊讶的是,实验表明,在这些简化的任务定义或难以捉摸的例子上训练的模型可以达到与在原始指令和例子上训练的模型相媲美的性能。此外,本文还为零样本分类任务引入了一个基线,在低资源设置下达到了与IT相近的性能。
综上所述,根据Kung和Peng ( 2023 )的观点,当前IT模型中观察到的显著性能提升可能归因于它们捕获表层模式的能力,例如学习输出格式和猜测,而不是理解和学习特定的任务。
LLMs模仿是一种从更强的模型(如ChatGPT等专有系统)收集输出,并使用这些输出来微调一个开源的LLM的方法。通过这种方式,一个开源的LLM可以获得与任何专有模型竞争的能力。
古迪巴恩达等(2023)进行了多个实验,批判性地分析了模型模仿的有效性。具体来说,古迪巴恩达等人(2023)首先收集了ChatGPT在广泛任务上的输出数据集。然后使用这些数据集对一系列模型进行微调,涵盖大小从1.5B到13B,基本模型GPT-2和LLaMA,数据量从0.3M tokens到150M tokens。
在评估方面,古迪巴恩达等人( 2023 )证明了在有支持数据集的任务上,模仿模型远远优于以前,其输出结果与ChatGPT的相似。而在没有模仿数据集的任务上,模仿模型在准确率上没有提升甚至有所下降。
因此,古迪巴恩达等( 2023 )指出,正是模仿模型擅长模仿ChatGPT的风格(例如,流利、自信和结构良好)的现象,使得研究者对模仿模型的通用能力产生了错觉。因此,古迪巴恩达等人( 2023 )建议,研究者不应该模仿专有模型,而应该专注于提高基础模型和教学实例的质量。
本文综述了快速增长的教学调优领域的最新进展。我们对文献进行了系统回顾,包括IT的一般方法论、IT数据集的构建、IT模型的训练、IT在不同模态、不同领域和不同应用中的应用。我们还回顾了对IT模型的分析,以发现它们的优点和潜在的缺陷。我们希望这项工作将作为一种激励,以推动进一步的努力,以解决当前IT模式的不足