sunx.ai

sunx.ai

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

1、下载#

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

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

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

安装完成

3、转换模型到 ggml 格式#

保持在 llama.cpp 目录

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 编译一下,给执行权限

./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


加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。