西川和久の不定期コラム

5万円台で生成AIに理想的なVRAM 16GBの「Intel Arc A770」でStable Diffusionが使えるか試してみた

 2024年3月2日、「AUTOMATIC1111」の最新版、v1.8.0がリリースされた。新機能一覧を眺めていると「Better IPEX support」の文字が。早速編集担当に「Intel Arc A770」を送って頂き試すことに。

Intel ArcシリーズでStable Diffusionを使う方法

 Intel Arcシリーズは、VRAM 16GBの上位モデル、A770でも価格はざっくり5万円前後とリーズナブル。対してNVIDIAだとGeForce RTX 4060 Ti 16GBの価格は8万円以上(10万円超えるものも/価格.com調べ)。つまり同じVRAM容量でも1.6倍(以上)の開きがある。

 生成AI画像に限らず、AI関連はGPU性能に加え、VRAM容量は重要なポイントの1つ。できれば安価で大容量のものが欲しい。では、このIntel Arc A770を使ってどこまでStable Diffusionが使えるのか? というのが今回の趣旨となる。

 まず、Intel ArcシリーズでStable Diffusionを動かすには2つの方法について紹介しておこう。1つは「IPEX」、もう1つは「OpenVINO」だ。

 何がどう違うだが、簡単に説明すると、IPEXはCUDAのIntel版的な感じであり、Intel Arcカスタム版pytorchを使い高速化する。Intel純正版はここにあるが、ビルドが必要なので、一般的にはビルド済みのこちらを使うようだ。

 もう一方のOpenVINOは、(少し違うが)TensorRTのIntel版と言えば分かりやすいだろうか。以前、TensorRTを使いStable Diffusionを高速化する話をしたが、モデルごとに変換する必要があり、非常に使いにくかった。OpenVINOもモデルや設定ごとにビルドしなければならず、若干IPEXより速いとは言え、使い勝手はあまりよくない環境となる。

 AUTOMATIC1111はv1.7.0から試験的にIPEXに対応していたものの、v1.8.0で「Better IPEX support」となり、MINISFORUMのミニPC「UM780 XTX」のOCuLinkでA770を接続しテストしたのが、今回のレポートとなる(ちなみに、USB4接続のeGPU Boxでは作動しなかった)。

「UM780 XTX」のOCuLinkでA770を接続

作動確認も兼ねて3DMark / Time SpyでiGPUとdGPU比較

 さて、本題に入る前に、作動確認も兼ね、iGPUのRadeon 780Mとどれだけの差があるか? 3DMark / Time Spyで比較してみた。

デバイスマネージャー。Intel Arc A770を無事認識
GPU-Z
3DMark / Time Spy(Radeon 780M)結果は3,306
3DMark / Time Spy(A770)結果は12,349

 ご覧のように約3.7倍の差が出ている。このスコアだとGeForce RTX 3060より上、GeForce RTX 4060 Tiより下……と言った感じだろうか。VRAM 16GB搭載だがクラス的にはミドルレンジに相当となる。

AUTOMATIC1111をIntel Arcシリーズ用にインストール

 インストールは思ってた以上に簡単。事前に準備するものは以下の通り。Stable Diffusionに限らずAI系では必ず使うので、今回試さないにしても、インストールしておいて損はないだろう。

Windows版Git
Miniconda (Miniconda3 Windows 64-bit)

 まずMincondaを使いバージョン指定でPythonの環境を作る。起動すると(base)となる。

(base) C:\> conda create -n a1111 python=3.10.6
(base) C:\> conda activate a1111
(a1111) C:\>
※環境名はお好みで

 次にAUTOMATIC1111用のPython環境を作り、そこへAUTOMATIC1111をgit clone、--use-ipexオプションを付け、webuiを起動する。

