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を使う

github.com

 

oneAPIはLinux版開発が先行しており、記事を書いた時点ではSD.nexはLinux OSまたはWSLでしか動かなかった。

今回はWSLで動かした。昔WSL1とか2とか言ってたけど今はWSLと言えばWSL2みたい

 

インストール手順

最初にPCのBIOSUEFI)でCPUの仮想化機能を有効にした後は

以下の記事に従ってWSLを入れてUbuntu22.04を入れてIntel開発環境を入れると動いた。修正するところは殆ど無い。ここでやってることを箇条書きしておくと

www.technopat.net

・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学習に対応した↓

tomokz.hateblo.jp

まとめ

A750買ったからAIお絵描きで遊んでみるか、という方はそこそこの速度で遊べる

ただWSLで動かすのでひと手間だったり、学習含めた周辺環境はやはりNvidia有利

最初からお絵描きAI用入門としてグラボ買うならRTX3060/12GBが王道で、A750との比較ならRTX3050/8GBでもいいかもしれない。RT16xx系よりはマシかな…