首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何看懂量化模型

如何看懂量化模型

作者头像
Ai学习的老章
发布2025-07-26 09:59:10
发布2025-07-26 09:59:10
2210
举报

大家好,我是 Ai 学习的老章

大模型量化

量化是一种将模型的浮点权重(通常是 32 位或 16 位)转换为低位整数(如 2 位、4 位、8 位等)的技术,目的是减少模型的存储空间和计算资源需求,同时尽可能保持模型的性能。

先看一张图

这是 unsloth 放出的 Qwen3-235B-A22B-Instruct-2507,量化版(体积减少 80%)

每一个文件夹都对应了不同量化类型的 GGUF 模型文件,

Huugingface 的介绍:GGUF 是一种二进制文件格式,用于存储大型模型的预训练结果。它通过紧凑的二进制编码、优化的数据结构和内存映射等技术,旨在更快地加载和使用模型,并降低资源消耗。

顺带说一句: HF 也有专门的 GGUF 转换工具,你可以制作自己的 GGUF 格式大模型: https://huggingface.co/spaces/ggml-org/gguf-my-repo

量化类型

Huugingface 也介绍了常见的量化类型:

type

description

F64

64 位标准 IEEE 754 双精度浮点数。

I64

64 位定宽整数。

F32

32 位标准 IEEE 754 单精度浮点数。

I32

32 位定宽整数。

F16

16 位标准 IEEE 754 半精度浮点数。

BF16

16 位的 32 位 IEEE 754 单精度浮点数的简短版本。

I16

16 位定宽整数

Q8_0

8 位四舍五入量化(q)。每个块有 32 个权重。权重公式:w = q * block_scale。过时的量化方法(截至今日不常用)。

Q8_1

8 位舍入量化(q)。每个块有 32 个权重。权重公式: w = q * block_scale + block_minimum . 传统量化方法(目前不广泛使用)

Q8_K

8 位量化(q)。每个块有 256 个权重。仅用于量化中间结果。此量化类型实现了所有 2-6 位点积。权重公式:w = q * block_scale。

I8

8 位固定宽度整数。

Q6_K

6 位量化(q)。超块包含 16 个块,每个块有 16 个权重。权重公式:w = q * block_scale(8 位),结果为每权重 6.5625 位。

Q5_0

5-bit round-to-nearest 量化 (q)。每个块有 32 个权重。权重公式: w = q * block_scale。过时的量化方法(目前不广泛使用)。

Q5_1

5-bit round-to-nearest 量化 (q)。每个块有 32 个权重。权重公式: w = q * block_scale + block_minimum 。过时的量化方法(目前不广泛使用)。

Q5_K

5-bit 量化 (q)。超块包含 8 个块,每个块有 32 个权重。权重公式: w = q * block_scale(6-bit) + block_min(6-bit) ,结果为每权重 5.5 位。

Q4_0

4 位四舍五入量化(q)。每个块有 32 个权重。权重公式:w = q * block_scale。过时的量化方法(截至今日不常用)。

Q4_1

4 位舍入量化(q)。每个块有 32 个权重。权重公式: w = q * block_scale + block_minimum 。过时的量化方法(目前不广泛使用)。

Q4_K

4 位量化(q)。超块包含 8 个块,每个块有 32 个权重。权重公式: w = q * block_scale(6-bit) + block_min(6-bit) ,结果为每权重 4.5 位。

Q3_K

3 位量化(q)。超块包含 16 个块,每个块有 16 个权重。权重公式:w = q * block_scale(6 位),结果为每权重 3.4375 位。

Q2_K

2 位量化(q)。超块包含 16 个块,每个块有 16 个权重。权重公式: w = q * block_scale(4-bit) + block_min(4-bit) ,结果为每权重 2.625 位。

IQ4_NL

4 位量化(q)。超块包含 256 个权重。权重 w 使用 super_block_scale 及重要性矩阵获得。

IQ4_XS

4 位量化(q)。超块包含 256 个权重。权重 w 使用 super_block_scale 及重要性矩阵获得,每个权重占用 4.25 位。

