引言

模型蒸馏,也称为知识蒸馏,是一种机器学习技术,它将知识从一个大型的复杂模型(“教师”模型)转移到一个小型、更高效的模型(“学生”模型)。它已成为优化 AI 模型的关键技术,尤其是在计算资源、速度或成本成为限制因素时。大型模型,如大型语言模型(LLMs)或视觉语言模型(VLMs),在复杂任务上表现出色,但通常速度过慢或成本过高,不适合实际部署。蒸馏通过创建保留教师模型大部分性能的紧凑模型来解决这一问题,使其适用于移动应用、边缘设备或成本敏感的环境等实际应用。

本指南探讨了何时需要模型蒸馏,如何构建有效的数据集,以及展示其实际业务影响的真实案例。

何时需要模型蒸馏?

模型蒸馏在大型模型因资源限制或性能要求而不切实际的情况下尤其有价值。以下是可能需要蒸馏的关键情况,这些情况得到了行业来源的见解支持:

高计算成本

大型模型(一些前沿模型现在有数十亿参数),需要大量的计算资源,导致高运营成本,尤其是在云环境中。例如,一个拥有 700 亿参数的模型可能需要 < a id=0>168GB 的 GPU 内存 ,这使得大规模运行变得昂贵。蒸馏创建出更小的模型,在保持高准确度的同时降低这些成本,使 AI 对商业更具成本效益。通常,蒸馏模型保留了大型模型 95%以上的准确度,具体取决于任务!

实时应用

需要低延迟的应用,如聊天机器人、推荐系统或实时分类器,可以从处理请求更快的较小模型中受益。如果您从模型生成 JSON 以向用户呈现响应,那么延迟可能成为一个问题,因为我们不希望用户在收到响应之前感到沮丧。例如,像 Claude Opus 这样的大型 VLM 可能需要 25 秒来分类图像并提取元数据,这对于消费者应用来说是不切实际的。蒸馏模型可以改善响应时间,提高用户体验,同时显著降低成本并增强可靠性。然而,没有训练这些超级大型模型可能仍然是解决复杂任务的唯一选择,应该作为起点。您可以在为早期用户提供服务的同时收集有价值的训练数据,计划稍后提高延迟。

资源受限环境

在计算能力有限的设备上部署 AI,如智能手机或物联网设备,需要紧凑型模型。蒸馏技术使得在边缘设备上实现高级功能成为可能,因为大型模型由于内存或功耗限制而不切实际。模型越小,在低端硬件上运行就越容易。如果你能在 4090 上运行某物而不是 B200,你可能会显著提高你的利润空间。

复杂的多模态任务

需要同时理解和处理视觉和文本的任务,如视觉问答、医学报告生成或视觉叙事,通常依赖于视觉语言模型(VLMs)。这些任务复杂,传统的分类模型可能因为无法有效处理多模态输入而失败。蒸馏允许企业部署高效的 VLMs 来处理这些任务,在性能和实用性之间取得平衡。在考虑蒸馏时,我们希望任务足够狭窄,以至于不需要模型的全能智能来完成它。需要广泛知识的一般性任务可能不适合蒸馏,但像图像/视频字幕这样的简单任务可能非常容易蒸馏。

传统模型失败时

对于简单模型无法达到所需准确度,但大型模型可以的任务,蒸馏填补了这一差距。通过训练一个较小的模型来模仿教师的行为,企业可以在不承担大型模型开销的情况下实现高性能。

构建适用于模型蒸馏的优秀数据集

创建高质量的数据集对于模型蒸馏的成功至关重要,尤其是对于处理视觉和文本输入的视觉语言模型(VLMs)。数据集通常包括输入(例如,图像、文本提示)以及由教师模型生成的相应输出。以下是构建针对视觉问答或医疗报告生成等 VLM 任务的有效的数据集的详细步骤:

1. 使用提示明确定义任务

用复杂的提示指定学生模型将要执行的任务。为了帮助您编写提示,您可能想尝试 OpenAI 的游乐场,它最近变得更加复杂,拥有许多提示改进工具和完整版本控制。对于复杂任务,最佳实践是编写一个 megaprompt,这是一个包含完成任务所需的所有必要信息和指令的大提示。这些提示有时会增长到数千或数万个标记。

2. 收集多样化的输入

收集一组代表性的输入,涵盖模型将遇到的各类场景。

获取相关、多样化的数据的一个非常好的方法就是在运行大型模型时从用户那里获取数据,然后使用 LLM 可观察性提供商如 Helicone 存储这些输入和输出。对于多模态任务,收集多样化的输出可能只是抓取图像。例如,如果你的任务是植物分类,你可能想从 Pinterest 抓取 10 万张植物图像。

3. 生成教师模型输出

使用教师模型为收集到的输入生成输出。然后我们就能在输入-输出对上进行训练。

对于 X 光图像,教师 VLM 可能会生成一份详细的报告,描述发现。

我们首先想确保教师模型能够有效地解决任务。如果不行,手动创建一个数据集,在微调一个大型教师模型(如 70B 参数模型)之前,然后再将其精炼成一个更小的模型,可能是有意义的。

4. 确保数据质量

验证教师输出的准确性,因为错误会传播到学生模型。如果可能,使用专家标注的数据子集来验证教师的表现。例如,在医疗应用中,让放射科医生审查生成的报告样本。

5. 平衡和增强数据集

确保数据集在类别(例如,不同的医疗状况)之间保持平衡,以避免偏差。使用数据增强技术来增加多样性:

  • 图像增强: 应用裁剪、旋转或颜色调整等变换。
  • 文本增强: 改变提示语的表达方式,以涵盖询问相同问题的不同方式。这提高了学生模型的鲁棒性 DataCamp。

增强并不总是对蒸馏必要,但这是需要考虑的因素。

6. 包含具有挑战性的示例

将边缘情况或困难输入融入学生模型,使其更具韧性。例如,包括低质量的 X 射线图像或模糊的问题来测试模型的一般化能力。挑战性的例子也使得测试模型变得更容易,因为你不需要在包含 10k 个示例的数据集上测试教师或学生——50 个困难示例可能就足够了。手动编写这些例子可能是有意义的,因为它们可能会使你的模型成功或失败。

7. 创建验证集

留出一部分数据集用于验证,以监控学生在训练过程中的表现。这有助于防止过拟合并确保模型具有良好的泛化能力。确保最困难的示例既在训练集中也在验证集中。

8. 考虑数据集大小

虽然小型模型可能比大型模型需要的数据更少,但数据集必须足够大以捕捉输入的变异性。对于 VLMs,目标是数千个输入-输出对。根据任务复杂度,这个数字可能上升到数百万。

最终思考

模型蒸馏并非万能良药,而是一种在大型模型已经能够很好地完成某项任务,但速度较慢或仅能通过长思维链来完成时,用于提高延迟和成本的工具。训练模型可能非常昂贵,训练运行费用从几百到数万美元不等。

在 Inference.net,我们拥有一支内部模型训练团队,以及多年的 MLOps 经验。这使得我们不仅能快速训练最先进的语言模型,还能高效、稳健地将它们部署到企业中。