はじめに
Apple Silicon を搭載した Mac を使って LLM 生成モデルを動作させる手順を紹介します。正確にいうとローカル環境で大規模言語モデルをAPIサーバを動作させる text-generation-webui編をmacOSで実行してみました、という内容です。
前提条件
- Apple Silicon を搭載した Mac であること
- 16GB 程度のシステムメモリを有していること (8GB だと動かせるモデルがかなり少なくなります)
- セットアップ作業時にインターネットへアクセス可能なこと (*1)
*1 GitHub や Hugging Face へのアクセスが必要となります。
手順
これらの手順は、macOS にて実行するための手順となります。OS によって実行するスクリプトが違います。
- github/oobabooga/text-generation-webui のリポジトリをクローンもしくはダウンロードする
- クローンもしくはダウンロードしたファイルを展開したディレクトリに移動し、
start_macos.sh
を実行する - 適切なモデルをWeb UIよりダウンロードする
セットアップ
git clone します。もしくはダウンロードして下さい。git がインストールされていない場合は、
git clone https://github.com/oobabooga/text-generation-webui.git
git clone もしくは、ダウンロードしたディレクトリに移動し、セットアップを実行します。
cd text-generation-webui
./start_macos.sh
自動的にセットアップが行われますが、次のように、途中で質問が出てきます。Apple M SeriesなのでCを入力しエンターを押下します。
What is your GPU?
A) NVIDIA
B) AMD (Linux/MacOS only. Requires ROCm SDK 5.6 on Linux)
C) Apple M Series
D) Intel Arc (IPEX)
N) None (I want to run models in CPU mode)
Input> C
しばらく待つと次のような出力があり、起動が完了します。この状態でmacOS から URL にアクセスすると Web UI にアクセスできます。ただし、モデルは何もロードされていませんので、Chat など機能しません。
Running on local URL: http://127.0.0.1:7860
モデルをダウンロード
はじめにモデルをダウンロードする必要があります。モデル rinna/nekomata-7b.Q4_K_M.gguf を例として紹介します。
- Web UI 画面上部の Model タブをクリック
- Download model or LoRA に「rinna/nekomata-7b-gguf」を入力する
- Getfile list を押下し、 nekomata-7b.Q4_K_M.gguf というファイルが表示されることを確認する
- Download を押下して待ちます (ネットワークの状況に依存しますが、モデルのダウンロードには時間がかかります)
- "Model successfully saved to models/"が表示されることを確認します
- 同じ画面左上にある Model の項目のリロードアイコンボタンをクリックします
- ボタンの左にあるModel選択のプルダウンメニューから
nekomata-7b.Q4_K_M.gguf
を選択します (しばらくすると Model loader が自動で選択されます) - Load をクリックし、モデルが正常にロードされることを確認します (モデルサイズが大きすぎたりサポートしていないモデルの場合、ここでエラーが出力されます)
- Successfully loaded
nekomata-7b.Q4_K_M.gguf
と表示されれば成功です
あとは、Chat UI から会話を試すなり、API を有効にして利用するなど、色々な使い方があります。API として動作させる場合は、こちらのローカル環境で大規模言語モデルをAPIサーバを動作させる text-generation-webui編をご確認ください。
注意事項
利用できるモデルのサイズについて
ロードするモデルサイズによって、回答に長時間かかる(1分を超える)ことが起きます。いくつか試した感じだと、16GB のシステムメモリの場合、モデルサイズが5GB 程度のものでないとメモリに乗り切れないようです。私の環境はM1 mac miniです。他にアプリを起動していない状態で、5GB程度のモデルを動かしたところ、残り1GB程度でした。