GGML 或GGUF的14种不同量化模式说明

文章详细介绍了Llama-2模型中14种GGML量化方法,推荐使用Q5_K_M以保持性能,Q4_K_M用于内存节省,强调了Q2和Q3版本对性能的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查看 TheBloke/Llama-2–13B-chat-GGML 存储库中的文件,我们可以看到 14 种不同的 GGML 模型,对应于不同类型的量化。它们遵循特定的命名约定:“q”+ 用于存储权重的位数(精度)+ 特定变体。以下是所有可能的量化方法及其相应用例的列表,基于 TheBloke 制作的模型卡中的描述,针对llama2模型架构:

  • q2_k:将 Q4_K 用于 attention.vw 和 feed_forward.w2 张量,Q2_K用于其他张量。
  • q3_k_l:将 Q5_K 用于 attention.wv、attention.wo 和 feed_forward.w2 张量,否则Q3_K
  • q3_k_m:将 Q4_K 用于 attention.wv、attention.wo 和 feed_forward.w2 张量,否则Q3_K
  • q3_k_s:将Q3_K用于所有张量
  • q4_0:原始量化方法,4 位。
  • q4_1:精度高于q4_0但不如q5_0。但是,与 q5 模型相比,推理速度更快。
  • q4_k_m:将 Q6_K 用于一半的 attention.wv 和 feed_forward.w2 张量,否则Q4_K
  • q4_k_s:将Q4_K用于所有张量
  • q5_0:  原始量化方法,5位。精度更高,资源使用率更高,推理速度更慢。
  • q5_1:精度高于q5_0但不如q6_k。但是,与 q6 模型相比,推理速度更快。
  • q5_k_m:将 Q6_K 用于一半的 attention.wv 和 feed_forward.w2 张量,否则Q5_K
  • q5_k_s:将Q5_K用于所有张量
  • q6_k:将Q8_K用于所有张量
  • q8_0:与16位浮点数几乎无法区分。资源使用率高,速度慢。不建议大多数用户使用。

根据经验,我建议使用 Q5_K_M,因为它保留了模型的大部分性能。或者,如果要节省一些内存,可以使用 Q4_K_M。一般来说,K_M版本比K_S版本更好。我不推荐 Q2 或 Q3 版本,因为它们会大大降低模型性能。

数字图像的量化是将连续数值像素值离散化为有限的几个级别,以减少图像数据的存储和传输量。在实现数字图像的量化时,需要计算以下几个参数: 1. 量化步长:表示每个像素值的量化间隔,即相邻两个量化级别之间的差值。量化步长的计算公式为: $$ \Delta = \frac{V_{max} - V_{min}}{Q-1} $$ 其中,$V_{max}$ 和 $V_{min}$ 分别是图像中最大和最小的像素值,$Q$ 是量化级别的数量。 2. 量化表:表示每个像素值所对应的量化级别。量化表是一个长度为 $256$ 的数组,数组的每个元素表示对应像素值的量化级别。 3. 量化矩阵:表示对整个图像进行量化后的结果矩阵。量化矩阵的每个元素表示对应像素值的量化结果。 4. 量化模式:表示量化过程中采用的量化模式,包括均匀量化和非均匀量化两种。 下面是Python代码实现数字图像的量化过程: ```python import numpy as np import matplotlib.pyplot as plt # 读取图像 img = plt.imread('lena.png') # 设置量化级别 Q = 16 # 计算量化步长 Vmax = np.max(img) Vmin = np.min(img) delta = (Vmax - Vmin) / (Q - 1) # 计算量化表 quant_table = np.round(np.arange(0, 256) / delta) * delta # 均匀量化 quant_matrix = np.floor(img / delta) * delta # 显示原图和量化后的图像 fig, axs = plt.subplots(nrows=1, ncols=2, figsize=(10, 5)) axs[0].imshow(img, cmap='gray') axs[0].set_title('Original Image') axs[1].imshow(quant_matrix, cmap='gray') axs[1].set_title('Quantized Image') plt.show() ``` 上述代码中,使用Matplotlib库中的`imread()`函数读取图像,然后计算量化步长和量化表。接着,对整个图像进行均匀量化,得到量化矩阵`quant_matrix`。最后,使用Matplotlib库中的`imshow()`函数显示原图和量化后的图像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值