IPEX-LLM
追記:R5-5-19:先週に新しい GPU ドライバーが降ってきて、それに更新したところ特に問題なく動くようになりました。一応以前も最新版にしてあって、ヴァージョン番号も要求を満たしていたのですが・・・とりあえずよし。現在の番号は 31.0.101.5522 の 2024/5/12 リリース版です。
追記:対話中におかしくなります。雰囲気的には配列はみだしでデータ破壊の趣きですがよくわかりません。内蔵 GPU が使えるメモリーは最大メインメモリーの半分までのようで、今 16 Gbyte の半分の 8 G 近くは使っているのでメモリーが足りないのかもしれません。でも小さいモデルでも 異常が起きるので、よくわかりません。何かがおかしいようですw
IPEX-LLM の手引きに従い、12th Gen Intel(R) Core(TM) i7-1260P の内蔵 GPU を用いて Ollama によって LLM(大規模言語モデル)を Windows 11 上で動かします。
Ollama はバックエンドとして llama.cpp を用いており、これを Intel oneAPI の C++ コンパイラを使ってコンパイルすることで、GPU 利用を実現します。
したがって、まず ipex-llm をインストールしたうえで llama.cpp の設定を行い、引き続いて Ollama の設定に進むことになります。
ipex-llm の例題が動いたところで、次に llama.cpp のインストールに移ります。
注意点:第一歩目として conda と pip の合わせ技が出てくるのですが、pip が動かず頭を抱えてしまいました。
これは以下のサイトに解決方法が書いてありました。
dllファイルが無いことが原因
/Library/binからffi.dll ffi-7.dll ffi-8.dllをコピーして /env/<new-env>/Library/binにペーストする。
これによって、pip が正常に動きます。
conda create -n llm-cpp python=3.11 conda activate llm-cppdounyu pip install dpcpp-cpp-rt==2024.0.2 mkl-dpcpp==2024.0.0 onednn==2024.0.0 # install oneapi pip install --pre --upgrade ipex-llm[cpp]
llama.cpp のソース一式を git clone してやります。
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp
ここで、Anaconda prompt (miniconda3) を管理者権限で起動して、バッチファイルを実行します。
init-llama-cpp.bat
本当は例題でうまく動くか見た方がいいでしょうが、mistral-7b-instruct-v0.1.Q4_K_M.gguf のファイルサイズが大きいので、次の ollama インストールに移っても罰は当たらないかと思います。
先ほどと同じく バッチファイルを管理者権限で実行します。
init-ollama.bat
ここまで順調に行っているならば、後は言語モデルをダウンロードしてローカルで言語モデルを実行できます。
実行
ひとつの anaconda prompt で ollama serv でサーバーモードで立ち上げて、もう一つ別の anaconda prompt で ollama pull phi3 をして microsoft の slm(小型言語モデル)をダウンロードして、ollama run phi3 でこれを実行できるはずです。
phi3 を実行してみました。GPU の利用率が上がっているので、ちゃんと GPU で計算しているようです。