ごく普通のノートPCで、大規模言語モデルを動かしてみました(動かしてみた、だけです)。
使ったPCのスペック
- Windows11
- プロセッサ 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz 2.42 GHz
- 実装 RAM 8.00 GB (7.71 GB 使用可能)
- システムの種類 64 ビット オペレーティング システム、x64 ベース プロセッサ
llama.cpp
https://qiita.com/tags/llama.cpp
などをご参照ください。
インストール方法などは、
https://note.com/npaka/n/n0ad63134fbe2
などを参考にさせていただきました。
準備
- w64devkit の最新版(今回は1.20.0を使用)をダウンロードして適当なところに解凍(私はC:\Program Files\w64devkit に置きました)
- w64devkitと、直下の「bin」のパスをWindowsの環境変数のPATHに追加
- ./w64devkit\w64devkit.exe を実行
- w64devkitについては、w64devkit - Portable C and C++ Development Kit for x64 Windowsを参考にしました。 - llma.cpp をダウンロード
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make
- モデルをダウンロード
- 今回は、llama-2-7b-chat.Q4_K_M.gguf を使用
- llama2 量子化モデルの違いは、【ローカルLLM】llama.cppの量子化バリエーションを整理するを参考にしました、
- cf.Llama.cppで扱えるモデル形式が GGMLからGGUFに変更になりモデル形式の変換が必要になった話
- llama.cpp\models\llama-2-7b-chat.Q4_K_M.gguf に置く
実行
./main -m .\models\llama-2-7b-chat.Q4_K_M.gguf --temp 0.1 -p "### Instruction: What is the height of Mount Fuji?### Response:"
という風に富士山の高さを聞くと、
Log start
main: build = 1550 (8e672efe)
main: built with cc (GCC) 13.2.0 for x86_64-w64-mingw32
(中略)
### Instruction: What is the height of Mount Fuji?### Response: The height of Mount Fuji is 3,776 meters (12,421 feet) above sea level. It is located on Honshu Island in Japan and is considered one of the country's most iconic landmarks. [end of text]
(後略)
という風に、回答がちゃんと表示されました。
日本語で質問もできますが、私のPowerShellの設定の問題か、日本語が文字化けして、回答が得られないので、
echo "### Instruction: 富士山は何県にありますか?### Response:" > prompt.txt
というファイルを作成し、
./main -m .\models\llama-2-7b-chat.Q4_K_M.gguf --temp 0.1 -f prompt.txt
とすると。以下の回答が得られました。
### Instruction: 富士山は何県にありますか?### Response: 富士山は静岡県にあります。
富士山は、日本の最高峰であり、標高3,776mの山です。その位置は、静岡県の富士五湖地方にあります。この地方は、富士山を中心として、周辺に数多くの湖沼が含まれています。
富士山は、日本の文化的・religiousな象徴であり、年間を通じて多くの観光客が訪れます。特に、新春や晩秋の照明の優美な景色は有名で
す。
富士山は、静岡県の自然的資源として重要な存在であり、日本国内外からの観光客が多く訪れます。 [end of text]
(山梨県の方には怒られそうな回答ですが...)
rinna
rinna-youri-7b-chat-q4_K_M.gguf
で、
./main -m .\models\rinna-youri-7b-chat-q4_K_M.gguf --temp 0.1 -f prompt.txt
と試してみると、
### Instruction: 富士山は何県にありますか?### Response: 静岡 [end of text]
というそっけない回答。
今後
Llama.cppのPythonバインディングがあるようなので、それを試してみたい。
いずれにせよ、手元の GPUもない(一応デフォルトのが入ってた) 非力なPCで、大規模言語モデルで遊べるのは、楽しいですね。