一、由新闻说起
在前一阵子一个比较火的新闻,阿美利卡的大公司宣称国内某些公司使用他们的大模型进行非常的"蒸馏"。一时间网上闹得挺欢。后来则是自家后院起火,自己人反而指责他们是胡乱的瞎猜。咱们不管他们怎么吵,只是想知道啥叫"蒸馏",它有什么作用?
二、什么叫模型蒸馏
大模型的蒸馏(LLM Distillation),即知识蒸馏,英文称Knowledge distillation(KD),是一种模型的压缩技术。也就是说,利用一个模型复杂庞大、性能强大的"源模型"去训练一个模型较为简单但性能同样的强大的小的"大模型"。也可以把源模型称为"老师模型",而训练出来的小的"大模型"称为学生模型。需要说明的是,大模型内部的大和小,是相对的。
三、大模型的费用
大模型之所以称为大模型,一个重要原因是,其本身的复杂性和训练的复杂性导致的时间成本和费用成本一直高居不下。大家虽然可能不太明白其具体的费用,但可以从大模型的订阅费用窥见一斑。最起码一个账号的费用一年也一二百美元。这和早期的手机话费真得有一拼。从这个反推,大模型的运营成本应该相当高。从目前的可查阅的资料可以看到,2024年Anthropic的首席执行官达里奥·阿莫代伊说当前市场上的大模型训练成本已经高达1亿美元并预计2025年至2026年其成本可能到达50~100亿美元。
计算大模型相关的费用一般可以使用下面几个方法进行估算:
- 基于参数数量和Token数量
一般来说,通过实践发现其可以大概推测出训练成本为6N,其中N为大模型中的参数数量。然后再利用模型的FLOPS利用率和GPU价格估算费用。 - 基于FLOPS和GPU的价格
这种方法直接根据模型中的FLOPS需求和GPU价格计算相关的成本 - 基于云服务平台。
这个比较好理解和好计算,直接按其给出的计算资源的价格乘以需要的时间就可以算出。而大模型的训练周期一般是以月计。
大模型的相关费用还有很多如网络费用、标注成本、人力成本等。但主力还是上面分析的部分,成本大多都会最终落在GPU上,这也是NVIDA现在大赚特赚的原因。当然电力等基础设施也越来越重要(黄教主的五层论)。随着大模型越来越大,对硬件和基础设施(电力等)的需求越来越高,这些成本已经在明显的上升,比如大家都知道的内存和SSD在飞速的提升价格。所以上面的估算的成本其实是当时的成本,现在应该还会增加。
四、蒸馏的目的
既然明白了大模型的费用,特别是时间成本很高。那么,如何降低成本,最简单的方法就是减少硬件(如GPU)的需求、减少训练成本特别是时间成本(意味着硬件费用也急剧降低)。所以如何能够要想在短时间内迅速的训练出一个可以媲美一个大模型的另外一个小规模的大模型,就是一种捷径。这也就是蒸馏技术的目的。
可以理解为一个有着多年丰富经验的老师傅可以迅速的把多年经验在很短的时间内教给一批自己的学生。
五、蒸馏的原理和方法
理解了蒸馏的目的,就要知道如何进行蒸馏。蒸馏的本质其实就是"知识迁移",本质就是通过老师模型对学生模型进行训练。传统的大模型使用的是硬标签来进行训练,即训练的是给定的正确的预测类别(人工标注)。而蒸馏则是通过软标签进行训练,即由传统大模型生成的概率结果进行训练。明白了蒸馏的原理,就可以进一步推导出知识蒸馏的方法:
- 训练一个老师大模型并提供相关的数据即软标签
- 利用软标签训练目标模型,优化蒸馏损失和监督损失
- 目标模型反复进行训练并逐渐逼近老师大模型的水平即知识转移
上面的一些技术细节并未展开,有兴趣的可以进一步的进行分析。比如蒸馏损失函数是什么?它有什么作用等等。在蒸馏过程中还有一个重要的关键因素即温度参数,它负责控制大模型的输出概率分布的平滑度。通过对其调节,可以让目标模型可以更好的学习老师大模型。
另外,除了上面提到的知识蒸馏还有一些其它的方式可以优化蒸馏过程包括:
- 数据增强即提供额外的训练数据进行训练,可以让目标模型泛化能力更强
- 中间层蒸馏,不仅学习老师大模型的结果还要学习其中间层的"思考",提升目标模型的性能
- 多老师蒸馏,多个老师大模型的训练数据训练,目标模型更强更健壮
另外随着技术的发展,还出现了自蒸馏和硬件协同蒸馏等技术。并且在未来可能还会有更多的相关技术的涌现。这都需要大家及时的跟进了解相关的技术。
五、蒸馏应用的场景
随着大模型应用的场景越来越广泛,在某些特定场景下虽然也想使用大模型,但受限于硬件资源和计算规模,都无法达到大模型的最低需求。这就是需要使用蒸馏技术进行处理的时候了。常见有移动设备、边缘计算以及特定设备等。
可以说,蒸馏技术减小了模型的大小,提高了推理速度(时间成本),降低了计算成本和网络通信及数据存储成本,未来有着更广泛的应用场景。
六、总结
在理解蒸馏技术时,一定要和大模型的微调以及其它一些大模型中的技术区别开来。其实重点就是看目的和应用场景,蒸馏是为了产生新的模型而其它技术是为了提高模型自身。只要把握了这一点,就不会犯迷糊。