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