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 中的参数数量会增加。
提示工程不会添加(或移除或更改)LLM 参数。