(a1111) C:\> git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui A1111
※インストールするフォルダ名はお好みで
(a1111) C:\> cd A1111
(a1111) C:\A1111> .\webui.bat --use-ipex
初期起動ではいろいろモジュールなどをインストールため少し時間がかかる
--use-ipexオプションでAUTOMATIC1111 v1.8.0起動!

 初期起動ではいろいろモジュールなどをインストールするため時間がかかるが、それが終わると自動的にWebブラウザでAUTOMATIC1111がが起動する。え? これで終わり!? と思うほど簡単だった。

 ただ、この状態ではモデルなどは何も入っていないので、CivitaiやHuggingfaceからCheckpointやLoRAなどをダウンロードして、[AUTOMATIC1111ベース]/models/下の該当フォルダへ入れておく。これで準備は完了だ。

ベンチマークテスト結果など

 まずいつもの“512×768:神里綾華ベンチマーク”をやってみた。実行すると50秒。4.27it/s。先のサイトにあるデータと比較すると、GeForce RTX 3060(12GB)少し遅い程度だろうか。

50秒。4.27it/s
VRAMは5.5GB使用

 SDXLを常用するのにはストレスかもしれないものの、SD 1.5なら問題ない生成速度だ。ほかのモデルで試したところ、SDXL Turbo系はOK、SDXLは絵は出ても妙な雰囲気。Upscaleは少し倍率を上げるとうまく行かなかったり……CUDAと同レベルな雰囲気はない。

 なんの制限があるのか細かく調べていないが、とりあえずLoRA指定のSD 1.5ベンチマークテストは完走した的な感じだ。

Intel ArcシリーズでStable Diffusionが使えるほかのアプリ

 AUTOMATIC1111 v1.8.0以外で、Intel Arc A770が使えそうなアプリを検索すると、SD.NetとOpenVINO入りAUTOMATIC1111を発見した。前者はIPEX、後者は名前の通りOpenVINO。どちらもv1.7.0ベース。SD.NextはUIは異なるものの、AUTOMATIC1111のフォークとのこと。先のMinicondaで個別のPython環境を作りインストールした。

 まずSD.Net。これはv.1.8.0とほぼ同じ。git cloneして--use-ipexオプションを付けて起動すれば良い。速度的にはIPEX作動のv1.8.0と変わらなかった。

SD.Next(AUTOMATIC1111のFork/IPEX)
git clone https://github.com/vladmandic/automatic
webui.bat --use-ipex
SD.Next起動直後

 OpenVINO入りAUTOMATIC1111もインストールは同じだが、オプションは付けず、webui-user.batで起動する。さらに「Script」で「Accelerate with OpenVINO」を選択した上で「Select a device」で「GPU」を選択する。起動時毎回この設定が必要なので面倒であるが、これをしないとOpenVINOを使用しない。

OpenVINO入りAUTOMATIC1111
git clone https://github.com/openvinotoolkit/stable-diffusion-webui.git
webui-user.bat
「Script」で「Accelerate with OpenVINO」を選択。「Select a device」で「GPU」を選択
OpenVINO入りAUTOMATIC1111。起動時、「Script」で「Accelerate with OpenVINO」を選択。「Select a device」で「GPU」を選択

 このScriptの項目を見れば分かると思うが、モデルだけでなくSampling methodを変更した時にもリビルドがかかり(しかもよく使うDPM++ SDE Karrasがなかったりする)、SD 1.5だと筆者の試した環境で約1分半ほど待たされる。一旦ビルドが終われば、あとは通常の速度になり、IPEXより少し速く生成できる。

 とは言え、モデルや設定を変えるたびにリビルドでは効率が悪い。定型業務か何かでずっと固定ならいいのだろうが……。


 以上、Stable Diffusion WebUI(AUTOMATIC1111)の最新版v1.8.0でIntel Arc A770を使って見た。ご覧のように動くのには動くが……という微妙な状況。日頃からCUDA一色ではと思っている筆者にとっても残念な結果となった。

 既にIntel Arcシリーズをお持ちであればお試しで使ってもいいだろう。一方、新規購入ならVRAMが4GB少なくなってしまうが、Intel Arc A770と同価格帯のGeForce RTX 3060(12GB)を個人的にはお勧めしたい、というのが今回の結論だ。