大模型蒸馏实战:超越性能与降低成本

4 阅读3分钟

在慕尼黑InfoQ Dev Summit首届会议的演讲中,Ines Montani基于她年初在QCon London的分享,为观众提供了将最新的大语言模型应用于实际场景的实用方案,以及如何将这些模型的知识蒸馏到更小、更快的组件中,以便在内部运行和维护。

演讲首先指出,将大模型视为隐藏在API背后的“黑盒”会阻碍我们实现优秀软件的属性:模块化、透明、可解释、数据隐私、可靠和经济。

接着,Montani提到,在多种需要理解人类语言(通常语言表达很模糊)的场景下,生成式AI非常有用,例如评估用户在论坛上对产品的评论。她强调,在这种情况下并不需要基础模型的全部能力,只需理解上下文即可。这可以通过使用迁移学习来蒸馏出特定任务的信息来实现。

为了让系统走出“原型 plateau”并“生产就绪”,Montani认为需要采取以下行动:

  • 标准化输入和输出——原型和生产系统必须使用相同的数据类型。
  • 从评估开始——这类似于软件开发中的测试。需要那些已知正确答案的响应,这样才能根据准确率判断系统是否在改进。
  • 评估效用,而不仅仅是准确性——除了准确率分数,还要检查模型的效用,即它是否有助于解决当前问题。
  • 迭代式处理数据——类似于编码实践,应该尝试不同的方法和工具,直到找到最合适的。
  • 考虑自然语言的结构和模糊性——从人类语言中提取的内容不能像标准数据那样处理。

在进行涉及自然语言处理(NLP)的原型设计时,一个好的起点是使用一个可以通过工具提示的大语言模型,然后解析其输出,得到一个包含结构化数据的对象(spaCy LLM就是为此而构建的)。即使可以这样直接部署到生产环境,更好的做法是在运行时用一个经过蒸馏的、仅执行所需部分的专用组件来替代大模型。这样系统将更加模块化、透明且可能更快。

此外,可以通过引入“人在回路”来纠正模型的错误,从而超越大模型原有的输出质量。在确定了基线(即开箱即用的结果)之后,修复提示词并通过标注工具来创建一个非常针对特定任务的数据集。为了高效地利用人工,可以多次处理数据,每次只关注一个方面,这样能降低认知负荷,提高速度。

Montani表示,作为开发者需要交付产品,不能困在原型 plateau。应该让问题变得更易于管理。这不是一场竞赛,也不是学术界,复杂性越低,出错的可能性就越小。

可以将蒸馏过程视为代码重构。可以使用诸如将问题分解为更小的问题、降低其复杂性、将业务逻辑细节与系统特性分离等技术。在此阶段,可以重新评估所使用的依赖关系和技术,确保为任务选择最合适的工具。

为了强调在基于NLP的应用中进行模型蒸馏的多方面好处,Montani总结了explosion.ai帮助多个领域客户的案例研究。最终模型通常比大模型提供的初始基线更小、更准确。因此,花时间迭代模型从长远来看会带来更好的结果,并降低运营成本。FINISHED