LLM:微调、蒸馏和提示工程

上一单元介绍了通用 LLM,也称为:

  • 基础 LLM
  • 基础 LLM
  • 预训练的 LLM

基础 LLM 使用足够多的自然语言进行训练,因此可以“了解”大量的语法、词语和成语。基础语言模型可以生成与训练所依据的主题相关的实用句子。此外,基础 LLM 还可以执行传统上称为“创造性”的特定任务,例如写诗。不过,基础 LLM 的生成式文本输出并不能解决其他类型的常见机器学习问题,例如回归或分类。对于这些使用场景,基础 LLM 可以用作平台,而不是解决方案。

将基础 LLM 转换为满足应用需求的解决方案需要执行一个称为微调的过程。称为提炼的辅助过程会生成经过微调的模型的较小版本(参数更少)。

微调

研究表明,基础语言模型的模式识别能力非常强大,有时只需进行相对较少的额外训练,即可学习特定任务。这项额外的训练有助于模型针对特定任务做出更准确的预测。这项额外的训练称为微调,有助于发掘 LLM 的实用性。

微调会使用特定于应用要执行的任务的示例进行训练。工程师有时只需几百个或几千个训练示例,即可对基础 LLM 进行微调。

尽管训练样本数量相对较少,但标准微调的计算开销通常很高。这是因为标准微调涉及在每次backpropagation迭代中更新每个参数的权重和偏差。幸运的是,一个更智能的过程称为参数高效微调,可以通过在每次反向传播迭代中仅调整参数子集来对 LLM 进行微调。

经过微调的模型的预测结果通常比基础 LLM 的预测结果要好。不过,经过微调的模型包含与基础 LLM 相同数量的参数。因此,如果基础 LLM 包含十亿个参数,那么经过微调的版本也将包含十亿个参数。

蒸馏

大多数经过微调的 LLM 包含大量参数。因此,基础 LLM 需要大量的计算资源和环境资源才能生成预测。请注意,其中大部分参数通常与特定应用无关。

蒸馏用于创建较小版本的 LLM。与完整的 LLM 相比,蒸馏的 LLM 生成预测的速度要快得多,并且需要的计算和环境资源也更少。不过,提炼模型的预测结果通常不如原始 LLM 的预测结果。回想一下,参数较多的 LLM 几乎总是比参数较少的 LLM 生成更好的预测结果。

最常见的提炼形式是使用批量推理来标记数据。这些带标签的数据随后用于训练一个较小的新模型(称为学生模型),该模型的价格更加经济实惠。标记数据可作为较大模型(称为教师模型)将其知识传递给较小模型的渠道。

例如,假设您需要在线恶意评论评分器来自动审核评论。在这种情况下,您可以使用大型离线毒性评分器为训练数据标记。然后,您可以使用这些训练数据来提取恶意评分器模型,该模型足够小,可以提供服务并处理实时流量。

教师模型有时可以提供比其训练时更多的标记数据。或者,教师模型可以将数字分数(而不是二元标签)传递给学生模型。与二元标签相比,数值得分可提供更丰富的训练信号,使学生模型不仅可以预测正类和负类,还可以预测边界类。

提示工程

提示工程可让 LLM 的最终用户自定义模型的输出。也就是说,最终用户应说明 LLM 应如何回应他们的提示。

人类善于从示例中学习。LLM 也是如此。向 LLM 显示一个示例称为单样本提示。例如,假设您希望模型使用以下格式输出水果的科:

用户输入水果的名称:LLM 输出该水果的类。

单样本提示会向 LLM 显示上述格式的单个示例,然后要求 LLM 根据该示例完成查询。例如:

peach: drupe
apple: ______

有时,单个示例就足够了。如果是,LLM 会输出有用的预测结果。例如:

apple: pome

在其他情况下,一个示例是不够的。也就是说,用户必须展示 LLM 多个示例。例如,以下提示包含两个示例:

plum: drupe
pear: pome
lemon: ____

提供多个示例称为少样本提示。您可以将上述问题的前两行视为训练示例。

LLM 能否在不使用示例的情况下提供有用的预测(零样本问题)?有时,但 LLM 喜欢上下文。在没有上下文的情况下,以下零样本提示可能会返回关于技术公司的信息,而不是关于果实的信息:

apple: _______

离线推理

LLM 中的参数数量有时非常大,导致在线推理速度过慢,对于回归或分类等现实任务来说并不实用。因此,许多工程团队改为依赖离线推理(也称为批量推理静态推理)。换句话说,经过训练的模型会提前进行预测,然后缓存这些预测,而不是在服务时响应查询。

如果 LLM 只需每周或每月执行一次任务,那么 LLM 需要很长时间才能完成任务,这并不重要。

例如,Google 搜索使用了 LLM 来执行离线推理,以便缓存 50 多种语言的新冠疫苗 800 多个同义词列表。然后,Google 搜索使用缓存的列表来识别实时流量中与疫苗相关的查询。

以负责任的方式使用 LLM

与任何形式的机器学习一样,LLM 通常存在以下偏差:

  • 对其训练时所用的数据。
  • 对其进行提炼时所用的数据。

根据本课程前面介绍的课程内容,公平且负责任地使用 LLM。

练习:检查您的理解情况

在以下关于 LLM 的表述中,哪一项是正确的?
经过微调的 LLM 包含的参数比其训练时所依据的基础语言模型少。
提炼后的 LLM 包含的参数比其源自的基础语言模型少。
随着用户进行更多提示工程,LLM 中的参数数量会增加。