DeepMind发布Matryoshka量化技术,通过嵌套表示实现多精度LLM的低比特深度学习,提升效率和精度。
原文标题:DeepMind发布Matryoshka(套娃)量化:利用嵌套表示实现多精度LLM的低比特深度学习
原文作者:数据派THU
冷月清谈:
怜星夜思:
2、Matryoshka量化中提到的“协同蒸馏”具体是如何实现的?高精度模型是如何指导低精度模型训练的?能否提供一些更详细的技术细节?
3、文章中提到Matryoshka量化可以提取中间精度模型(如int6、int3),这种灵活性在实际应用中有什么价值?是否可以通过调整精度来适应不同的硬件平台或任务需求?
原文内容
来源:Deephub Imba本文约4000字,建议阅读5分钟本文将介绍 Google DeepMind 提出的 Matryoshka 量化技术,该技术通过从单个大型语言模型 (LLM) 实现多精度模型部署,从而革新深度学习。
Matryoshka 原理
-
嵌套表示: 较高比特的整数(例如 int8)自然包含较低比特的表示(例如 int4、int2)。这种固有的嵌套是 MatQuant 的基础。
-
统一模型训练:MatQuant 并非为每个精度训练单独的模型,而是训练一个统一的模型,其中 int8 权重的最高有效位 (MSB) 可以直接提取以获得 int4 或 int2 模型。
-
无缝精度转换: 这种嵌套结构允许在无需额外训练的情况下提取中间精度(如 int6 或 int3),从而根据硬件能力和资源可用性提供灵活的精度选项。
LLM 中的 Matryoshka 量化:原理与优势
什么是 Matryoshka 量化?
-
嵌套权重切片:模型的权重以全精度 int8 格式存储。通过提取最高有效位,可以直接从同一模型导出较低精度的版本(int4、int2)。
-
联合优化:训练过程同时最小化跨多个精度的量化损失。这通过结合复合损失函数来实现,该函数考虑了 int8、int4 和 int2 级别的误差,并通过重新加权因子进行平衡。
-
协同蒸馏:在训练期间,高精度 (int8) 输出作为低精度输出的指导 "教师"。这种协同蒸馏通过确保低精度模型继承高精度表示的鲁棒性来增强其保真度。
在大型语言模型 (LLM) 中的应用
-
资源效率:使用 MatQuant 训练的 LLM 可以在 int8、int4 和 int2 精度之间动态切换。这种灵活性允许在高性能服务器和资源受限的设备上进行高效推理。
-
提高的低精度性能:低精度模型(尤其是 int2)在独立训练时通常会遭受显著的精度下降。与标准方法相比,MatQuant 的联合优化和协同蒸馏过程已显示出可将 int2 精度提高高达 10% 的潜力,从而确保即使是最节省资源的模型版本也能保持高性能。
-
插值和灵活性:除了目标精度之外,MatQuant 还可以通过简单的切片提取中间模型(例如 int6 或 int3),从而在精度和计算成本之间实现灵活的权衡。
-
逐层精度定制:MatQuant 支持混合精度策略,其中 LLM 的不同层可以以不同的精度运行。这种逐层混合搭配方法允许关键层(例如处理注意力机制的层)以更高的精度运行,而不太关键的层可以使用较低的精度,从而优化整体性能,同时尽量减少精度损失。
MatQuant 如何改进 LLM
实验结果与性能分析
性能指标
-
精度提升:与传统的量化方法相比,MatQuant 显著提高了 int2 的性能,在下游任务上的精度提高了高达 10%。
-
模型稳定性:当应用于前馈网络 (FFN) 和注意力参数时,MatQuant 可增强模型稳定性,尤其是在低精度状态下。
-
精度灵活性:除了提供 int8、int4 和 int2 模型之外,MatQuant 还允许创建中间精度模型(如 int6 和 int3),而无需额外的训练,从而在精度和计算成本之间实现灵活的权衡。
MatQuant 对模型量化的影响
-
该图展示了 OmniQuant 如何将多个量化级别(2 比特、4 比特和 8 比特)组合成一个统一的损失函数 LMatQuant\mathcal{L}_{\text{MatQuant}}。
-
每个比特宽度处理模型权重的特定部分,并且它们的组合输出被聚合以优化整体量化性能。
-
折线图显示了基于每个 FFN(前馈网络)参数的有效比特数的不同量化技术下 Gemma-2 9B 的任务性能。
-
MatQuant(蓝色三角形)优于其他方法(基线、MinMax 和切片 int8),即使在低比特宽度下也能保持性能。
-
MatQuant-Interp.(蓝色虚线)显示了插值如何进一步提高性能。
-
右上角 (int8):显示了基线(红色)和 MatQuant(蓝色)的量化权重分布。MatQuant 提供了更平衡的分布。
-
左下角 (int4):MatQuant(蓝色)比基线(红色)在量化桶中实现了更均匀的分布。
-
右下角 (int2):尽管比特范围有限,但 MatQuant(蓝色)实现了对量化桶的更好利用,从而提高了效率。
Gemma-2 9B 在不同量化方法下的任务性能
-
X 轴(每个 FFN 参数的有效比特数):表示用于量化的比特宽度。较低的比特表示更积极的压缩。
-
Y 轴(任务平均值):衡量模型在任务基准套件上的性能。较高的分数表示更好的性能。
-
MatQuant(蓝色三角形):即使在低比特宽度下也能表现良好,并在较高比特宽度下接近基线饱和。
-
Mix'n'Match(蓝色星形):由于混合量化策略,在中间范围比特宽度(3-5 比特)下显示出比 MatQuant 稍好的性能。
-
MatQuant-Interp.(蓝色圆形):提供与 MatQuant 相似的一致性能,但在比特范围内略微平滑,受益于插值技术。
-
基线(红色三角形):在 2 比特时表现出最低的性能,并在 8 比特时与其他方法达到同等水平。
-
低比特效率:MatQuant 在 2 比特时显著优于基线,实现了近 10 个点的改进。
-
平台效应:所有方法在超过 4 个有效比特时都在任务平均值上收敛于 75 左右,表明使用更多比特的回报递减。
-
Mix'n'Match 优势:在中间范围比特宽度上提供比 MatQuant 略微的优势,表明其在平衡压缩和性能方面的优势。
带有 OmniQuant 结果的 MatQuant
-
Gemma-2 (2B) 上的准确度提高了 +4.37%
-
Gemma-2 (9B) 上的准确度提高了 +8.01%
-
Mistral 7B 上的准确度提高了 +6.35%
带有 QAT 结果的 MatQuant
-
Gemma-2 (2B) 上 +4.69% 的准确度增益 (int2)
-
Gemma-2 (9B) 上 +6.30% 的增益
-
Mistral 7B 上 +6.34% 的增益
实际用例与应用
-
挑战:计算能力和内存有限。
-
解决方案:部署从单个 MatQuant 训练的 LLM 派生的低精度模型(int2 或 int4),从而减少内存使用量和能耗。
-
示例:智能相机、可穿戴设备和自主传感器受益于更快的推理和更低的功耗。
-
挑战:大规模数据中心中的高吞吐量需求。
-
解决方案:使用来自 MatQuant 的 int8 精度模型可确保最大程度的准确性,同时优化资源利用率。
-
示例:由 LLM 提供支持的虚拟助手和客户服务聊天机器人可以利用这些模型来高效地提供高质量的响应。
-
挑战:实时应用程序中资源可用性的波动。
-
解决方案:MatQuant 允许模型在精度之间动态切换 - 在资源充足时使用更高的精度,在资源不足时使用更低的精度。
-
示例:流媒体服务和实时分析平台可以即时调整模型精度以保持最佳性能。
总结
论文
https://arxiv.org/abs/2502.06786