将llama70B原始模型转换成GGUF格式

1、下载

先从 huggingface 下载模型，可以下载原始模型，或者其他变种，我这边下载一个 llama3-70B 变种，总体大小 130G 左右。

Copy
huggingface-cli download cognitivecomputations/dolphin-2.9.1-llama-3-70b --cache-dir ./model

如果是国内网络可以用 huggingface 代理https://hf-mirror.com/ 代理一下。

2、安装 llama.cpp

从 github 下载并且安装：https://github.com/ggerganov/llama.cpp

Copy
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make

安装完成

3、转换模型到 ggml 格式

保持在 llama.cpp 目录

Copy
python convert.py huggingface模型目录 \
--outfile moxing.gguf \
--outtype f16 --vocab-type bpe
#例子
python convert.py ./model/models--cognitivecomputations--dolphin-2.9.1-llama-3-70b/snapshots/3f2d2fae186870be37ac83af1030d00a17766929 \
--outfile ./GGUF/dolphin-2.9.1-llama-3-70b-f16.gguf \
--outtype f16 --vocab-type bpe

时间会有点长，执行完了会得到 dolphin-2.9.1-llama-3-70b-f16.gguf 文件，大小没变还是 130G，其实现在就可以运行了不过得 140G 以上显存，一般 GPU 运行不起来，我们将文件量化一下 (减少体积，质量会下降一奈奈)

4、对 GGUF 模型进行量化

我先列一下质量

q2_k：特定张量 (Tensor) 采用较高的精度设置，而其他的则保持基础级别。

q3_k_l、q3_k_m、q3_k_s：这些变体在不同张量上使用不同级别的精度，从而达到性能和效率的平衡。

q4_0：这是最初的量化方案，使用 4 位精度。

q4_1 和 q4_k_m、q4_k_s：这些提供了不同程度的准确性和推理速度，适合需要平衡资源使用的场景。

q5_0、q5_1、q5_k_m、q5_k_s：这些版本在保证更高准确度的同时，会使用更多的资源并且推理速度较慢。

q6_k 和 q8_0：这些提供了最高的精度，但是因为高资源消耗和慢速度，可能不适合所有用户。

我们采用 Q4_K_M 方案。

还是保持在 llama.cpp 目录，make 编译完后有一个 quantize 可执行文件，如果没有就 make 编译一下，给执行权限

Copy
./quantize ./GGUF/dolphin-2.9.1-llama-3-70b-f16.gguf ./GGUF/dolphin-2.9.1-llama-3-70b-Q4_K_M.gguf Q4_K_M

量化完后文件大小 40G 左右，现在就可以用显存为 48G 的运行了，成本降低一半。

5、运行推理

可以使用 llama.cpp 推理，还可以使用 ollama 执行推理，对 gguf 更友好，具体代码可以去官方 github: https://github.com/ollama/ollama

总结

至此已经完成第一篇，如果大家遇到问题可以在评论区讨论。

此文由 Mix Space 同步更新至 xLog
原始链接为 https://sunx.ai/posts/nlp/llama70b