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


載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。