DeepMind发布Matryoshka(套娃)量化:利用嵌套表示实现多精度LLM的低比特深度学习
本文将介绍 Google DeepMind 提出的 Matryoshka 量化技术,该技术通过从单个大型语言模型 (LLM) 实现多精度模型部署,从而革新深度学习。我们将深入研究这项创新技术如何提高 LLM 的效率和准确性。
随着深度学习模型在规模和复杂度上持续增长,效率和灵活性变得至关重要。量化作为一种成熟的技术,通过降低权重和激活的比特精度来减少模型大小和推理时间。传统的量化方法通常需要为每个精度级别训练单独的模型,导致资源效率低下和维护成本增加。Matryoshka 量化 (MatQuant) 通过训练一个能够满足多个精度要求的统一模型来克服这些挑战,从而简化部署和模型管理流程。
Matryoshka 原理
术语 “Matryoshka” 源自俄罗斯套娃,其核心思想是一个对象可以嵌套在另一个对象内部。在量化上下文中,该原理体现为:
- 嵌套表示: 较高比特的整数(例如 int8)自然包含较低比特的表示(例如 int4、int2)。这种固有的嵌套是 MatQuant 的基础。
- 统一模型训练: MatQuant 并非为每个精度训练单独的模型,而是训练一个统一的模型,其中 int8 权重的最高有效位 (MSB) 可以直接提取以获得 int4 或 int2 模型。
- 无缝精度转换: 这种嵌套结构允许在无需额外训练的情况下提取中间精度(如 int6 或 int3),从而根据硬件能力和资源可用性提供灵活的精度选项。
LLM 中的 Matryoshka 量化:原理与优势
什么是 Matryoshka 量化?
Matryoshka 量化 (MatQuant) 是一种多尺度量化训练方法,旨在跨不同的整数精度优化单个神经网络。与将每个精度级别视为独立的优化问题不同,MatQuant 利用了整数固有的嵌套结构。具体实现方式如下:
- 嵌套权重切片: 模型的权重以全精度 int8 格式存储。通过提取最高有效位,可以直接从同一模型导出较低精度的版本(int4、int2)。
- 联合优化: 训练过程同时最小化跨多个精度的量化损失。这通过结合复合损失函数来实现,该函数考虑了 int8、int4 和 int2 级别的误差,并通过重新加权因子进行平衡。
- 协同蒸馏: 在训练期间,高精度 (int8) 输出作为低精度输出的指导 “教师”。这种协同蒸馏通过确保低精度模型继承高精度表示的鲁棒性来增强其保真度。
在大型语言模型 (LLM) 中的应用
大型语言模型(如自然语言处理 (NLP) 中使用的模型)对计算资源的需求尤为显著。当应用于 LLM 时,MatQuant 具有以下优势:
- 资源效率: 使用 MatQuant 训练的 LLM 可以在 int8、int4 和 int2 精度之间动态切换。这种灵活性允许在高性能服务器和资源受限的设备上进行高效推理。
- 提高的低精度性能: 低精度模型(尤其是 int2)在独立训练时通常会遭受显著的精度下降。与标准方法相比,MatQuant 的联合优化和协同蒸馏过程已显示出可将 int2 精度提高高达 10% 的潜力,从而确保即使是最节省资源的模型版本也能保持高性能。
- 插值和灵活性: 除了目标精度之外,MatQuant 还可以通过简单的切片提取中间模型(例如 int6 或 int3),从而在精度和计算成本之间实现灵活的权衡。
- 逐层精度定制: MatQuant 支持混合精度策略,其中 LLM 的不同层可以以不同的精度运行。这种逐层混合搭配方法允许关键层(例如处理注意力机制的层)以更高的精度运行,而不太关键的层可以使用较低的精度,从而优化整体性能,同时尽量减少精度损失。
MatQuant 如何改进 LLM
增强的低精度准确性:
通过联合优化多个精度并采用协同蒸馏,MatQuant 有助于减轻在低精度模型中常见的精度下降问题。这种改进对于 int2 模型尤其重要,因为它们可以从训练期间学习到的共享知识和精细的权重分布中受益。
可扩展性和灵活性:
MatQuant 简化了 LLM 的部署流程。无需为每个精度维护单独的模型,使用 MatQuant 训练的单个模型可以动态调整其精度。这种适应性对于硬件约束或计算负载随时间变化的环境至关重要。
优化的推理和能源效率:
通过减少操作的位宽,经过 MatQuant 训练的模型需要更少的计算资源,从而缩短了推理时间并降低了能耗。这种效率使其非常适合基于云的服务和边缘设备,在这些设备中,功率和内存资源受到限制。
跨各种任务的鲁棒性:
实验结果表明,经过 MatQuant 训练的模型在各种下游任务上表现出强大的性能。无论是语言理解还是生成,MatQuant 提供的多精度功能都确保 LLM 在各种应用中保持高水平的性能。
实验结果与性能分析
MatQuant 在 Gemma-2(2B 和 9B 参数) 和 Mistral 7B 等模型上进行了全面的评估,并与量化感知训练 (QAT) 和 OmniQuant 等传统量化方法进行了比较。
性能指标
- 精度提升: 与传统的量化方法相比,MatQuant 显著提高了 int2 的性能,在下游任务上的精度提高了高达 10%。
- 模型稳定性: 当应用于前馈网络 (FFN) 和注意力参数时,MatQuant 可增强模型稳定性,尤其是在低精度状态下。
- 精度灵活性: 除了提供 int8、int4 和 int2 模型之外,MatQuant 还允许创建中间精度模型(如 int6 和 int3),而无需额外的训练,从而在精度和计算成本之间实现灵活的权衡。
MatQuant 对模型量化的影响

