Intel ARC A750でStable Diffusionを動かす(WSL編)
動作環境
Intel Core i5-12400,Mem32GB, SSD 1TB程。本来録画ファイルエンコード用PC。これに650W電源を載せた
ソフト
現在AIお絵描きに良く使われているAUTOMATIC1111/stable-diffusion-webuiは主にNvidia CUDA向け環境なのでoneAPI環境のIntel ARCではそのまま動かない
DirectML版はすんなり動くが10倍遅いので、今回はIntel ARC対応のAUTOMATIC1111/stable-diffusion-webuiをフォークした vladmandic/automatic、通称SD.nextを使う
oneAPIはLinux版開発が先行しており、記事を書いた時点ではSD.nexはLinux OSまたはWSLでしか動かなかった。
今回はWSLで動かした。昔WSL1とか2とか言ってたけど今はWSLと言えばWSL2みたい
インストール手順
最初にPCのBIOS(UEFI)でCPUの仮想化機能を有効にした後は
以下の記事に従ってWSLを入れてUbuntu22.04を入れてIntel開発環境を入れると動いた。修正するところは殆ど無い。ここでやってることを箇条書きしておくと
・Windowの「仮想マシン プラットフォーム」と「Windows サブシステム for Linux」をONにする
・WSLカーネルをアップデートする
・Windows ストアから Ubuntu 22.04 をダウンロードしてセットアップする
※このあたりで「WSLにWindowsのPATHを引き継がない」をやった
ここまでWindowsOSでの作業。ここからWSLに入っての作業
・Intel OneAPI BaseKit に必要なパッケージ リストを追加
・Intel OneAPI パッケージをインストール
・Github から Stable Diffusion WebUI SD.Next をインストールしてIntel向けオプション付きで起動
> ./webui.sh --use-ipex
modelやLoraはWindows側のフォルダをシンボリックリンクで参照するようにした
ネットワークドライブはマウントが必要になる
Windows 10の「WSL」でネットワークドライブなどをマウントする:Tech TIPS - @IT
速度など
512x512の絵を10枚描く時間を測るハローアスカベンチマークを試した
RTX3000,4000台は同じ絵になるがA750では多少違う絵になる
計測時間は55.8秒。モデルやLora後一枚目の出画が遅いので2回め以降で計測すると44.7秒。NvidiaだとRTX3060が38.9〜57.78秒、RTX3050が65.21〜74.69ぐらいなので3060よりの中間の速度
機能
SD.next(Stable Diffusion)は本来CUDA用アプリの集合体なのでIntel ARCのoneAPIでは動かないところが出てきたり、CPUに切り替わって遅くなったりする
機能でいうと
Lora使用:OK
ControlNet:一部OK...poseやdepth,reference only など試した。ip-adapterはNG。他にもNGな機能があるかもしれない
Aditailer:OK..インストール時不調だったが更新したら直った
Hires resize:OK..インストール時不調だったが更新したら直った
Tile:NG.機能としては動くがHiresで可能なサイズぐらいまでしか拡大できない
安定性
モデル入れ替えや動作でNGを踏んだとき、メモリ不足後の安定性が低い。WSLごと再起動が無難
再起動はWSLから抜けてPoweShellまたはコマンドプロンプトから
> wsl --shutdown
とする
バージョンなど
最初に動作確認したときのバージョン
Windows Driver.31.0.101.4575
Intel® oneAPI Base Toolkit 2023.1
torch==1.13.0a0+git6c9b55e torchvision==0.14.1a0 intel_extension_for_pytorch==1.13.120+xpu
SD.next: commit 2a259a8455579556ed3affa028c111f5d24afd50/ python3.10.6/torch=1.13.0/
Lora学習は駄目だった
調子に乗ってLora学習環境kohya-ss/sd-scriptsを入れてみたらCPUでしか動かなくて使えない。tensorflowやbitsandbytesのoneAPI対応待ちかな
Lora学習に対応した↓
まとめ
A750買ったからAIお絵描きで遊んでみるか、という方はそこそこの速度で遊べる
ただWSLで動かすのでひと手間だったり、学習含めた周辺環境はやはりNvidia有利
最初からお絵描きAI用入門としてグラボ買うならRTX3060/12GBが王道で、A750との比較ならRTX3050/8GBでもいいかもしれない。RT16xx系よりはマシかな…