适用于您的 CPU 的快速而准确的 GGUF 模型。欢迎来到雲闪世界。
添加图片注释,不超过 140 字(可选)
GGUF 是一种二进制文件格式,旨在使用 GGML(一种基于 C 的机器学习张量库)进行高效存储和快速大型语言模型 (LLM) 加载。
GGUF 将推理所需的所有组件(包括标记器和代码)封装在一个文件中。它支持各种语言模型的转换,例如 Llama 3、Phi 和 Qwen2。此外,它还有助于将模型量化为较低的精度,以提高 CPU 的速度和内存效率。
我们经常写“GGUF 量化”,但 GGUF 本身只是一种文件格式,而不是量化方法。llama.cpp 中实现了几种量化算法,用于减小模型大小并以 GGUF 格式序列化生成的模型。
在本文中,我们将了解如何使用重要性矩阵 (imatrix) 和 K-Quantization 方法准确量化 LLM 并将其转换为 GGUF。我使用 imatrix 为 Gemma 2 Instruct 提供了 GGUF 转换代码。它与 llama.cpp 支持的其他模型的工作方式相同:Qwen2、Llama 3、Phi-3 等。我们还将了解如何评估量化的准确性和生成模型的推理吞吐量。
本文介绍了使用重要矩阵和 K 量化的量化、基准测试和 GGUF 转换的代码,并在此笔记本中实现:
使用 Imatrix 和 K-Quantization 实现精确的 GGUF 量化
K 量化实现更准确的 GGUF
K 量化(又称 K-Quants)涉及将模型的权重拆分为“超级块”,然后进一步细分为更小的子块。每个子块都有自己的比例和最小值,这些比例和最小值被量化为有限数量的位 - 通常为 8、6 或 4,具体取决于特定的量化方法,例如 Q2_K、Q4_K 或 Q5_K。这些比例和最小值有助于确保模型在精度降低时也能保持准确性。
虽然该方法比较复杂,量化速度也比较慢(特别是与没有 K-Quants 的 GGUF 量化相比),但所得到的量化模型在推理过程中效率很高。
一旦模型被量化,反量化(将量化权重转换回 fp16 的过程)就会变得简单。它只需要乘以预定的比例并添加最小值,并且可以一次对整个子块进行此操作。这种方法非常适合硬件加速,如 SIMD(单指令、多数据)和 GPU 计算。
来源:有关其