Gemma-2 9B 上的多比特量化框架和性能
OmniQuant 多比特量化框架:
- 该图展示了 OmniQuant 如何将多个量化级别(2 比特、4 比特和 8 比特)组合成一个统一的损失函数 LMatQuant\mathcal{L}_{\text{MatQuant}}。
- 每个比特宽度处理模型权重的特定部分,并且它们的组合输出被聚合以优化整体量化性能。
Gemma-2 9B 上的任务平均性能:
- 折线图显示了基于每个 FFN(前馈网络)参数的有效比特数的不同量化技术下 Gemma-2 9B 的任务性能。
- MatQuant(蓝色三角形)优于其他方法(基线、MinMax 和切片 int8),即使在低比特宽度下也能保持性能。
- MatQuant-Interp.(蓝色虚线)显示了插值如何进一步提高性能。
不同比特宽度(int8、int4、int2)的权重分布:
- 右上角 (int8): 显示了基线(红色)和 MatQuant(蓝色)的量化权重分布。MatQuant 提供了更平衡的分布。
- 左下角 (int4): MatQuant(蓝色)比基线(红色)在量化桶中实现了更均匀的分布。
- 右下角 (int2): 尽管比特范围有限,但 MatQuant(蓝色)实现了对量化桶的更好利用,从而提高了效率。
该图突出显示了 OmniQuant 如何提高 Gemma-2 9B 模型在多个比特宽度上的量化效率和性能。
Gemma-2 9B 在不同量化方法下的任务性能

任务平均值与每个 FFN 参数的有效比特数的比较
该图评估了 Gemma-2 9B 在不同量化技术下的性能,并根据每个 FFN(前馈网络)参数的有效比特数绘制。
- X 轴(每个 FFN 参数的有效比特数): 表示用于量化的比特宽度。较低的比特表示更积极的压缩。
- Y 轴(任务平均值): 衡量模型在任务基准套件上的性能。较高的分数表示更好的性能。
量化方法:
- MatQuant(蓝色三角形): 即使在低比特宽度下也能表现良好,并在较高比特宽度下接近基线饱和。
- Mix’n’Match(蓝色星形): 由于混合量化策略,在中间范围比特宽度(3-5 比特)下显示出比 MatQuant 稍好的性能。
- MatQuant-Interp.(蓝色圆形): 提供与 MatQuant 相似的一致性能,但在比特范围内略微平滑,受益于插值技术。
- 基线(红色三角形): 在 2 比特时表现出最低的性能,并在 8 比特时与其他方法达到同等水平。
主要见解:
- 低比特效率: MatQuant 在 2 比特时显著优于基线,实现了近 10 个点的改进。
- 平台效应: 所有方法在超过 4 个有效比特时都在任务平均值上收敛于 75 左右,表明使用更多比特的回报递减。
- Mix’n’Match 优势: 在中间范围比特宽度上提供比 MatQuant 略微的优势,表明其在平衡压缩和性能方面的优势。
该图突出显示了 MatQuant 的效率和 Mix’n’Match 在 Gemma-2 9B 中间范围比特量化方面的适应性。
带有 OmniQuant 结果的 MatQuant

