【Intel Arc A770】IPEX-LLMを使ってIntel製GPUでOllamaを実行する。

はじめに

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




このエントリーをはてなブックマークに追加