导语
Decoder-only的模型只能从左向右看,无法利用双向信息完成填空等操作,本文是OpenAI最早提出使用Fill-in-the-model到Autoregressive形式的模型中的文章,启发了后面一些Text-to-Code的大模型,比如InCoder,SantaCoder、StarCoder等,作者通过实验证明,在预训练中加入一定比例的FIM形式,不仅有助于模型完成InFilling任务,还能保证原始的自左向右生成任务性能不受影响。
- 链接:https://arxiv.org/abs/2207.14255
- 机构:OpenAI
摘要
本文展示了一种有效的方法,使自回归语言模型能够学习填充文本中的空白部分。这一方法基于一个简单的数据集转换策略,即将文档中部的文本移至末尾。作者通过大量研究证明,这种转换对于原始的从左至右生成模型能力没有负面影响,这一点通过多种规模的困惑度和抽样评估得到了验证。鉴于训练模型以填补中间部分的有效性、简易性和高效性,作者建议未来的自回归(AR)语言模型应默认采用此种训练方法。文章还对数据转换频率、转换结构和选择填充跨度的方法等关键超参数进行了详细剖析,并提出了一套强有力的默认设置和最佳实践指南。作者在其API中发布了采用这些最佳实践训练的优秀填补模型,并提供了填补基准,以促进未来的相关研究。
1 引言
背景与动机
大型语言模型(LLMs)在处理多样化的互联网规模数据集方面取得了显著成就。这些模型能够基于自然语言提示生成连贯、合理的补全,并在多个基准测试中达到了最先进的水平,包括阅读理解、问答、逻辑推理和常识推理。Transformer基础上的语言模型主要分为几类:
- 仅编码器模型(如BERT)、
- 编码器-解码器模型(如T5)和
- 基于因果解码器的语言模型(如GPT系列)。
尽管如GPT-3、Codex、LaMDA等因果解码器基模型在开放式文本生成中表现卓越,但所有类别的模型在填补(infilling)任务上均存在局限性,即在给定前缀和后缀的情况下生成特定位置的文本。
本文目标与方法
本文旨在通过增加填补中间(Fill-in-the-middle,FIM)能力来解决这一限制,特别聚焦于目前占LLM主导地位的因果解码器基语言模型。作者提出通过简单修改训练数据,而无需改变模型架构,使这些模型学会填补能力,并保持其原有的从左到右的生成能力。具体而言,对数据集的一部分应用转换,即将文档随机分为三部分:Prefix、Middle、Suffix,并将中间部分移至末尾,然后使用sentinel token连接这三部分。这种方法强调了训练FIM模型的计算效率,尤其是在训练大型语言模型时的重要性。
本文贡献
- FIM-for-free性质:作者通过培训一系列模型,并展示了在预训练中学习FIM不会损害从左到右的能力(如图1)。
- FIM预训练中的最佳实践:研究了与训练FIM模型相关的多个超参数的效果。
- 微调低效性:相较于从头开始训练FIM模型,通过微调现有语言模型学习FIM在计算上效率较低。
- 新的填补基准:为了评估模型的生成能力,作者引入了新的基准。
- 抽样评估的必要性:作者发现,在FIM训练中改变各种超参数通常会导致在基于抽样