模型量化
模型量化¶
-
所谓“量化”,简单来说,就是降低模型大小来提高推理性能
-
当然,大小降低的同时,精度也降低了
-
CLI中的 quantize 工具提供各种精度的量化 - quantize
主要的量化方法¶
1.F16(原始浮点 16 位)
- 这是最基础的格式,使用 16 位浮点数存储每个权重。它提供最高的精度,但也需要最大的存储空间和内存。想象成这是一张无损的高清照片,保留了所有细节,但文件较大。
2.Q4(4 位量化)系列:
- Q4_0:最基础的 4 位量化方法。每个权重使用 4 位存储,外加一个缩放因子。这种方法内存占用最小,但可能在某些情况下影响模型性能。
- Q4_1:在 Q4_0 的基础上增加了一个额外的偏置项,可以更好地处理权重分布的偏移。
- Q4_K_M:使用 K-means 聚类的现代化 4 位量化方法。这种方法在保持模型性能和减小尺寸之间取得了很好的平衡,是目前最受欢迎的选择之一。
- Q4_K_S:K-means 聚类的简化版本,牺牲一些性能来换取更快的量化速度。
3.Q5(5 位量化)系列:
- Q5_0:基础的 5 位量化,比 Q4 系列提供更好的精度,但文件更大一些。
- Q5_1:带偏置项的 5 位量化,适合需要较高精度但仍然要控制大小的场景。
- Q5_K_M:使用 K-means 聚类的 5 位量化,是 Q4_K_M 的更精确版本。
4.Q2_K 和 Q3_K 系列:
- 这些是更激进的压缩方法,分别使用 2 位和 3 位来存储权重。它们可以将模型大小压缩到极致,但可能会显著影响模型性能。
- 这些方法适合在资源极其受限的环境中使用
实操¶
1.量化¶
./llama-quantize ./models/mymodel/ggml-model-f16.gguf ./models/mymodel/ggml-model-Q4_K_M.gguf Q4_K_M
-
第一个路径参数: 输入文件路径
-
第二个路径参数: 输出文件路径
-
最后的参数:量化方法
-
Q4_K_M 是一种特定的量化方法
-
Q4:表示使用 4 位量化,这意味着每个权重值将使用 4 位来存储,而不是原来的 16 位,相比原来大大减少了内存占用
-
K:使用 K-means 聚类进行量化,这种方法可以更好地保持权重分布的特征,帮助保持数据的整体分布特征
-
M:代表"Modern",表示这是一个经过优化的现代版本的量化算法
2.更新 GGUF 版本¶
-
GGUF 格式偶尔会更新,可能会破坏与旧版本的兼容性。
-
这就像是软件升级,当新版本发布时,你需要更新你的文件以保持兼容性
- 因为新版本的运行时环境可能无法正确读取旧版本的文件
./llama-quantize ./models/mymodel/ggml-model-Q4_K_M.gguf ./models/mymodel/ggml-model-Q4_K_M-v2.gguf COPY
- 而当你使用
COPY参数时,llama-quantize 不会执行任何实际的量化操作,而是仅仅将模型文件转换为新的 GGUF 版本兼容的文件
本站总访问量 次
Authors: