今天我们拆解的 any4,正是 Meta FAIR 实验室在 2025 年 ICML 推出的全新方案 —— 它彻底跳出固定格式的桎梏,把量化从 “手工套模板” 变成了 “模型自主学习”,用逐行自适应的高精度查找表,给大模型做一套专属的 “高定量化”。
一、先看实力:any4 凭什么成为 4bit 新标杆
不讲复杂公式,先看落地效果:
精度全面领先:在 Llama 2/3、Mistral、Mixtral 全系列模型上,困惑度显著优于 INT4、FP4、NF4,最接近 FP16 原版表现。
- 校准超级简单:别家量化需要上百条校准数据,any4 只用 1 条覆盖多场景的样本就够。
-
对比维度 any4 Int4 FP4 NF4 核心定位 LLM 专用学习型 4bit 数值表示 传统均匀整数量化 极简浮点格式量化 预设高斯分布浮点量化 实现方式 分组缩放 + 逐行加权 K-Means 学习码本 + 4bit 索引 + 逐行 LUT 查表 + 单样本校准 线性均匀缩放 + 固定整数映射 (-8~7) 符号位 + 指数位 + 尾数位固定解析 预定义 16 个高斯拟合值 + 全局固定查表 量化逻辑 数据驱动自适应非均匀 均匀线性 浮点分段线性 预设高斯非均匀 校准成本 仅需 1 条多样化样本 无需校准 / 少量样本 无需校准 需数据集校准 精度表现 最优,大组宽下依然稳定 一般 最差 较好 推理速度 快,与 NF4 持平 最快 快 快 内存开销 极低,仅增加 0.0625bit/entry 低 低 低 是否需预处理 完全不需要 无需 无需 无需
二、通俗看懂 any4:先认识 LUT,再走一遍流程
在讲算法之前,我们先把核心结构说清楚:any4 的核心,就是给权重矩阵的每一行,学一个专属的 16 个浮点数查找表(LUT)。
-
每个权重最终只存一个 4bit 索引 -
推理时通过索引去 LUT 里取高精度浮点值 -
一行权重 = 一组 4bit 索引 + 一个 16 个 FP16/BF16 的 LUT
下面按照下图,step-by-step讲清楚any4全流程。
1. 准备阶段:分组与校准 (1) → (2)
分组缩放
和常规量化的第一步完全一致:将权重矩阵按行划分为若干连续小组(常用 group_size=128),对每组计算缩放因子 α 与偏移量 β,把权重映射到合适的区间。这一步保证所有数值落在可量化范围内,是所有分组量化的标准操作。
激活校准
any4 最省心的地方来了:它只需要一条校准样本。
输入一段覆盖小说、新闻、代码、数学公式的多样化文本,跑一遍前向,记录每个通道的激活值,然后计算:E|x|(激活绝对值的期望)
这个值代表的就是:每个通道对模型输出的 “影响力权重”。影响力越大的通道,量化时会被优先保护。
2. 核心算法:迭代学习最优 LUT (3)
any4 的灵魂,就是用 E 步 + M 步 迭代,为每一行权重学到最精准的 16 个LUT浮点值。
E-Step(分配步):给权重找 “邻居”
先固定当前 16 个 LUT 候选值,让每个权重元素找到离自己最近的那一个,完成聚类分配。简单说:每个权重找到自己在 LUT 里的 “代表”。
M-Step(更新步):根据 “分量” 挪位置
它会根据当前聚类结果,重新计算这 16 个 LUT 值
LUT_q = ( Σ( α * w_s * E|x| ) ) / ( Σ( α * E|x| ) )
这里先把符号说清楚,避免看不懂:
- w_s:缩放后的权重(也就是经过分组缩放、归一化后的权重值)
这里是精髓:
-
α 越大 → 原始权重范围越宽 → 一点点量化误差都会被严重放大 -
E|x| 越大 → 这个通道对模型输出影响越大,越需要保住精度
所以算法会天然向这两类权重 “倾斜”,优先保证关键位置的精度,而不是简单平均。反复迭代 E 步 ↔ M 步,直到收敛,就得到了该行的专属高精度 LUT。
3. any4 的两项开销(几乎可以忽略)
any4 为了高精度,只付出了极小的代价:
微量存储开销
每行多存 16 个 FP16/BF16 的 LUT。以一行 4096 列为例:额外开销 = 0.0625 bit / 参数几乎可以忽略不计。
轻微推理开销
因为要查表,原生速度比纯 INT4 略慢一点点。但 Meta 配套的 tinygemm 把 LUT 放进寄存器、用 warp shuffle 加速,让 any4 速度与 NF4 基本持平。
三、tinygemm:让 any4 落地更快更稳
光有高精度量化格式还不够,Meta 同步开源了 tinygemm 低延迟矩阵乘库,专门针对 LLM 小批量对话场景优化,这里就不展开细讲了,感兴趣的同学可以去深入了解,概括如下:
- 寄存器级查表:把 LUT 存入寄存器,用 GPU 原生指令极速解码,避免共享内存冲突。
- 权重预排布:提前按硬件计算格式排列权重,省去数据中转耗时。
- 小批量极致优化:在 batch=1~16 的对话场景下,最大化利用 Tensor Core 算力,延迟显著降低。
四、any4适用场景
讲到这大家应该对any4是啥有了比较清楚的认识,那么any4是否就是打遍天下无敌手的万能武器呢?
就我看来,any4 非常适合追求 4bit 轻量化高精度、希望简化工程流程、校准数据有限或主要面向对话类小批量推理的开发者与团队使用,即便将量化组宽扩大至 1024,仍能保持稳定精度;但如果是极致追求推理速度、可牺牲精度,或是运行在不支持浮点与查表操作的低端硬件上,以及不愿编译 CUDA 算子、只想开箱即用的场景,则不太适合选用 any4(如果想用tinygemm加速的话),同时在 2bit/3bit 极限压缩场景下,any 系列也并非最优方案。
五、3 行代码快速上手 any4
Meta 已在 GitHub 完整开源,适配 Hugging Face 生态,上手成本极低:
from transformers import AutoModelForCausalLMfrom quantize import any4# 加载模型model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-1B").cuda().bfloat16()# 一键 any4 量化model = any4(model)# 正常生成推理outputs = model.generate(...)
总结
过去的 4bit 量化,始终在精度、速度、工程成本之间做妥协:INT4 快但精度差,FP4 仅停留在实验,NF4 好用但依然是固定模板。
而 any4 用 “学习” 替代 “手工设计”,给出了更均衡的答案:精度最高、速度一流、开销可忽略、使用极简,还不需要复杂预处理。
对于做 LLM 轻量化、推理部署、端侧落地的开发者来说,any4 不只是一款新的 4bit 格式,更是 4bit 量化的下一代思路,也是必须关注的落地技术。

