😎

【llama.cpp】誰でもできるgguf変換

2024/03/23に公開

tinyLlamaとかを使うときに4bit量子化したいときが誰しも一度はあると思うので、備忘録を描いておく。
llama.cppを導入し、convert.pyを実行、最後にquantize.exeを実行すればOKです。

cmakeの導入

これを参考にcmakeを使えるようにしてみてください
https://note.com/npaka/n/n9eda56d3a463#968580e1-48bd-4ca0-b674-a48070887b49

llama.cppの導入

llama.cppをクローン
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
makeをする。自分はcmakeでやった
mkdir build
cd build
cmake ..
cmake --build . --Release
cd ..

モデルの変換

モデルのダウンロードをする。今回は「yuiseki/tinyllama-ja-wikipedia-1.5T-v0.1」を用いる。
cd models
git clone https://huggingface.co/yuiseki/tinyllama-ja-wikipedia-1.5T-v0.1
cd ..
ggufのconvertをする。このconvert先のモデルを量子化するイメージ。
python .\convert.py models/tinyllama-ja-wikipedia-1.5T-v0.1
(記事時点で上記のtinyllamaにはtokenizerがなかったので、適宜tokenizerをコピーしてます、多分近日中にそのコピーの手順はいらなくなるので書いてないです、ごめんね)
量子化をする。最初はq4_0。
.\build\bin\Release\quantize .\models\tinyllama-ja-wikipedia-1.5T-v0.1\ggml-model-f16.gguf .\models\tinyllama-ja-wikipedia-1.5T-v0.1\ggml-model-chat-q4_0.gguf q4_0
Q4_K_Mでやってみる。現状はQ4_K_Mが一番使いやすい
.\build\bin\Release\quantize .\models\tinyllama-ja-wikipedia-1.5T-v0.1\ggml-model-f16.gguf .\models\tinyllama-ja-wikipedia-1.5T-v0.1\ggml-model-chat-Q4_K_M.gguf Q4_K_M

参考記事

基本はこれを見ればできます。こっちはgcc
https://note.com/educator/n/neb22385219ed

Discussion