llama2 系列大语言模型通常在 PyTorch 中进行训练和微调。因此,它们通常作为 PyTorch 项目分布在 Huggingface 上。然而,当谈到推理时,我们对 GGUF 模型格式更感兴趣,原因有三个。
Python 对于人工智能推理来说并不是一个很好的堆栈
。我们希望摆脱生产系统中的 PyTorch 和 Python 依赖。GGUF 可以使用llama.cpp等工具支持非常高效的零 Python 推理。llama2 模型使用 16 位浮点数作为权重进行训练
。事实证明,我们可以将其缩小到 4 位整数进行推理,而不会损失太多功率,但可以节省大量计算资源(尤其是昂贵的 GPU RAM)。这个过程称为量化。GGUF格式
专为 LLM 推理而设计。它支持语言编码和解码等 LLM 任务,使其比 PyTorch 更快、更容易使用。
下载预训练文件
许多 Huggingface 存储库都提供对已量化为 GGUF 格式的 llama2 系列模型的访问。您只需下载这些 GGUF 文件即可。以下是 GGUF 中标准 llama2 模型的可靠下载链接。
使用llama.cpp转化
或者,如果您有自己微调的 llama2 模型,则可以使用 llama.cpp 将其转换并量化为 GGUF。首先,查看 Linux 上的 llama.cpp 源代码。
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
使用convert.py
实用程序将PyTorch模型转换为GGUF。您只需为其提供包含 PyTorch 文件的目录即可。这里的GGUF模型文件是完整的16位浮点模型。它还没有被量化。
# Make sure that you have a llama2 PyTorch model in the models/Llama-2-7b-chat/ directory
# convert the PyTorch model to GGUF in FP16 weights
python convert.py models/Llama-2-7b-chat/
# The result GGUF file
ls -al models/Llama-2-7b-chat/ggml-model-f16.gguf
接下来,构建 llama.cpp 应用程序。
mkdir build
cd build
cmake ..
cmake --build . --config Release
使用您刚刚构建的命令行工具quantize
量化 FP16 GGUF 文件。下面的命令使用 5-bit k-quantization来创建新的 GGUF 模型文件。
bin/quantize ../models/Llama-2-7b-chat/ggml-model-f16.gguf ../models/Llama-2-7b-chat/ggml-model-q5_k_m.gguf Q5_K_M
就是这样。现在您可以在自己的应用程序中使用 GGUF 模型文件,或者在 Huggingface 上与世界分享!