AI 学习资料 · 大型语言模型简介
微调、蒸馏和提示工程
上一章介绍的是通用 LLM,它有几种叫法:
- 基础 LLM(foundation LLM)
- 基座 LLM(base LLM)
- 预训练 LLM(pre-trained LLM)
基础 LLM 用足够多的自然语言训练过,因此对语法、词汇和习语“懂得”相当多。基础语言模型可以就训练过的主题生成有用的句子。此外,基础 LLM 还能完成某些传统上被称为“创造性”的任务,比如写诗。不过,基础 LLM 生成的文本输出并不能解决其他类型的常见机器学习问题,比如回归或分类。对于这些用例,基础 LLM 可以充当平台,而不是解决方案。
要把基础 LLM 变成满足应用需求的解决方案,需要一个叫作微调的过程。另一个叫作蒸馏的辅助过程,会生成微调后模型的较小版本(参数更少)。
微调
研究表明,基础语言模型的模式识别能力非常强,有时只需相对较少的额外训练,就能学会特定任务。这些额外训练能帮助模型在特定任务上做出更好的预测。这种额外训练称为微调,它让 LLM 发挥出实际用途。
微调使用的是专门针对应用所要执行任务的示例。工程师有时只用几百或几千个训练示例,就能微调一个基础 LLM。
尽管训练示例相对很少,标准微调的计算开销通常仍然很大。这是因为标准微调要在每次反向传播迭代中更新每个参数的权重和偏差。好在有一种更聪明的方法,叫作参数高效微调,它在每次反向传播迭代中只调整一部分参数,就能微调 LLM。
微调后模型的预测通常比基础 LLM 的预测好。不过,微调后的模型与基础 LLM 包含的参数数量相同。所以,如果基础 LLM 有一百亿个参数,微调后的版本也有一百亿个参数。
蒸馏
大多数微调后的 LLM 都包含海量参数。因此,基础 LLM 需要大量的计算资源和环境资源才能生成预测。请注意,这些参数中有很大一部分通常与具体应用无关。
蒸馏会生成一个较小版本的 LLM。与完整的 LLM 相比,蒸馏后的 LLM 生成预测快得多,需要的计算资源和环境资源也更少。不过,蒸馏模型的预测通常比不上原始 LLM。回想一下,参数更多的 LLM 几乎总是比参数更少的 LLM 预测得更好。
补充:蒸馏是怎样做的
最常见的蒸馏形式是用批量推理给数据加标签。然后用这些带标签的数据训练一个新的、更小的模型(称为学生模型),这样提供服务的成本更低。带标签的数据就像一条通道,较大的模型(称为教师模型)通过它把知识输送给较小的模型。
例如,假设您需要一个在线的恶意内容评分器来自动审核评论。这时可以用一个大型的离线恶意内容评分器给训练数据加标签,再用这些训练数据蒸馏出一个足够小、能上线处理实时流量的恶意内容评分模型。
教师模型有时能提供比它自己训练时用的更多的带标签数据。另外,教师模型也可以向学生模型传递数值分数,而不是二元标签。数值分数比二元标签提供的训练信号更丰富,让学生模型不仅能预测正类和负类,还能预测处在边界上的类别。
提示工程
提示工程让 LLM 的最终用户能够定制模型的输出,也就是由最终用户说明 LLM 应当怎样回应他们的提示词。
人善于从示例中学习,LLM 也一样。向 LLM 展示一个示例,称为单样本提示(one-shot prompting)。例如,假设您希望模型按下面的格式输出某种水果所属的类别:
用户输入一种水果的名称:LLM 输出这种水果所属的类别。
单样本提示词会向 LLM 展示一个按上述格式写的示例,然后要求 LLM 照着这个示例完成查询。例如:
peach: drupe
apple: ______
有时一个示例就够了。如果够了,LLM 会输出有用的预测。例如:
apple: pome
编者注:drupe 是核果(如桃、李),pome 是梨果(如苹果、梨)。
在另一些情况下,一个示例不够用,也就是说,用户必须向 LLM 展示多个示例。例如,下面的提示词包含两个示例:
plum: drupe
pear: pome
lemon: ____
提供多个示例称为少样本提示(few-shot prompting)。您可以把上面提示词的前两行看成训练示例。
不给示例,LLM 能给出有用的预测吗(零样本提示,zero-shot prompting)?有时可以,但 LLM 喜欢上下文。没有上下文时,下面这个零样本提示词返回的可能是那家科技公司的信息,而不是水果:
apple: _______
注意:提示工程不会改变模型的参数。提示词利用的是现有 LLM 的模式识别能力。
离线推理
LLM 的参数数量有时大到在线推理太慢,无法用于回归或分类之类的实际任务。因此,许多工程团队改用离线推理(也称批量推理或静态推理)。也就是说,训练好的模型不是在服务时响应查询,而是提前做出预测,再把预测结果缓存起来。
如果 LLM 每周或每月只需执行一次任务,那么完成任务花很长时间也无妨。
例如,Google 搜索用 LLM 做离线推理,缓存了一份包含 50 多种语言、800 多个新冠疫苗同义词的列表。然后,Google 搜索用这份缓存的列表来识别实时流量中与疫苗有关的查询。
负责任地使用 LLM
和任何形式的机器学习一样,LLM 通常带有以下数据中的偏差:
- 训练它们所用的数据。
- 蒸馏它们所用的数据。
请按照数据模块和公平性模块中介绍的准则,公平、负责任地使用 LLM。
练习:检查理解程度
问题:下面关于 LLM 的说法,哪一项是对的?
可选答案与解析:
- 蒸馏后的 LLM 比它所源自的基础语言模型参数更少。(正确)是的,蒸馏会减少参数数量。
- 微调后的 LLM 比训练它所用的基础语言模型参数更少。(错误)微调后的模型与原始基础语言模型的参数数量相同。
- 用户做的提示工程越多,LLM 的参数数量就越多。(错误)提示工程不会增加(也不会删除或改变)LLM 的参数。