[AI] ローカルLLM検証 CodeLlama系日本語学習モデル その3 Mac M2 Proで動作確認

[Mac M2 Pro 12CPU, Sonoma 14.3.1, clang++ 15.0.0]
実行方法:llama.cpp

記事その1ではWindows11PCで検証しましたが、GGUF形式であればMacでも動作可能なので早速試してみました。Metalを使用しています。

4bit量子化したGGUF形式のモデルはサイズが4.08GBですから、RAM16GBでも問題なさそうです。

質問によっては無回答で終了することもあるものの、それなりに考えたプロンプトであればSwiftUIの簡単なコードについては正しい答えが返ってきました。

ただし量子化の影響なのか、下図のような簡潔な正答になることもあれば、勝手にチャットのようになったり、誤答を返すことも多く、結構不安定です。

量子化していないGGUF形式のモデルで検証したいところです。

./main -m models/ELYZA-japanese-CodeLlama-7b-instruct-q4_K_M.gguf --temp 1.0 -ngl 1 -t 10 -f ./prompt_jp.txt

参考サイト

[AI] ローカルLLM検証 llama.cppのmake時にSegmentation fault:11発生 macOS

[Mac M2 Pro 12CPU, Sonoma 14.3.1, clang++ 15.0.0]

LLMのランタイムであるllama.cppのmake時にセグフォ11が発生しました。

コンパイラがclangなのが問題なのかと考え、gccとg++に置き換えましたがダメでした。

Xcode内にあるclangのシンボリックリンクをgcc、g++にリネームして/usr/local/binに置いても状況は変わらず。

InstalledDirが/usr/local/binなのが問題。Xcode内のclangを認識させる必要がある。

/usr/binにあるgccとg++(共に中身はclang)を認識させるようにすると、やっとmakeできました。.bash_profileの行を一部入れ替えて/usr/binの優先順位を上げています。

# /usr/binの優先順位を上げる
export PATH=/usr/local/bin:$PATH
export PATH=/usr/bin:$PATH
これでmakeできるようになった

llama.cpp開発者がMacユーザーはCコンパイラをデフォルトのままで使用するものと想定しているために起こったトラブルでした。

gcc、g++についてclangではなく正規ファイルを使っているMacユーザーの存在は考慮していません。23年4月までのllama.cppでは正規ファイルでもビルド可能でした。ただし、その頃はモデル形式がGGMLだったため、現在のGGUFタイプのモデルは使用不可です。

make中のトラブルをデバッグする手段がなく途方に暮れましたが、Cコンパイラが動作するタイミングでセグフォ11が発生していることから推測して何とか解決できました。

gcc、g++の正規ファイルを使用しているMacユーザーのLLM使いは案外少ないのか、llama.cppのGitHubやStackOverFlowでこのような話題はありませんでした。

このトラブルの解決に丸一日費やしてしまいました。