見出し画像

Llama3.1をローカルで動かしてみた。完全版


ローカルで動かすこともできる最新のオープンソースLLMを動かしました。
モデルは以下の
Llama-3.1-8B-Instruct-Q4_K_M.gguf
です。動かすことはできましたが、普通じゃない動きです。以下レポート。

Metaのサンプルコードを動かす。

これが動かない。オリジナルのコードはモデルを自動ダウンロードしてくれないし、CLIでも落とせない。なぜなんでしょうね。他のモデルだと簡単に落とせるのですけど。諦めてggufを試します。筆者は常々LLMモデルはggufを使うので、transformersで動かなくてもllama.cppでggufが動いてくれれば問題はありません。

ggufモデルを動かす

モデルはいつものようにパプリカ炒めさんがggufへ変換してくださってます。

この中から、最も一般的なQ4_K_Mを試します。

Llama-3.1-8B-Instruct-Q4_K_M.gguf をダウンロードして、llama.cppのmodelsフォルダーに移動させておきます。

起動コマンド

./llama-server -m ./models/Llama-3.1-8B-Instruct-Q4_K_M.gguf -c 2048 -n 128  --n_gpu_layers 81 --host 192.168.5.71


llama.cppのOpenAI互換サーバです。

クライアント側

一つ前の記事のプログラムを使います。baseアドレスは上記サーバのhostと合わせてください。

動いたときのGPUの利用状況。6.5G程度で随分と少ないです。

会話の結果。記憶も機能しているようです。
User: 目黒川はきれい?
めぐ: 目黒川ってきれい???
User: どこにあるのかな?
めぐ: 目黒川は品川区の近くにある川だよ。目黒川は、品川区の東に流れ、有明と新川とつながって海に注ぐ川なんだ。品川区の中心の品川駅の近くに目黒川の水路があり、駅の南側には川を横断する目黒川橋があるよ。

生成速度
52.92 tokens per second で十分に早いです。

70Bはどうか

モデルは
llama-3.1-70B-Instruct-Q4_K_M.gguf

./llama-server -m ./models/Llama-3.1-70B-Instruct-Q4_K_M.gguf -c 2048 -n 128  --n_gpu_layers 81 --host 192.168.5.71

VRAMの使用状況。 合計で 43.27Gでした

結果

8Bよりもあっさいり。生成が遅いです。
User:
目黒川はきれい
めぐ: 目黒川は、川って言うよりも、汚いよ…
User: どこにあるのかな?
めぐ: え?目黒川???目黒川は品川区にあるよー!

生成が遅いのでレイヤーのロード状況見ましたが、全層乗っています。
llm_load_tensors: offloaded 81/81 layers to GPU
生成は 7.59TPS そりゃ遅い。8bだと52.92 tokens per secon

GPUを変えて見る

確保しておいたA6000で試しました。

13.52 tokens per second。ますまずですけど、早いわけでははいです。

好み焼きの作り方

Llama-3.1-8B-Instruct-Q4_K_M.ggufのときです。
ちなみにお好み焼きの作り方配下の通り。なんだか。。です。
70Bだとだいぶ良くなるけど??? でした。

User: お好み焼きの作り方

めぐ: タコを刻んでおこう。野菜はみじん切りにして、タコは刻んでおけば、後で作るのにも困ることはないよ。次に、みそ汁を準備してね。みそ汁はめぐの母が手作りで作るのを手伝うんだけど、めぐの場合は手作りで作るのを面倒だから、みそ汁の粉を使うことにするよ。みそ汁を準備したら、水を入れて混ぜておこう。ここで、めぐの秘伝のタレを紹介するよ!めぐのタレは、みそ汁と醤油と酒を混ぜて作るんだけど、めぐは酒が嫌いだから、めぐの場合はみそ汁と醤油だけで作ることにするよ。次に、餅粉を水で溶いて混ぜて、具材を入れて混ぜて、最後にめぐの秘伝のタレを入れて混ぜて、完成!めぐはお好み焼きが大好きなんだけど、めぐの母はめぐが太ることを心配してるんだよね。めぐは太ったらダメだから、めぐはいつもお好み焼きを食べる前に、体重計で体重を測ってみるんだよ。めぐは体重が増えたらダメだから、めぐはいつも体重をチェックするんだよ。

Llama-3.1-70B-Instruct-Q3_K_S.ggufで試す

そんなに悪くないです。

User: お好み焼きの作り方
めぐ:
まず材料を準備します。小麦粉、水、塩、卵、キャベツ、にんじん、エビ、肉(お好みで)、ソース、お好み焼き粉などが必要です。 材料を準備したら、まず、卵を片頭パスタイプのボウルに入れて混ぜてください。その後、水を加えてよく混ぜてください。そこに、小麦粉と塩を加えて、混ぜ合わせてください。混ざったら、キャベツを刻んで加えてください。キャベツが混ざったら、にんじんを刻んで加えてください。にんじんが混ざったら、エビや肉(お好みで)を加えてください。混ざったら、熱したフライパンに少量の油を入れ、半分量をフライパンに流し込みます。その後、ソースとお好み焼き粉を散らして、もう一度半分量流し込みます。火が通ったら、皿に盛って出来上がりです。

最後にとっておエモPCで試す

I5-9400F+ 3060-12Gx3台という、普通ではやらないであろう構成でためしました。この構成はスピンオフ座談会のデモでも使用して、レスポンスの速さに驚いた方もいた程です。

動かしたモデルは Llama-3.1-70B-Instruct-Q3_K_S.gguf
以下VRAMの状態。適度にロードされてます。このPCについては70B程度のモデルがどのぐらい動くのか実力を知りたいと思っていたので、ちょうどいいタイミングです。

生成速度は 5.91 tokens per second なのでやはり早くなないです。デモのときはgemma-2-8bで40TPSぐらい出てたので、モデルが大きいと厳しい。

User: 目黒川はきれい?
めぐ:
めっちゃきれい!めぐの家の近くには目黒川が流れてるんだ。めぐが目黒川で遊ぶことや、友達と川のほとりでお茶することもあるんだ。夏は目黒川沿いではお祭りが開かれててめちゃうまいよ!
User: どこにあるの?
めぐ: 目黒川は東京、目黒区にあります!めぐの家の近くに流れてるんで、めぐは目黒川に親しみがあります!

このPCの実力については来週にでもデータを集めて記事にするつもりです。