💡

Apple Silicon MacでLlama 3.1 70Bを動かす

2024/08/06に公開

M1 Max 64G GPU 32core 400GB/s memory bandwidthで
llama.cppを用いてLlama 3.1 70B JapaneseのQ4_K_Mモデルが動作することを確認しました。

https://github.com/ggerganov/llama.cpp/discussions/4167
上記のディスカッションによるとメモリ帯域が結構性能に効いていそうです。

モデルはこちらから。
https://huggingface.co/mmnga/Llama-3.1-70B-Japanese-Instruct-2407-gguf

./llama-cli -m models/Llama-3.1-70B-Japanese-Instruct-2407-Q4_K_M.gguf -p "[INST]ナスの美味しい食べ方[/INST]" -n 500 -c 17000

context 17000指定で使用メモリは5.29GB程度。
アクティビティモニタ上からはプロセスがこれ以上掴んでいるようには見えないのですが、
このあたりに上限値がありそうでした。

[INST]ナスの美味しい食べ方を教えて[/INST]ナスは、水分が多く含まれているので、油との相性は抜群です。
ナスの美味しい食べ方をご紹介します。
・麻婆ナス
みじん切りにしたにんにく、しょうが、ねぎをごま油で炒めます。そこに、みじん切りにしたナスと、ひき肉を入れて、豆板醤、ケチャップ、ソース、醤油などで味付けをします。
・ナスの天ぷら
ナスを輪切りにし、水にさらして、水気を取ります。そこに、天ぷら粉を付けて、油で揚げます。塩などで味付けをして、食べます。
・ナスのフライ
ナスを輪切りにし、水にさらして、水気を取ります。そこに、パン粉を付けて、油で揚げます。ソースや醤油などで食べることができます。
・ナスの煮物
ナスを輪切りにし、醤油、砂糖、みりん、酒などで煮ます。そこに、みじん切りにしたしょうがなどを入れると、風味が良くなります。
・ナスの味噌汁
ナスを輪切りにし、味噌�
llama_print_timings:        load time =    4666.86 ms
llama_print_timings:      sample time =      19.14 ms /   300 runs   (    0.06 ms per token, 15673.16 tokens per second)
llama_print_timings: prompt eval time =    1093.56 ms /    16 tokens (   68.35 ms per token,    14.63 tokens per second)
llama_print_timings:        eval time =   83606.37 ms /   299 runs   (  279.62 ms per token,     3.58 tokens per second)
llama_print_timings:       total time =   84765.60 ms /   315 tokens

気のせいかNVIDIAのGPUで実行するより出力が不安定な印象です。

3.5t/s程度と速度もそれなりなので、もう少し速いモデルが良ければgemma-2-27bあたりがおすすめです。

補足

https://www.reddit.com/r/LocalLLaMA/comments/186phti/m1m2m3_increase_vram_allocation_with_sudo_sysctl/

なお、こちらのredditによると、

sudo sysctl iogpu.wired_limit_mb=xxx

ないしは

sudo sysctl debug.iogpu.wired_limit=xxx

でGPUが利用するメモリの上限を上げることができます。

recommendedMaxWorkingSetSizeが68719.48という値だったので、適当に

sudo sysctl debug.iogpu.wired_limit=100000

と設定してからcontextの値をいじると、大体40000くらいでllama-cliが12G程度のメモリを掴むようになりました。
モデルが40GでMacのメモリが64Gなので他のアプリのメモリ使用量によってはこれ以上上げるとOSが落ちます。(落ちました)

利用する際は十分ご注意ください。

Discussion