华盛顿大学和Google Research的团队最近开源了一种名为"Distilling Step-by-Step"的技术,用于微调较小的语言模型。Distilling Step-by-Step相较于标准的微调需要更少的训练数据,并且生成的较小模型在性能上可以超过具有700倍参数的少样本大型语言模型(LLM)。
尽管少样本提示的LLM在许多任务上表现出色,但由于内存和计算需求,托管这些模型是具有挑战性的。较小的模型在微调后也可以表现良好,但这需要手动创建特定任务的数据集。Distilling Step-by-Step的关键思想是使用LLM自动生成一个小型微调数据集,其中包含输入和输出标签以及为何选择该输出标签的"理由"。微调过程训练小型模型同时预测输出标签并生成理由。在自然语言处理基准测试中评估时,这些经过微调的小型模型在仅使用80%的基准微调数据的情况下胜过了540B的PaLM模型。根据Google的说法:
“我们展示了Distilling Step-by-Step既减少了训练特定任务较小模型所需的数据集,又减小了实现甚至超过少样本提示LLM性能所需的模型大小。总体而言,Distilling Step-by-Step提供了一种在模型大小和训练数据之间权衡的资源高效范例。”
研究显示,增加LLM的参数数量可以提高其性能,现有的最先进模型(如PaLM)拥有数千亿的参数。然而,这些大型模型在推理时既昂贵又难以使用,因为它们需要多个并行GPU才能容纳参数并将其存储在内存中。最近的工作已经产生了略小一些的模型,例如Meta的Llama 2,它在性能上几乎能与大型模型媲美,但参数数量减少了一个数量级,仍然相当庞大且计算密集。
获得在特定任务上表现良好的较小模型的一种方法是使用任务特定的数据集对较小语言模型进行微调。虽然这些数据集可能相对较小(约数千个示例),但其收集可能仍然代价高昂且耗时。另一种选择是使用大型模型作为较小模型的教师进行知识蒸馏。最近谷歌开发了一种技术,使用PaLM LLM创建训练数据集,产生的经过微调的模型能与具有10倍参数的LLMs相媲美。
Distilling Step-by-Step确实需要一个微调数据集,但它减少了创建高性能模型所需的数据量。源数据集通过链式思考提示被提供给PaLM LLM,要求模型给出答案理由。结果是一个修改过的微调数据集,包含原始的输入、答案以及理由。小型目标模型通过微调来执行两个任务:回答原始问题并生成理由。
谷歌使用四个自然语言处理基准测试来评估他们的技术,每个测试都包含一个微调数据集。他们使用Distilling Step-by-Step修改这些数据集,并对不到10亿参数的T5模型进行微调。他们发现,这些模型可以超越基准微调模型的性能,同时仅使用一小部分数据集,有些情况下甚至只需12.5%。他们还发现,参数为7.7亿的模型在ANLI基准测试中胜过了参数为5400亿的PaLM模型,并且仅需要使用基准微调数据的80%。
在关于这项研究的讨论中,AI创业家Otto von Zastrow在X(前称为Twitter)上写道:
“这些结果非常强大。我会称其为合成数据生成,而不是蒸馏,并且我非常好奇如果对原始LLM使用这种每个样本问题的合成理由进行训练会发生什么。”
Distilling Step-by-Step的源代码和训练数据集可在GitHub上获取。Google Cloud的Vertex AI平台还提供该算法的私有预览版本。