はじめに
Intel製GPUでOllamaを実行してみました。Ubuntu 22.04を使っています。SYCLを使って直接実行したかったのですができなかったので、IPEX-LLMを使用しました。GPUドライバのインストール
こちらの通りにやりました。実際に実行したのは以下の3つです。
- 3.1.3. Client Intel Package Repository Configuration
- 3.1.4. Install Compute, Media, and Display runtimes
- 3.1.6. Optional Out-of-Tree Kernel-Mode Driver Install
こちらには以下を実行しろと書いていますのでやっておきました。
sudo usermod -aG render ユーザー名 sudo usermod -aG video ユーザー名
インストールの確認は以下のようにするようです。
sudo apt install clinfo sudo clinfo -l
このような結果が返って来ました。
Platform #0: Intel(R) OpenCL Graphics `-- Device #0: Intel(R) Arc(TM) A770 Graphics Platform #1: Intel(R) OpenCL Graphics `-- Device #0: Intel(R) UHD Graphics 750
GPUドライバインストール時のエラー
The following packages have unmet dependencies: libgl1-mesa-dri : Depends: libdrm-amdgpu1 (>= 2.4.119) but 2.4.113-2~ubuntu0.22.04.1 is to be installed mesa-va-drivers : Depends: libdrm-amdgpu1 (>= 2.4.119) but 2.4.113-2~ubuntu0.22.04.1 is to be installed mesa-vdpau-drivers : Depends: libdrm-amdgpu1 (>= 2.4.119) but 2.4.113-2~ubuntu0.22.04.1 is to be installed E: Unable to correct problems, you have held broken packages.
上のようなエラーが出る時がありました。
こちらから手動で「libdrm-amdgpu1_2.4.120-2_amd64.deb」をダウンロードしてインストールしたら解決しました。
sudo dpkg -i libdrm-amdgpu1_2.4.120-2_amd64.deb
oneAPI Base ToolkitのインストールIntel公式ではなく、IPEX-LLM公式の通りにやりました。
後者ではバージョンを指定していて、こちらの方が望ましいと思います。
インストールの確認は以下のようにするようです。
1行目はoneAPIをスタートさせるコマンドのようです。
source /opt/intel/oneapi/setvars.sh
sycl-ls
このような結果が返って来ました。
[opencl:acc:0] Intel(R) FPGA Emulation Platform for OpenCL(TM), Intel(R) FPGA Emulation Device OpenCL 1.2 [2024.17.5.0.08_160000.xmain-hotfix] [opencl:cpu:1] Intel(R) OpenCL, 11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz OpenCL 3.0 (Build 0) [2024.17.5.0.08_160000.xmain-hotfix] [opencl:gpu:2] Intel(R) OpenCL Graphics, Intel(R) Arc(TM) A770 Graphics OpenCL 3.0 NEO [23.52.28202.52] [opencl:gpu:3] Intel(R) OpenCL Graphics, Intel(R) UHD Graphics 750 OpenCL 3.0 NEO [23.52.28202.52] [ext_oneapi_level_zero:gpu:0] Intel(R) Level-Zero, Intel(R) Arc(TM) A770 Graphics 1.3 [1.3.28202] [ext_oneapi_level_zero:gpu:1] Intel(R) Level-Zero, Intel(R) UHD Graphics 750 1.3 [1.3.28202]
IPEX-LLMのインストール
Miniforgeのインストール
こちらに従いました。wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh bash Miniforge3-Linux-x86_64.sh source ~/.bashrc
毎回 base環境が立ち上がるのを避けるために以下を実行しました。
conda config --set auto_activate_base false
ipex-llm[cpp]のインストールConda環境にインストールします。最終的にはこの環境でOllamaを実行します。
こちらに従いました。
conda create -n llm-cpp python=3.11
conda activate llm-cpp
pip install --pre --upgrade ipex-llm[cpp]
Ollamaの初期化と実行
こちらに従いました。Ollamaの初期化
conda activate llm-cpp init-ollama
Ollamaの実行
export OLLAMA_NUM_GPU=999 export no_proxy=localhost,127.0.0.1 export ZES_ENABLE_SYSMAN=1 source /opt/intel/oneapi/setvars.sh export SYCL_CACHE_PERSISTENT=1 OLLAMA_HOST=0.0.0.0 ./ollama serve