(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はぎりぎり耐えれますが積極的に選ぶ理由はありません。
当PCの構成
CPU : Ryzen 7 1700
GPU : Intel Arc A770 Limited Edition (VRAM GDDR6 16GB, Driver 31.0.101.4676)
M/B : ASUS TUF B450M-PLUS GAMING (BIOS Ver.4002)
DRAM : ADATA DDR4-2666 32GB(8GBx4)
SSD : TOSHIBA XG3 NVMe SSD 1TB M.2 2280 PCIe 3.0 x4
Resizable BAR : 有効
Intel公式ではRyzen 3000番台以降でResizable BARが機能するとありましたが、1700でも機能しました。
Intel® Arc™ A-Series Graphics – Desktop Quick Start...
当初はWindows11 WSL2 + Ubuntu 22.04 LTSで動かそうとしたのですが、うまくいかないのでネイティブLinuxで動かします。
大まかな手順は以下
・Ubuntuのインストール
・Intel packageのインストール
・Intel oneAPIのインストール
・SD.NEXTのインストール
・SD-XLの導入
Ubuntuのインストール
OSはUbuntu 22.04.2 LTSにします。
ここで注意ですが最新版のUbuntu 22.04.3 LTSだとうまくいきません。おそらくkernel versionが6.2になったためです。
ダウンロードは以下から
https://old-releases.ubuntu.com/releases/jammy/
インストール手順は省略
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/
SD-XLの導入
StableDiffusionの最新モデルSD-XL 1.0をhuggingfaceからダウンロードします
Base : https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/blob/main/sd_xl_base_1.0.safetensors
Refiner : https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/blob/main/sd_xl_refiner_1.0.safetensors
BaseとRefinerをautomatic/models\stable-diffusion内に移動します。
その後のSD.NEXTの設定はgithubのWikiを確認してください
https://github.com/vladmandic/automatic/wiki/SD-XL
当環境ではDRAM 32GBだったのでmodelを読み込むときに32GB以上使います。
スワップ領域を設定していないとOSがクラッシュしてしまうのでDRAMが少ない方は設定必須です。