(2024年3月追記)
WindowsでもSDNextを入れると問題なく動くようになりました。
下の情報は古いので参考程度にしてください
生成AIに興味があるのでVRAMの量に惹かれてIntel Arc A770 LEを買いました。
Stable Diffusionを動かすまでに四苦八苦したので備忘録として残します。
Stable Diffusionを動かすためのPC構成
一般人は素直にGeforce RTX3060とかを買いましょう。Intel Arcは情報がほとんどないうえにめんどくさいです。
CPUだけでもモデルによっては動作させることができますが1枚生成するのに数分かかるので現実的ではありません。
最新のSD-XL 1.0を使うとVRAM 16GBでもカツカツになります。VRAMの量は正義です。
意外に見落とされがちですがDRAMも64GBあった方がいいです。32GBは本当に最低限度です。
ストレージは当然NVMe SSDを使いましょう。SATA SSDはぎりぎり耐えれますが積極的に選ぶ理由はありません。
Intel package runtimeのインストール
公式サイトの手順通りにコマンドを実行するだけです。
https://dgpu-docs.intel.com/driver/client/overview.html
まずはパッケージリポジトリの登録
wget -qO - https://repositories.intel.com/gpu/intel-graphics.key | \
sudo gpg --dearmor --output /usr/share/keyrings/intel-graphics.gpg
echo "deb [arch=amd64,i386 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/gpu/ubuntu jammy client" | \
sudo tee /etc/apt/sources.list.d/intel-gpu-jammy.list
sudo apt-get update
各種パッケージのインストール
sudo apt-get install -y \
intel-opencl-icd intel-level-zero-gpu level-zero \
intel-media-va-driver-non-free libmfx1 libmfxgen1 libvpl2 \
libegl-mesa0 libegl1-mesa libegl1-mesa-dev libgbm1 libgl1-mesa-dev libgl1-mesa-dri \
libglapi-mesa libgles2-mesa-dev libglx-mesa0 libigdgmm12 libxatracker2 mesa-va-drivers \
mesa-vdpau-drivers mesa-vulkan-drivers va-driver-all vainfo hwinfo clinfo
Intel oneAPIのインストール
まずはパッケージリポジトリの登録
wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \ | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
sudo apt update
Base ToolkitとHPC Toolkitのインストール
sudo apt install intel-basekit intel-hpckit
SD.NEXTのインストール
通常画像生成といえばAUTOMATIC1111が有名ですが、oneAPIで動かせないのでforkのSD.NEXTを使います。
公式サイトはここから
https://github.com/vladmandic/automatic
まずはgitとvenvを入れます
sudo apt install git python3.10-venv
コードをクローンします
git clone https://github.com/vladmandic/automatic
webui.shを実行します。今回はoneAPIで動かすのでオプションに--use-ipexをつけます
セットアップに時間がかかるので気長に待ちましょう。
cd automatic
./webui.sh --backend diffusers --use-ipex
更新が止まってURLが表示されたらブラウザから操作できます。お疲れ様でした。
http://127.0.0.1:7860/
swap領域の追加
まずはスワップ領域を確認します
sudo swapon --show
何も表示がなければスワップ領域が設定されていません。
スワップファイルを作ります。今回は合計で64GBにしたかったためswapfileを32GBで割り当てました
sudo fallocate -l 32G /swapfile
パーミッションの設定とスワップ領域割当・有効化を行います。
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
最後に追加した領域が反映されているか確認しましょう。
sudo swapon --show