はじめに
M4 Mac miniを最近買いました。
せっかく24GB RAMを買ったためLLMでなにかしようと思いました。
そこでNexa sdkを使って完全ローカルリアルタイム音声会話システムの開発を始めました。
いつもだったらDockerを使って環境構築をしますが、MacのGPUはコンテナからアクセスできないっぽいので、(Anacondaの規約が変更され使いづらくなったため)Ryeの勉強を込めてRyeで環境構築を始めました。
結局?
Ryeで簡単にインストールされるが、nexa公式インストール方法でないためcpuで推論されとても遅い。いい方法ないですかね。
起きている問題
環境を作ったあとインストールのために以下のコマンドを実行しました。
rye add nexaai
rye sync
正常にインストールされ、実際にサンプルコードを動かしました。
from nexa.gguf import NexaTextInference
if __name__ == "__main__":
# model_path = "llama2"
model_path = "gemma-2-9b-instruct:q4_K_M"
inference = NexaTextInference(
model_path=model_path,
)
# create_chat_completion(messages)
response = inference.create_chat_completion(
messages=[{"role": "user", "content": "write a long 1000 word story about a detective"}]
)
print(response)
動きましたが、とても遅い。asitop
を使ってモニターしてみるとGPU、ニューラルエンジンがともに使われていませんでした。
MacOSのインストーラーを使用してnexa run model_name
したときはGPUが使われるため、nexaの問題ではないはずです。
公式サイトをよく見るとpythonライブラリ版をmacで使う場合には、以下のコマンドを打てとかいてあります。
CMAKE_ARGS="-DGGML_METAL=ON -DSD_METAL=ON" pip install nexaai --prefer-binary --index-url https://nexaai.github.io/nexa-sdk/whl/metal --extra-index-url https://pypi.org/simple --no-cache-dir
しかし今回はryeを使う縛りがあるため、pip
は使えません(rye環境にはインストールすらされないっぽい)。
私にryeはまだ早い?
これを解決できない私にモダンな開発環境はまだ早いのでしょうかね。