EN

INT8 激活量化:为什么你的 Mac AI 推理还能再快 1.8 倍

2026-05-22

当所有人都以为 MLX 已经是 Apple Silicon 的极限时,我们发现了 M 系列芯片隐藏的 INT8 硬件能力。

Apple Silicon 的神经网络引擎(ANE)和 GPU 被公认为端侧 AI 推理的顶级硬件,但过去两年,开发者们一直在用一个“残血”方案——权重量化(Weight Quantization)。

MLX、llama.cpp 等主流框架都只支持 W4A16 或 W8A16:模型权重压缩到 4bit 或 8bit,但计算时仍然要反量化回 FP16。这就像把货物压缩打包运输,到了目的地还得全部拆包才能使用。

真正的突破是 INT8 激活量化(Activation Quantization)——把模型推理过程中的激活值(Activation)也量化到 INT8,并在芯片层面直接用 INT8 指令计算。这意味着货物不仅打包运输,连使用过程都在“压缩态”完成,全程无需 FP16 的中间环节。

明略科技开源的 Cider 框架,解锁了 Apple M5 芯片的 INT8 TensorOps 硬件指令,实现了 W8A8 全量化推理。实测数据显示:在 M5 Pro 上,端到端 Prefill 速度提升 1.57×–1.92×,峰值内存降低约 40%,精度几乎无损。

本文将从技术原理、开发者实践、投资趋势三个维度,解析 INT8 激活量化如何成为端侧 AI 的“隐形加速器”。

INT8 激活量化:为什么你的 Mac AI 推理还能再快 1.8 倍

关键要点摘要

  • INT8 激活量化 vs 权重量化:后者只压缩模型体积,前者连计算过程都走 INT8,速度更快、内存更省
  • W8A8 vs W4A16:W8A8(8bit 权重+8bit 激活)比 W4A16(4bit 权重+16bit 激活)在 M5 芯片上 Prefill 提速 1.57×–1.92×
  • 精度几乎无损:Qwen3-8B W8A8 per-channel 的困惑度(PPL)为 9.756,与 FP16 的 9.726 几乎持平
  • Cider 优势:基于 Apple Silicon INT8 TensorOps 的开源推理框架,填补 MLX 原生激活量化空白
  • 即插即用:pip install -e . 即可,自动检测芯片型号,M5+ 启用硬件加速,M4 及以下优雅降级

一、什么是 INT8 激活量化?和权重量化有什么区别?

1.1 权重量化:只解决“存储”,没解决“计算

当前主流的量化方案(如 MLX 原生 W4A16、W8A16)属于权重量化:

  • 模型权重(Weight)压缩到 4bit 或 8bit 存储
  • 推理时反量化回 FP16 进行矩阵计算
  • 显存占用降低,但计算速度没有本质提升

类比:把一本厚书扫描成 PDF 压缩包存进 U 盘(省空间),但阅读时还得解压成原图才能看(没省时间)。

1.2 激活量化:计算本身也走 INT8

激活量化(Activation Quantization) 更进一步:

  • 不仅权重是 INT8,推理过程中产生的激活值(Activation,即层与层之间的中间结果)也保持 INT8
  • 矩阵乘法直接在 INT8 精度下完成,无需 FP16 中间态
  • 需要硬件层面的 INT8 指令支持(Intel AVX、NVIDIA TensorRT、Apple Silicon TensorOps)

类比:不仅书是压缩的,连阅读器都支持直接读压缩格式,全程不解压。

1.3 W8A8 vs W4A16:数字背后的含义

标识权重精度激活精度适用场景速度
FP1616bit16bit精度优先基准
W4A164bit16bit存储极度受限与 FP16 相当
W8A168bit16bit平衡方案略快于 FP16
W8A88bit8bit速度优先1.5–1.9× 提升
W4A84bit8bit极致压缩接近 W8A8

关键认知:W4A16 虽然权重更压缩(4bit < 8bit),但计算时激活值仍是 FP16,所以速度提升有限;而 W8A8 虽然权重只压缩到 8bit,但激活也量化到 8bit,整体计算更快。

二、INT8 量化会让模型变笨吗?实际精度损失多大?

这是所有量化技术的核心顾虑:速度换精度,值不值?

2.1 评估指标:困惑度(Perplexity, PPL)

困惑度衡量模型预测下一个词的“不确定程度”——数值越低越好。

模型配置困惑度(PPL)与 FP16 差异
Qwen3-8BFP169.726基准
Qwen3-8BCider W8A8 per-channel9.756+0.03(几乎无损)
Llama3-8BFP16 → W8A8 PC6.138 → 6.271+0.133(可接受)

Cider 的 W8A8 per-channel 方案仅比 FP16 高出 0.03 的困惑度,在实际使用中几乎无法感知差异。

2.2 量化粒度的选择

Cider 支持多种量化粒度,精度与速度的平衡点:

粒度模式描述精度Prefill 提速
per-channel按输出通道一个 scale略低~1.8×(最快)
per-group gs=128128 元素一组中等~1.5×
per-group gs=6464 元素一组较高~1.3×

按 Cider实测:per-channel 速度最快但精度略低,per-group gs=64 精度最高但速度增益最小。开发者可根据场景在精度和速度间取舍。

