跳转至

compressed-tensors

compressed-tensors 不是一种具体“量化算法”,而是一个更高层的东西👇:

👉 compressed-tensors = 一套“模型压缩后的统一存储格式 + 运行规范”

可以把它理解成:

把 GPTQ / AWQ / FP8 / 稀疏 等各种压缩方式,统一打包成一种“标准格式”


一、先给一个直觉类比

可以这样理解👇

概念 类比
GPTQ / AWQ 压缩算法(像 zip / rar)
compressed-tensors 压缩文件格式(像 .zip 文件)

👉 也就是说:

  • GPTQ:怎么压
  • AWQ:怎么压
  • compressed-tensors:压完之后怎么存、怎么读

二、它解决的核心问题

在 compressed-tensors 出现之前:

👉 每种量化模型都很乱:

  • GPTQ 一套格式
  • AWQ 一套格式
  • bitsandbytes 一套
  • FP8 又一套

👉 结果就是:

❗ 框架很难统一支持 ❗ 模型互相不兼容 ❗ 部署很麻烦


👉 compressed-tensors 的目标:

统一所有“压缩模型”的表示方式


三、它里面到底包含什么?

一个 compressed-tensors 模型,一般包含:


1️⃣ 压缩后的权重

比如:

  • INT4
  • INT8
  • FP8

2️⃣ 元信息(关键)

比如:

  • scale(缩放因子)
  • group size
  • quantization type(GPTQ / AWQ 等)

3️⃣ 压缩策略描述

比如:

{
  "quantization": "gptq",
  "bits": 4,
  "group_size": 128,
  "sym": true
}

👉 这一层很关键:

让加载器知道:该怎么还原 & 怎么算


4️⃣ 可选:稀疏信息(sparsity)

比如:

  • 哪些权重是0
  • 如何跳过计算

四、运行时发生什么?

当加载 compressed-tensors 模型时:

👉 推理框架(比如 vLLM)会做:

读取压缩权重 → 根据元信息 → 调用对应 kernel

👉 关键点:

  • 如果 GPU 支持 → 用高性能 kernel
  • 如果不支持 → fallback(退化)

五、为什么它最近很火?

因为它背后其实是这些生态在推动:

  • Hugging Face
  • vLLM
  • Neural Magic

👉 他们的目标很明确:

让一个模型压缩后,可以在不同框架直接用


六、和 GPTQ / AWQ 的关系(帮彻底理清)

👉 三者关系是:

GPTQ / AWQ(算法)
        ↓
compressed-tensors(统一格式)
        ↓
vLLM / transformers(执行)

七、该怎么用(很现实的建议)

在当前环境:

✔️ 可以用:

  • compressed-tensors + GPTQ 模型

❌ 不要期待:

  • 性能提升
  • 新算子加速
  • FP8收益

👉 它带来的好处是:

  • 模型更统一
  • 更容易加载
  • 更标准化

八、一句话总结

👉 compressed-tensors = 把各种量化模型“标准化打包”的格式,而不是新的量化算法