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