IQ3_S

3 位量化(q)。超块包含 256 个权重。权重 w 使用 super_block_scale 及重要性矩阵获得,结果为每权重 3.44 位。

IQ3_XXS

3 位量化(q)。超块包含 256 个权重。权重 w 使用 super_block_scale 及重要性矩阵获得,结果为每权重 3.06 位。

IQ2_XXS

2-bit 量化(q)。每个超块有 256 个权重。权重 w 使用 super_block_scale 及重要性矩阵获得,结果为每权重 2.06 位。

IQ2_S

2-bit 量化(q)。每个超块有 256 个权重。权重 w 使用 super_block_scale 及重要性矩阵获得,结果为每权重 2.5 位。

IQ2_XS

2-bit 量化(q)。每个超块有 256 个权重。权重 w 使用 super_block_scale 及重要性矩阵获得,结果为每权重 2.31 位。

IQ1_S

1-bit 量化(q)。每个超块有 256 个权重。权重 w 使用 super_block_scale 及重要性矩阵获得,结果为每权重 1.56 位。

IQ1_M

1 比特量化(q)。超块包含 256 个权重。权重 w 使用 super_block_scale 及重要性矩阵获得,结果为每权重 1.75 位。

llama.cpp 的量化名称由 ikawrakow 提出,他实现了其中的大部分。

这些名称非常简洁,包含了很多信息,而且随着新方案的制定和实施,它们可能会发生变化。

模型名称通常是这种格式:(I)Qx_(K)_V

  • Qx - 表示 x 位深度的量化,比如 Q2, Q3, Q4, Q5, Q6, Q8,它表示用于存储模型权重所需的空间。 数字越小表示占用内存越少,但精度越低。
  • I/K - 如果没有这些标识,那么这是“遗留量化”,基本上是原始的 GGUF/GGML 量化规范。遗留量化中的每个权重将占用恰好 x 位。通常现在只制作 4 位遗留量化,因为它们由于需要进行更少的数学运算来恢复最终权重而非常快。
  • 一次只会出现 I 或 K 中的一个,并且它们都意味着平均位深度* 会高于 x,但不会超过约 0.5。它们基本上采取了不同的量化过程方法。“I”表示它使用所谓的“重要性矩阵”来简化权重,“K”则是通过将权重分组为“超块”来实现。你不需要太担心这些具体含义,只需知道对于相同的值 x,IQ 量化通常优于 K 量化。
  • V - 一个鉴别器,通常用来传达平均位深度与 x 之间的差距。
    • 对于 IQ 量化,最小的是 XXS(x+0.06),最大的是 M。
    • 对于 K 量化,最小的有时只是 K(没有尾字母),然后是 S、M 和 L。L 最多为 x+0.56,通常约为 x+0.5。请注意,对于 IQ 和 K 量化,不是每个尺寸的变体都会在每个可用的位权重中存在,因为 llama.cpp 开发人员发现某些组合主要是冗余的。
    • 对于遗留量化,V 会是一个数字,在这种情况下,它只是表示旧量化技术的一种变体,它们可以相互比较,如果你使用这些量化,基本上应该选择较小的那个。

目前市面上的量化命名规范没有行业标准,尤其是对于大小的命名:XXS、XL、M、S 等,这些都是相对的,取决于发布者认为哪个是最大的 XL。

除了 Huggingface 介绍的,还有一些独创类型,比如上面的UD

UD 代表 Unsloth Dynamics,unsloth 公司使用不同的量化对不同的块进行量化,结合了不同的 imatrix 校准文本和上下文长度,并且使一些张量/层的大小不同于常规的 llama.cpp 代码

怎么选呢?

没有最好的选择,只有最合适的选择

需要根据自己的需求,平衡大小和准确性!

unsloth 官方测试也有推荐

比如 DeepSeek-R1 推荐的是 Q2_K_XL 或 IQ2_XXS

Kimi-K2 的量化,推荐的是 UD-Q2_K_XL2 位动态量化

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与统计学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大模型量化
  • 量化类型
  • 怎么选呢?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档