生成式AI与大语言模型

模型蒸馏(model distillation)

/ MOD-ul dis-tih-LAY-shun /

模型蒸馏,是一种把又大又贵的模型,压缩成一个又小又省、表现却几乎一样好的模型的办法——办法是让小模型学着去模仿大模型。大模型是「老师」,小模型是「学生」:你给两者喂同样的输入,训练学生时,不只让它对上最终答案,更让它去模仿老师整套的回应模式。学生最终成了老师一个小巧的回声,跑起来又快又省得多。

它之所以比「直接从零训练一个小模型」更管用,道理微妙而相当优雅。老师的输出,携带的信息比一个干巴巴的「对或错」标签要多:看到一张狗的照片,老师可能说90%是狗、7%是狼、3%是猫——而这些「软」的相对分数,悄悄教给学生「狗更像狼、而非更像猫」。从这份更丰富的信号里学习,让一个小学生能以零头的体量,捕捉到大老师的许多微妙之处。一个蒸馏出来的模型,可以小到能在手机上运行。

不过要把它的天花板说清楚。学生无法超越老师的知识——它至多只能逼近,并且不可避免地会丢掉老师的一些边角情形与稀有本领。「几乎一样好」,通常意味着以一点真实但不大的质量损失,换来速度与成本上的巨大胜利。而从别人的模型里蒸馏,会引出它自己的问题,因为某些厂商的条款,禁止用其模型的输出去训练一个竞争对手。

一个需要一整机架服务器的庞大模型,答得慢、每次查询都很贵。一个团队把它蒸馏成一个体量只有二十分之一、能在单块芯片上跑的模型,作答只需零头的时间。在日常问题上,小模型与它不相上下;可在那些稀有、刁钻的问题上,它会略逊一筹。

小学生模仿大老师——便宜得多,几乎一样好。

蒸馏出来的模型能逼近老师、却永远无法超越它,并且会悄悄丢掉一些稀有的或边角的本领。「几乎一样好」是一桩货真价实的交易,而非一次免费的复制——而从竞争对手模型的输出里蒸馏,可能违反那家厂商的使用条款。

又称
knowledge distillationteacher-student training模型蒸馏模型蒸餾知识蒸馏