「型落ちPCのCPUのみで、量子化した7B(70億)パラメータのLLMを動かしてみる」では量子化済みのcalm2-7b-chat.Q2_K.ggufをダウンロードして使っていました。
ここではHuggingFaceにアップしてあるcyberagent/calm2-7b-chatをggufに変換後、q2_K型に量子化してから使ってみます。
環境は前と同様に型落ちPCでRAMを10GBに拡張したものを使います。
OSはUbuntu Server 22.04.3 LTS です。
OSをインストールして起動したら、必要なパッケージやライブラリなどをインストール。
pipが未インストールなら以下を実行しておきます。
トークナイズ用にsentencepieceをpipでインストールします。
BLASを使うのでllama.cppを新たにインストールします。以前にmakeのみでビルドしたllama.cppはフォルダーごと削除しておいてください。
ダウンロードファイル用のディレクトリを作成しておきます。
HuggingFaceから cyberagent/calm2-7b-chatをダウンロードします。
python3 -c 'import huggingface_hub; huggingface_hub.snapshot_download(repo_id="cyberagent/calm2-7b-chat", cache_dir="./models/hf")'
ダウンロードフォルダーへ移動。
cd ~/models/hf/models--cyberagent--calm2-7b-chat/snapshots/f666a1e43500643cb3ff8c988a6ea5b56afe934a
こんな感じ。
python でvocab.json(頻度の高いトークンのリスト)を作成します。
>python3
llama.cppフォルダーのトップへ移動
GGUFファイルを作成します。
python3 convert.py --vocabtype bpe --outfile ~/models/gguf/calm2-7b-chat.gguf ~/models/hf/models--cyberagent--calm2-7b-chat/snapshots/f666a1e43500643cb3ff8c988a6ea5b56afe934a
q2_k型で量子化実行。
同じような調子で、4-bit(q4_0)や5-bit(q5_k_m)などで量子化しておけば比較できます。
例によって「日本で一番高い山はどこですか?」と尋ねてみます。
初回はモデルの読み込みもあって若干時間がかかります。
2回目以降はスムースです。
2~3秒のタイムラグで応答が返ってきました。
ちなみに4-bit量子化(q4_0型)したものでは、こういう応答になります。
こういう答えを返すこともあります。
もはやファンタジーですが、妙に納得する人もいるかもしれません。
Appendix
他のモデルについて
●Rinna
rinna/youri-7b-chatでは.quantizeでエラー
error loading model: ERROR: byte not found in vocab
●ELYZA
elyza/ELYZA-japanese-Llama-2-7b-fast-instructでは.mainでエラー
GGML_ASSERT: llama.cpp:2695: codepoints_from_utf8(word).size() > 0
Aborted (core dumped)
このページでディスカッションされていますが、解決策は未だなし
Appendix2
HuggingFace Hub リンク
elyza/ELYZA-japanese-Llama-2-7b
量子化済み ELYZA-japanese-Llama-2-7b-fast-instruct
量子化済み rinna-youri-7b-chat
量子化済み cyberagent-open-calm-3b
量子化済み RakutenAI-7B-chat
Appendix3
今回、量子化を実行するに当たってllama.cpp をBLASオプション付きでビルドしました。
ただmainコマンドで推論を実行するだけなら、前回クローンしてmakeのみで作ったmainでも可能です。
また、今回使ったプアなPC環境でもオリジナルのggufファイルは実行は可能ですが、実用には程遠い遅さです。
Next
7Bのモデルをラズパイ5 – 8GB で動かしてみる
ラズパイ5(8GB)で、日本語対応の7B(70億)パラメータのLLMを量子化して使ってみる
Leave a Reply