编程与 AI11 分钟阅读更新于 2026-07-31

模型压缩、量化和蒸馏是什么:让大模型更容易运行起来

理解模型压缩、量化和知识蒸馏的原理差异,掌握它们对模型大小、显存、推理速度和效果的影响,以及实际部署时的选择方法。

相关工具

为什么需要让模型变小

大语言模型的能力越强,往往需要越多参数、显存和计算资源。训练完成后,模型还要面对一个实际问题:怎样把它放进有限的服务器、工作站或终端设备中,并在可以接受的时间内给出回答。模型压缩、量化和蒸馏,都是围绕这个问题发展出来的方法。

这些方法的共同目标是降低部署成本,但做法并不一样。模型压缩通常改变网络结构或减少参数,量化改变参数的数值表示精度,知识蒸馏则让一个较小的学生模型学习较大教师模型的输出和能力。把三者混在一起,会很难判断为什么效果发生变化。

优化的重点也不是把模型做得越小越好,而是在质量、速度、显存和成本之间找到能长期使用的平衡。一个压缩后无法完成核心任务的模型,即使占用很小,也不能算成功。

大模型压缩、量化和知识蒸馏三种方法的原理与代价对比图
压缩、量化和蒸馏的区别

模型压缩改变结构或参数规模,量化降低数值表示精度,知识蒸馏通过教师模型把能力迁移给学生模型。

模型压缩:减少需要计算的内容

模型压缩是一个比较宽泛的概念,通常指通过改变结构、删除冗余参数或减少计算路径,让模型用更少的资源完成相近的任务。常见思路包括剪枝、低秩分解、减少层数或宽度,以及针对特定硬件设计更高效的结构。

剪枝可以理解为删掉一部分影响较小的连接或单元。结构化剪枝会移除整个通道、层或模块,更容易被推理硬件利用;非结构化剪枝可以保留更细的参数选择,但如果硬件和软件不支持稀疏计算,参数变少不一定能带来同等速度提升。

低秩分解则尝试用多个更小的矩阵近似原来的大矩阵,减少存储和乘法计算。它通常需要在模型结构和近似误差之间做取舍。压缩后要重新测试不同长度、不同任务和不同输入分布,避免只在单一示例上看起来有效。

量化:用更少的位数表示参数

量化主要处理参数和激活值的数值表示。原始模型可能使用 FP32 或 FP16 等浮点格式,量化则把它们转换成 INT8、INT4 等更低精度的表示,用更少的位数保存数值。这样可以减少模型文件大小和显存占用,在硬件支持的情况下也可能提高推理速度。

量化并不是简单地把小数位删掉。它需要确定缩放范围、零点和不同层的处理方式,避免少量极端值把整个表示范围拉得过大。不同层对精度损失的敏感程度也不同,实际方案可能对部分层保留更高精度,对其他层使用更激进的量化。

常见做法可以按发生时机分为训练后量化和量化感知训练。训练后量化操作相对简单,适合快速尝试;量化感知训练在训练过程中模拟量化误差,通常更有机会保留效果,但需要更多训练资源和准备工作。

大语言模型量化精度、显存、速度和效果之间的权衡图
量化的精度与资源权衡

从 FP32、FP16/BF16 到 INT8、INT4,数值位宽降低后存储和显存减少、速度可能提升,但精度风险也会上升。

知识蒸馏:让小模型学习大模型的经验

知识蒸馏通常包含教师模型和学生模型。教师模型规模更大或能力更强,它不只是给出最终标签,还可以提供软标签、概率分布、中间表示或生成的示例。学生模型通过学习这些信息,尝试在更小的规模下保留教师模型的一部分能力。

如果只用硬标签训练,学生模型只知道正确答案是什么,却看不到其他候选答案之间的相对关系。教师模型输出的概率分布包含更多信息,例如哪些选项相近、哪些错误容易混淆。对于分类和语言建模任务,这些软信息可能帮助学生学到更平滑的决策边界。

在大语言模型场景中,蒸馏也可以使用教师生成的问答、推理示例、摘要或工具调用轨迹。学生模型能否学好,取决于教师质量、示例覆盖、蒸馏目标和任务匹配。教师回答如果存在幻觉、偏见或格式问题,学生也可能把这些问题一起学过去。

三种方法解决的不是同一个问题

如果主要问题是模型文件太大、结构中存在明显冗余,可以研究剪枝、低秩分解等压缩方法;如果模型已经适合当前任务,但显存或存储压力太大,可以先尝试量化;如果希望在小模型上复现大模型的部分行为,则可以考虑蒸馏。实际应用中也可能把几种方法组合使用。

