内容提要
本文介绍了三种压缩大型语言模型的技术:量化、剪枝和知识蒸馏,它们能在不显著降低智能水平的前提下减小模型规模。这些技术可叠加使用,但各有取舍,如量化可能损失细微理解力,剪枝影响复杂逻辑,蒸馏可能缺乏原创性。选择哪种技术取决于模型的具体应用目标。
延伸解读
量化:精度与存储的权衡
量化通过降低每个权重的存储精度来减小模型体积,例如从16位降到4位。虽然会损失部分细节,但8位量化通常对智能影响不大,而4位或更低可能导致明显性能下降。选择量化级别需根据应用对精度的要求,在存储和智能之间找到平衡。
剪枝:删除不重要的权重
剪枝基于权重大小或其影响程度删除不重要的权重。简单按大小剪枝可能忽略权重所在路径的重要性,而基于输入监控的方法更精准。剪枝方式有置零和删除结构两种,前者对模型损伤小但计算量不减,后者能真正缩小矩阵但可能误删重要权重。
知识蒸馏:学习教师模型的行为
知识蒸馏通过训练一个较小的学生模型来模仿大教师模型的输出分布,而不仅仅是正确答案。这使学生模型能学到更多细微的决策逻辑,但可能缺乏原创性,面对全新问题时表现不佳。蒸馏需要大量计算资源,但最终得到的小模型可在普通硬件上运行。
技术叠加:组合使用效果更佳
量化、剪枝和蒸馏可以叠加使用,例如先蒸馏再剪枝最后量化,以在保持智能的同时大幅减小模型。但每种技术都会带来一定智能损失,叠加可能累积影响。选择何种组合取决于模型的具体用途和对性能的要求。
Q&A
有哪些方法可以在不显著降低智能水平的前提下缩小语言模型?
主要有三种方法:量化、剪枝和知识蒸馏。量化通过减少每个权重的存储位数来压缩模型;剪枝通过删除不重要的权重或结构来减小模型;知识蒸馏则是训练一个较小的学生模型来模仿大模型的行为。这些方法可以叠加使用。
量化是如何工作的?
量化通过降低每个权重的精度来减少存储空间。具体步骤包括:将一组相邻的权重映射到一个较小的数值范围,然后按步长取整,最后存储整数和每个块的缩放因子。例如,将32位浮点数转换为4位整数,可以大幅减少存储需求,但会引入一定误差。
剪枝有哪些不同的方法?
剪枝有两种主要方法:一是将不重要的权重设置为零,这不会改变矩阵结构,但GPU仍需计算这些零;二是移除整个结构,如神经元、注意力头或层,这能真正缩小矩阵,但可能误删重要权重,对模型伤害更大。
知识蒸馏是如何训练小模型的?
知识蒸馏中,大模型作为教师,小模型作为学生。学生模型使用与教师相同的输入,但训练目标是模仿教师的输出概率分布,而不仅仅是正确答案。这样学生能学到更多细微的关联,从而更快地学会类似的行为。
量化、剪枝和知识蒸馏分别对模型智能有什么影响?
量化会降低模型对细微差别的理解,可能忘记特定事实或语气不自然,但8位量化影响很小,4位或更低影响较大;剪枝主要影响复杂多步逻辑,但只剪除无关路径影响不大,过度剪枝会使模型变笨;知识蒸馏可能使小模型缺乏原创性,面对全新逻辑问题可能出错。
为什么需要缩小语言模型?
因为大型语言模型(如70B参数)需要高达140GB的存储,而消费级显卡内存通常只有24GB或48GB,差距很大。购买能运行大模型的硬件成本高昂,且不适合消费级设备,因此需要缩小模型以适应现有硬件。
量化、剪枝和知识蒸馏可以组合使用吗?
可以。例如,模型可以先由实验室进行蒸馏,再由研究团队剪枝,最后用户在使用前进行量化。这种叠加使用可以进一步减小模型,甚至让高端模型在普通消费硬件上运行。