三、MLX 框架原生支持激活量化吗?不支持怎么补?

3.1 MLX 的局限

Apple 的 MLX 框架目前只支持权重量化(W4A16、W8A16),没有原生的 INT8 激活计算路径。

MLX 的设计哲学是“延迟求值 + 统一内存”,但在量化推理上,官方实现停留在“权重量化存储,FP16 计算”的层面。

3.2 Cider 的填补方案

Cider 基于 MLX 的 custom primitives 构建,实现了:

1. 在线激活量化:在前向传播中对激活值做 per-token INT8 量化

2. INT8 矩阵乘法:通过 Metal 4 的 cooperative_tensor API 调用 M5 芯片的 INT8 TensorOps 硬件指令

3. 非侵入式兼容:与 mlx_vlm 等现有工具链集成(已在 mlx_vlm 0.4.3 上验证)

四、技术实战:INT8 激活量化在 Apple Silicon 上的表现

4.1 性能基准测试

测试环境:Apple M5 Pro

模型W8A8 PC Prefill (tok/s)Decode (tok/s)对比 W8A16 提速
Qwen3-VL-2B (1334 tokens)32421041.57× (vs 2065)
Qwen3-VL-4B (1334 tokens)2186541.22× (vs 1786)
Qwen3-8B (Wikitext2)123.5s total接近原生1.79× (vs 221.3s)
Llama3-8B (Wikitext2)123.3s total接近原生1.92× (vs 236.9s)

4.2 硬件适配策略

Cider 的条件编译机制:

芯片型号pip install -e . 行为import cider 行为
M5+完整编译(CMake + Metal kernels)全部功能可用
M4 及以下跳过 C++ 编译,仅安装 Python 包is_available() → False,convert_model() 为 warning no-op

开发者无需关心硬件差异,安装后自动检测并启用最优路径。

五、怎么把现有 MLX 模型转成 W8A8?

5.1 一行代码启用(推荐)

from cider import convert_model, is_available

model, proc = load(“path/to/model”)  # 用 mlx_vlm 或 mlx_lm 加载

if is_available():
    convert_model(model)  # 自动替换所有 Linear 层为 CiderLinear
    # seq_len > 1 → W8A8 INT8 TensorOps(加速 prefill)
    # seq_len == 1 → INT8 MV kernel(decode 接近原生速度)

注意:对于视觉语言模型(VLM),建议只对语言模型部分做量化——即 convert_model(model.language_model),避免视觉编码器被量化导致精度下降。

前提条件:Cider 假设模型权重是“量化友好”的,即已经过 GPTQ、SmoothQuant 等后训练校准。如果模型存在权重离群值(outlier),直接使用可能出现输出乱码。

5.2 与 llama.cpp 的对比

特性Cider (W8A8)llama.cpp (Q8_0)
框架生态MLX 原生GGUF 生态
Apple Silicon 优化✅ M5+ INT8 TensorOps 硬件加速✅ Metal 支持
Prefill 提速1.57×–1.92×(vs W8A16)取决于模型和配置
VLM 多模态✅ mlx_vlm 兼容⚠️ 需额外适配
安装方式pip install -e .编译/预编译二进制
芯片要求M5+ 获完整加速,M4 降级所有芯片

核心差异:llama.cpp 的 Q8_0 是通用 INT8 量化,未针对 Apple Silicon 的 INT8 TensorOps 做专门优化;Cider 通过 Metal kernel 直接调用硬件指令,在 M5 上优势更明显。

六、常见问题

Q: 什么是 INT8 激活量化?

A: 不仅压缩模型权重到 8bit,连推理过程中的激活值也保持 8bit,并在硬件层面用 INT8 指令直接计算,Prefill 提速 1.57×–1.92×。

Q: W8A8 和 W4A16 有什么区别?

A: W4A16 权重更压缩(4bit)但计算时激活回 FP16;W8A8 权重 8bit 但激活也 8bit,整体计算更快。在 M5 芯片上,W8A8 速度优于 W4A16。

Q: INT8 量化会让模型变笨吗?

A: Cider 的 W8A8 per-channel 方案在 Qwen3-8B 上困惑度仅比 FP16 高 0.03(9.726 → 9.756),实际使用中几乎无损。

Q: 我的 Mac 能用吗?

A: M5+ 获得完整 INT8 TensorOps 硬件加速;M4 及以下安装不报错,is_available() 返回 False,自动降级为标准 MLX 推理。

Q: 怎么把现有 MLX 模型转成 W8A8?

A: 安装 Cider 后,调用 convert_model(model) 即可自动替换所有 Linear 层。注意模型需要是“量化友好”的(已做过 GPTQ/SmoothQuant 等校准)。

Q: Cider 和 llama.cpp 有什么区别?

A: llama.cpp 是通用方案,Cider 专门针对 Apple M5+ 的 INT8 TensorOps 做硬件级优化,Prefill 提速更显著。

Q: 安装方式?

A: pip install -e . 即可。M5+ 自动编译 C++ 扩展启用硬件加速,M4 及以下仅安装 Python 包,不报错。

GitHub:github.com/Mininglamp-AI/cider

安装:pip install -e

联系我们:model@mininglamp.com

信息填写

*手机号码:

请选协议