组合使用时要注意误差会叠加。先做蒸馏再量化,或者先压缩结构再量化,可能得到不同结果。每完成一个步骤,都应该在固定评测集上比较,而不是最后只看一次。这样才能知道是哪一种变化导致了质量下降。

还要区分模型体积变小和推理真的变快。参数文件减少可以节省存储,但如果推理框架无法利用新的结构或数据格式,延迟可能没有明显变化。部署时必须在目标硬件和真实并发条件下测量,而不能只根据文件大小推断体验。

压缩后最容易损失哪些能力

精度变化通常不是均匀发生的。简单问答可能几乎不受影响,长上下文、数学推理、代码、结构化输出或专业术语任务却可能明显下降。低精度表示对极端值、稀有模式和复杂组合关系更敏感,模型在少见输入上的表现尤其值得检查。

生成任务还要关注输出稳定性。压缩后的模型可能更容易重复、漏掉条件、破坏 JSON 格式,或者在较长回答中逐渐偏离主题。对于知识库问答,除了答案分数,还要看引用是否准确、资料不足时能否拒答。

蒸馏模型还可能出现能力范围变窄。它在教师示例覆盖的任务上表现不错,但遇到没有见过的表达或更复杂的组合要求时,泛化能力未必和教师相同。因此蒸馏数据不能只挑选教师最漂亮的回答,还要包含边界样本和失败样本。

如何选择合适的量化精度

精度选择应该从设备和任务目标开始。FP16 或 BF16 通常是比较稳妥的起点,能在较多场景下减少资源占用;INT8 往往进一步降低显存并提高吞吐,适合已经验证过的生产任务;INT4 或更低精度可以满足极端资源约束,但更需要用代表性样本检查效果。

不要只用通用问答做验证。至少要覆盖实际业务中的核心任务、长文本、结构化输出和容易出错的边界情况。对于代码、数字、专业术语和多轮对话,精度变化可能比普通闲聊更明显。

还要测量硬件是否真正支持目标格式。有些设备对 INT8 有良好加速,有些设备对低比特计算支持有限;如果量化格式需要额外转换,加载和推理反而可能变慢。最终判断应以目标环境中的显存、延迟、吞吐和质量为准。

一套稳妥的压缩部署流程

第一步,明确设备、并发、延迟和质量底线。第二步,记录原始模型的基线,包括效果、显存、吞吐、完整响应时间和失败样本。第三步,选择一种压缩、量化或蒸馏方案,先在小规模环境中测试。

第四步,在代表性评测集上比较准确性、格式通过率、事实一致性、安全性、显存和速度。第五步,如果结果可接受,再做灰度部署,观察线上错误率、用户反馈和资源使用。第六步,保留原始版本和回滚方案,避免优化失败时只能重新下载或重新训练。

这个流程的关键是每一步都保留可比较的基线。只看‘模型更小了’是不够的,还要回答‘核心任务有没有变差’‘节省的资源是否转化为速度’以及‘新增的运维复杂度是否值得’。

大语言模型压缩量化蒸馏后进行评测和灰度部署的决策流程图
大模型压缩部署决策流程

从设备与延迟目标出发,经过方案选择、代表性评测、质量与资源比较,再进行灰度部署和线上监控。

别把压缩当成免费的性能提升

模型压缩、量化和蒸馏都在用某种方式交换资源和效果。模型压缩可能牺牲部分表达能力,量化可能引入数值误差,蒸馏则可能让学生模型丢失教师的一些长尾能力。它们的价值在于让模型在给定设备和预算下变得可用,而不是让模型毫无代价地变强。

最好的方案往往不是最激进的方案,而是刚好满足任务要求的方案。先确认业务不能接受哪些错误,再选择能够达到底线的压缩程度。对于高风险任务,可以保留更高精度或更大模型,把轻量模型用于初筛、摘要和低风险环节。

当你能同时看到质量、显存、速度、成本和回滚条件,模型优化才真正进入工程阶段。文件变小只是开始,稳定地完成工作才是最终目标。

常见问题

模型压缩、量化和蒸馏有什么最简单的区别?

压缩通常减少模型结构或参数,量化降低参数的数值表示精度,蒸馏让较小的学生模型学习较大教师模型的能力。三者也可以组合使用。

量化后模型一定会变差吗?

量化可能带来精度损失,但影响取决于模型、量化方法、精度级别和任务。需要在真实任务和目标硬件上测试,不能只凭理论判断。

本地部署优先尝试哪种方法?

如果模型能力已经满足要求,通常可以先尝试硬件支持良好的量化;如果模型结构和资源压力更复杂,再考虑剪枝、低秩分解或蒸馏,并配合完整评测。