西川和久の不定期コラム
5万円台で生成AIに理想的なVRAM 16GBの「Intel Arc A770」でStable Diffusionが使えるか試してみた
2024年3月6日 06:14
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では作動しなかった)。
作動確認も兼ねて3DMark / Time SpyでiGPUとdGPU比較
さて、本題に入る前に、作動確認も兼ね、iGPUのRadeon 780Mとどれだけの差があるか? 3DMark / Time Spyで比較してみた。
ご覧のように約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
初期起動ではいろいろモジュールなどをインストールするため時間がかかるが、それが終わると自動的にWebブラウザでAUTOMATIC1111がが起動する。え? これで終わり!? と思うほど簡単だった。
ただ、この状態ではモデルなどは何も入っていないので、CivitaiやHuggingfaceからCheckpointやLoRAなどをダウンロードして、[AUTOMATIC1111ベース]/models/下の該当フォルダへ入れておく。これで準備は完了だ。
ベンチマークテスト結果など
まずいつもの“512×768:神里綾華ベンチマーク”をやってみた。実行すると50秒。4.27it/s。先のサイトにあるデータと比較すると、GeForce RTX 3060(12GB)少し遅い程度だろうか。
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
OpenVINO入りAUTOMATIC1111もインストールは同じだが、オプションは付けず、webui-user.batで起動する。さらに「Script」で「Accelerate with OpenVINO」を選択した上で「Select a device」で「GPU」を選択する。起動時毎回この設定が必要なので面倒であるが、これをしないとOpenVINOを使用しない。
git clone https://github.com/openvinotoolkit/stable-diffusion-webui.git
webui-user.bat
「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)を個人的にはお勧めしたい、というのが今回の結論だ。