使用基于 OmniQuant 的训练比较 Gemma-2 和 Mistral 7B 模型的准确性和对数困惑度指标。
将 MatQuant 与 Gemma-2 (2B, 9B) 和 Mistral 7B 模型上的标准 OmniQuant 进行比较。
强调 MatQuant 优于基线方法,尤其是在 int2 精度方面,具有:
- Gemma-2 (2B) 上的准确度提高了 +4.37%
- Gemma-2 (9B) 上的准确度提高了 +8.01%
- Mistral 7B 上的准确度提高了 +6.35%
证明了 MatQuant 生成的插值模型(int6、int3)与显式训练的模型具有竞争力,突显了 MatQuant 在多尺度表示方面的效率。
带有 QAT 结果的 MatQuant

显示了相同模型但在 QAT 训练下的结果,表明 MatQuant 始终提高低精度性能:
- Gemma-2 (2B) 上 +4.69% 的准确度增益 (int2)
- Gemma-2 (9B) 上 +6.30% 的增益
- Mistral 7B 上 +6.34% 的增益
该表强调 经过 MatQuant 训练的 int2 模型甚至优于一些使用传统 QAT 训练的 int4 模型,突显了嵌套训练方法的有效性。
实际用例与应用
MatQuant 的灵活性和效率使其适用于各种场景:
边缘计算和物联网设备
- 挑战: 计算能力和内存有限。
- 解决方案: 部署从单个 MatQuant 训练的 LLM 派生的低精度模型(int2 或 int4),从而减少内存使用量和能耗。
- 示例: 智能相机、可穿戴设备和自主传感器受益于更快的推理和更低的功耗。
基于云的推理服务
- 挑战: 大规模数据中心中的高吞吐量需求。
- 解决方案: 使用来自 MatQuant 的 int8 精度模型可确保最大程度的准确性,同时优化资源利用率。
- 示例: 由 LLM 提供支持的虚拟助手和客户服务聊天机器人可以利用这些模型来高效地提供高质量的响应。
动态资源分配
- 挑战: 实时应用程序中资源可用性的波动。
- 解决方案: MatQuant 允许模型在精度之间动态切换 - 在资源充足时使用更高的精度,在资源不足时使用更低的精度。
- 示例: 流媒体服务和实时分析平台可以即时调整模型精度以保持最佳性能。
总结
Matryoshka 量化 是一种变革性的模型量化方法,它提供了一种统一的解决方案,可以在单个 LLM 中支持多个精度。通过利用整数表示固有的嵌套结构,MatQuant 不仅提高了低精度模型(尤其是 int2)的性能,还提供了适应各种硬件约束和动态资源条件的灵活性。
论文
https://avoid.overfit.cn/post/081ecf0860fa4611bd18ed4e78ca9212
相关文章:
DeepMind发布Matryoshka(套娃)量化:利用嵌套表示实现多精度LLM的低比特深度学习
本文将介绍 Google DeepMind 提出的 Matryoshka 量化技术,该技术通过从单个大型语言模型 (LLM) 实现多精度模型部署,从而革新深度学习。我们将深入研究这项创新技术如何提高 LLM 的效率和准确性。 随着深度学习模型在规模和复杂度上持续增长,…...
DeepSeek01-本地部署大模型
一、ollama简介: 什么是 Ollama? Ollama 是一个用于本地部署和管理大模型的工具。它提供了一个简单的命令行界面, 使得用户可以轻松地下载、运行和管理各种大模型。Ollama 支持多种模型格式, 并且可以与现有的深度学习框架&#x…...
Java-数据结构-(HashMap HashSet)
一、Tree和Hash的区别 在上一篇文章中,我们讲到了"TreeMap"和"TreeSet",但当我们刷题的时候却会发现,实际应用Map和Set时,却常常都只会用"HashMap"和"HashSet",这是为什么呢…...
举个栗子:浅显易懂的理解Transformer 模型
用一个简单的比喻来解释 Transformer 模型,让你轻松理解它的工作原理。 Transformer 的比喻:一个高效的翻译团队 想象一下,Transformer 模型就像一个高效的翻译团队,它的任务是把一段英文翻译成中文。这个团队由两部分组成&#…...
el-table 结合 slot 具名插槽遍历封装列表模板
基础效果 要实现以上效果,可对 el-table 进行封装,将列配置视为数组,循环 el-table-column 标签模板组件 <div class"tableSlot"><el-table :data"dataList" border><el-table-columnv-for"(item, …...
游戏引擎学习第108天
仓库:https://gitee.com/mrxiao_com/2d_game_2 看一下我们现在的进展 今天的工作重点是处理游戏中的Z轴问题,特别是如何在不同的层级之间进行移动,并确保Z轴的处理方式与真实世界中的透视效果一致。当前,游戏中的Z轴运动存在问题࿰…...
遵循规则:利用大语言模型进行视频异常检测的推理
文章目录 速览摘要01 引言02 相关工作视频异常检测大语言模型 03 归纳3.1 视觉感知3.2 规则生成Normal and Anomaly (正常与异常)Abstract and Concrete (抽象与具体)Human and Environment (人类与环境) 3…...
网页制作01-html,css,javascript初认识のhtml的基本标记
一、 Html简介 英文全称是 hyper text markup language,超文本标记语言,是全球广域网上描述网页内容和外观的标准. Html作为一款标记语言,本身不能显示在浏览器中.标记语言经过浏览器的解释和编译,才能正确地反映html标记语言的内容. 1.html 的基本标记 1)头部标…...
vue 判断字符串开头是http或者https
在 Vue 中判断字符串是否以 http 或 https 开头,可以通过以下步骤实现: 方法一:使用 startsWith() 方法 // 在 Vue 组件的方法或计算属性中 isExternalLink(url) {return url?.startsWith(http://) || url?.startsWith(https://); }方法二…...
linux常用命令大全(包括抓包、网络检测、路由等,做项目一点点总结而来!)
文章目录 常用命令**apt相关****ls**:**cd****cp****ls -l | grep ssh**:会列出当前目录中包含 “ssh” 的文件或目录的详细信息。**系统资源**linux路由相关抓包工具和命令tcpdumpwiresharktshark iperf 常用命令 通过上下方向键 ↑ ↓ 来调取过往执行过…...
HarmonyOS组件之Tabs
Tabs 1.1概念 Tabs 视图切换容器,通过相适应的页签进行视图页面的切换的容器组件每一个页签对应一个内容视图Tabs拥有一种唯一的子集元素TabContent 1.2子组件 不支持自定义组件为子组件,仅可包含子组件TabContent,以及渲染控制类型 if/e…...
Linux学习笔记之虚拟地址空间
1.示例引入 运行如下代码那么运行结果如下图。 #include<stdio.h> #include<unistd.h>int main() {pid_t id fork();if(id-1){printf("创建进程错误!\n");return 1;}int size0;if(id0){//子进程while(1){printf("我是子进程,…...
前端高级面试题
以下是一些前端高级面试可能涉及到的内容: 一、前端工程化 如何构建一个适合大型团队的前端代码规范和构建流程? 答案: 代码规范方面: 使用ESLint结合Prettier来统一JavaScript和CSS(包括预处理器如Sass或Less)的语法风格。例如,规定变量命名采用驼峰命名法,函数名要有…...
MySQL判空函数--IFNULL函数的使用
文章目录 IFNULL函数介绍IFNULL函数的语法举例相关扩展 IFNULL函数介绍 在MySQL中,IFNULL函数用于判断给定的表达式是否为NULL。如果表达式为NULL,则IFNULL函数返回指定的替代值;如果表达式不为NULL,则返回表达式本身的值。 IFN…...
HTTP的“对话”逻辑:请求与响应如何构建数据桥梁?
一、前言 作为现代互联网通信的基石,HTTP协议定义了客户端与服务器之间的“对话规则”。每一次网页加载、API调用或文件传输的背后,都离不开精心构造的HTTP请求与响应。请求中封装了用户的意图——从请求方法、资源路径到提交的数据;响应则承…...
二〇二四年终总结
写在前面 简单总结一下告诉自己,曾经活着 不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树 原本应该 24 年年中的时候写 23 年年终的总结,但是一直拖着&…...
[论文阅读] SeeSR: Towards Semantics-Aware Real-World Image Super-Resolution
文章目录 一、前言二、主要贡献三、Introduction四、Methodology4.1 Motivation :4.2Framework Overview.** 一、前言 通信作者是香港理工大学 & OPPO研究所的张磊教授,也是图像超分ISR的一个大牛了。 论文如下 SeeSR: Towards Semantics-Aware Rea…...
全面了解HTTP(一)
全面了解HTTP(二)-CSDN博客 web及网络基础 使用HTTP协议访问web: HTTP: 网络基础TCP/IP 与HTTP关系密切的协议:IP,TCP,DNS 负责域名解析的DNS服务 各种协议与HTTP协议的关系 URI和URL 简单的HTTP协议 HTTP协议用于客户端和服…...
LM Studio笔记
一、什么是 LM Studio? LM Studio 是一款功能强大、易于使用的桌面应用程序,用于在本地机器上实验和评估大型语言模型(LLMs)。它允许用户轻松地比较不同的模型,并支持使用 NVIDIA/AMD GPU 加速计算。 功能集࿱…...
SoftwareCluster中如何配置VendorSignature
How to create VendorSignature...
Linux CentOS 7部署Vulhub靶场
漏洞复现环境: 1、Linux操作系统中通过Docker部署的Vulhub靶场: docker docker-compose 2、Nmap扫描工具 一、部署靶场 1、安装Docker 1、下载docker yum install docker 安装完成,如下图: 2、开启docker服务 [rootlocalhost…...
Golang GORM系列:GORM分页和排序
高效的数据检索和表示是应用程序开发的关键方面。GORM是健壮的Go对象关系映射库,它为开发人员提供了强大的工具来实现这一点。无论你是在构建动态web应用程序还是数据密集型服务,掌握GORM中的分页和排序使您能够提供无缝且高效的用户体验。本文我们将深入…...
【怎么使用Redis实现一个延时队列?】
怎么使用Redis实现一个延时队列? 详细说明Java代码示例解释注意事项使用Redis实现延时队列通常通过有序集合(Sorted Set)来实现,利用Redis的ZSET类型及其相关命令可以很方便地实现这一功能。 有序集合中的每个元素都有一个分数(score),我们可以利用这个分数来存储消息需…...
HarmonyNext上传用户相册图片到服务器
图片选择就不用说了,直接用 无须申请权限 。 上传图片,步骤和android对比稍微有点复杂,可能是为了安全性考虑,需要将图片先拷贝到缓存目录下面,然后再上传,当然你也可以转成Base64,然后和服务…...
宝塔docker 安装oracle11G
1、拉取镜像 sudo docker pull iatebes/oracle_11g #iatebes为用户名2、查看镜像 sudo docker images3、创建并运行容器 docker run -d --privileged --name oralce11g -p 1521:1521 iatebes/oracle_11g4、登录到容器 5、进入容器并修改system用户密码 docker exec -it orac…...
计算机视觉-OpenCV图像处理
1.Matplotlib数据可视化(绘制图像直方图、可视化矩阵) # Matplotlib 数据可视化(绘制图像直方图、可视化矩阵) # 本节主要讲解如何使用 Matplotlib 绘制图像直方图和可视化矩阵。 # 1. 绘制图像直方图 # 2. 可视化矩阵# 1. 绘制图…...
【论文笔记】Transformer^2: 自适应大型语言模型
Code repo: https://github.com/SakanaAI/self-adaptive-llms 摘要 自适应大型语言模型(LLMs)旨在解决传统微调方法的挑战,这些方法通常计算密集且难以处理多样化的任务。本文介绍了Transformer(Transformer-Squared)…...
【医学影像AI】50个眼科影像数据集(1)分类任务
【医学影像】50个眼科影像数据集(1)分类任务 【医学影像】50个眼科影像数据集(2)分割任务 【医学影像】50个眼科影像数据集(3)其它任务 【医学影像AI】50 个眼科影像数据集(1)分类任…...
2025年-G4--lc75--Best Time to Buy and Sell Stock(java版)
1.题目描述 2.思路 思路1: 3.java代码实现 class Solution {public int maxProfit(int[] prices) {// //初始化最小价格为最大值,最大利润为0// int minPriceInteger.MAX_VALUE;// int maxProfit0;// //遍历价格数组// for (int price : prices)// …...
STM32 PWM脉冲宽度调制介绍
目录 背景 PWM 模式 影子寄存器和预装载寄存器 PWM对齐模式 PWM 边沿对齐模式 向上计数配置 向下计数的配置 PWM 中央对齐模式 程序 第一步、使能GPIOB组、AFIO、TIM3外设时钟 第二步、输出通道端口配置编辑 第三步、定时器配置产生频率 第四步、PWM输出配置 第…...
