Stable Diffusionの登場で画像生成が話題になってから長い時間が経ち、今では多くのモデルが存在し、利用者たちの技術も成熟しつつあるようです。
画像生成には以前から興味はあったのですが、普段業務に使用しているPCを使うのは少々問題があるので、昔使用していたRadeon RX580を引っ張り出して、古いGPUでもどれくらい使用できるのか検証してみようと思います。
※注意※(古いGPUでも綺麗なイラストを生成できるかの検証であり、ベンチマークのような条件を統一した性質を持った検証ではありません。ご了承ください。)
検証環境
OS | Windows 11 |
CPU | Ryzen 5600G |
GPU | Radeon RX580(8GB) |
RAM | 32GB |
今回は、Stability Matrixを使用して、ComfyUIで画像生成を行います。NVIDIAではないのでCUDAは不可、型番が古いためROCmやZLUDAも使用できないようです。そのため、今回はDirectMLを使用して、Stable Diffusion 1.5(以下 SD 1.5)とStable Diffusion XL(以下 SDXL)での画像生成を検証します。
使用モデルは絵が綺麗という理由で「MeinaMix V12 Final」と「Animagine XL 4.0」を使用することにしました。生成プロンプトは共通してポジティブに「1girl, sky, smile」、ネガティブに「NSFW」を使用します。その他、モデルに推奨設定があれば記述します。
Stability Matrixの準備
- Stability Matrixのポータブル版をダウンロードして、アプリケーションを起動します。
- 『パッケージ』で「パッケージの追加」からComfyUIを選択してDirectML版をダウンロード。
- 『Model browser』でMeinaMix V12 Final(SD1.5)とAnimagine XL 4.0(SDXL)をダウンロードします。
- 『パッケージ』でComfyUIをLaunch。
- 『Inference』でモデルを選択。プロンプト等を設定したらGenerateを押して待ちます。
画像を生成してみる
デフォルト

Model:MeinaMix V12 Final
Sampler:Euler Ancestral
Scheduler:Normal
Steps:20
CFG Scale:5.00
幅1024x高さ1024
Seeds:1593531128
Prompt:
1girl, sky, smile
Negative Prompt:
NSFW
生成時間:3分13秒
プロンプトの記述のみで、それ以外は一切設定していません。画像は無事に生成できましたが、ぼやけていて美麗なイラストとは言い難いですね。出来を高めるために次はネットの情報をもとに調整を入れてみます。
MeinaMix 設定

Model:MeinaMix V12 Final
CLIP Skip:2
Sampler:LMS
Scheduler:Karras
Steps:40
CFG Scale:6.00
幅512x高さ512
HiresFix
-Upscaler:RealESRGAN_x4plus_anime_6B
-Upscale by 2.00
-Steps 30
-Denoising Strength 0.50
Face Detailer
-BBox Model:face_yolov8m
-Segmentation Model:None
-SAM Model:None
-Steps:2
※以下デフォルトのため省略※
Seeds:1593531128
Prompt:
1girl, sky, smile,masterpiece, best quality, detailed eyes, high detail
Negative Prompt:
NSFW, (worst quality, low quality:1.4), (zombie, sketch, interlocked fingers, comic), EasyNegative,negative_hand,verybadimagenegative_v1.3, By bad artist,bad_prompt_version2,ng_deepnegative_v1_75t
生成時間:6分29秒
ステップ数を大幅に増やしたことでかなり綺麗に出力できました。最初の40ステップでもいい出来になるのですが、アップスケーリングを行ってからさらに進めることで細部まで綺麗に。それでも顔の出来がイマイチなことがあるのでFace Detailerを入れています。
また、ネガティブプロンプトが大幅に増えていますが、本モデル作者による推奨プロンプトと、ダウンロードしたTextual Inversionの記述によって出力の品質を確保しています。
Animagine XL 4.0 設定

Model:Animagine XL 4.0
CLIP Skip:2
Sampler:LMS
Scheduler:Karras
Steps:25
CFG Scale:6.00
幅1024x高さ1024
Seeds:1593531128
Prompt:
1girl, sky, smile, masterpiece, high score, great score
Negative Prompt:
lowres, bad anatomy, bad hands, text, error, missing finger, extra digits, fewer digits, cropped, worst quality, low quality, low score, bad score, average score, signature, watermark, username, blurry, NSFW
生成時間:7分21秒
SD 1.5からSDXLになったことでプロンプトの理解度がぐっと上がりました。モデルが変更されているので単純に比較はできませんが、全身や細部の描写はこちらの方が上手な気がしました。特に、UpscalerやFace Detailerを使用して修正しなくても、品質が安定している点に進化を感じます。
プロンプトはこちらが指定したもの以外は、モデルの推奨プロンプトのみです。SD 1.5を使用していたMienaMixと比べると処理が重く、生成に時間がかかる印象ですが、それを除けばとても使いやすいモデルだと思います。
思ってたよりも使える
古いGPUでも簡単に画像生成ができてしまいました。発売からかなり時間が経っていますが、画像生成に使えないことはなさそうです。ただ、処理速度や搭載VRAM量を考えると、スペックとしては実用的ではないでしょう。
VRAM量は重要、RAMも重要
今回の検証において、画像生成モデルのデータは、SSDからRAMにロードされ、そこからVRAMへと展開されるという流れでした。この一連の流れで、メモリ使用量が増えるのは各モデル使用時の初回ロードのみと思っていましたが、「HiresFix」や「FaceDetailer」など別ステップでも各モデルがロードされるので、何度かメモリの使用量が増える場面が見受けられました。
VRAMはモデルをロードした時点で、搭載している8GBを占領され、入りきらない分は共有GPUメモリとして、RAM側の使用量が増えるという状況でしたので、VRAMのみで展開するには、最低でも12GBほど必要なのだと思います。
RAMについては、バックグラウンドでプログラムを動かしていない状況なら32GBほどあれば足りると思いますが、作業裏で生成するのであれば64GBに増設する、もしくは仮想メモリを大きめに確保しておくとよいかもしれません。
画像生成では、いかにモデルをロード・展開するスペースを確保するかが重要であり、メモリ容量を確保することが必須です。より速度を重視するのであれば、VRAM搭載量の多いGPUを選択すべきと言えるでしょう。
SSDの容量も重要
今回はポータブル版ということで容量が足りなければ移動させることが可能でしたが、100GBほど用意した結果、最終的に使用したのは60GBほどでした。
生成モデル自体は、軽いもので2GB、重いものでも6GBほどでしたが、それ以外にもUpscalerやFaceDetailer、controlNetやLoraなど補正してくれるモデルなどを入れると、思っていたより容量が必要でした。本格的にやろうとすると、様々なモデルを試すことになると思いますので、容量はできる限り大きく確保しておきましょう。
また、モデルのロードでは大容量のデータを読み込むことになりますので、できるだけ速いSSDを使用するとロードにかかる時間を短縮できると思います。SATAよりもM.2、Gen4よりGen5を選べれば理想ですが、今回の検証では、SATA接続の500MB/sの読み出しでも何とかなったので、そこまでシビアに考えなくてもいいです。機材を揃えるのであればGPU側に支出するのがいいと思います。
VRAM 8GBだとSDXLでメモリが限界
SD 1.5ではこれといった問題は起きなかったのですが、SDXLでは25 Stepの処理が終わった後に、「VAE Encode」もしくは「VAE Decode」で引っかかって出力されないことが多々ありました。エラーメッセージには「十分なGPUメモリがない」と書いてあるので、やはり8GBでは足りないのでしょう。
「せっかく画像生成したのに出力できない…」と諦めてしまいそうですが、そんなときには「Generate Image」の右隣にある「Generate with current seed」ボタンを押すと、同じシード値で再試行できます。設定を何も変更していなければ、続きから処理を続けてくれます。何度か試していると出力できることがありますので、根性で出力しましょう。
それでもSDXLの方が優秀
VRAMが少ないと動作させるのもやっとなSDXLですが、SD 1.5と比べると少ないプロンプトで希望している構図が出力でき、また人体構造などの崩れも少ないです。特に、SD 1.5で複数人出力すると体が融合してくっついてしまうことがありますが、SDXLであれば大抵の場合は分離して出力されます。
もちろん、違和感のない出力ばかりではありませんが、SD 1.5と比べると頻度は少なく、時間と労力をかけたのに出力ミスが起きたという事態は大幅に減ります。SDXLで出力できそうならこちらを選ぶのがいいと思います。
RX580の問題点
画像が生成できただけで結果としては満足なのですが、生成できてしまったからには、生成に使用する際の問題点も挙げておきたいと思います。前時代的なスペックなので当たり前といえば当たり前なのですが…。
生成速度
すでに2017年の発売から8年ほど経つGPUだけあって、処理速度は現代のGPUと比べて大幅に劣ります。「画像生成をやってみたい」というニーズだけなら叶えられますが、実用性はないと言っていいでしょう。
画像生成ではトライアンドエラーを繰り返して、よりよい結果を出力する必要があるので、試行1回にかける時間が少ないほど、早く結果に辿り着くことができます。遅いGPUで回数を増やせば増やすほど、後れを取ることになるので、本格的にやるのであれば最新GPUを使用して10秒以内で出力するのが望ましいかと思います。
VRAM容量
抱えている問題が生成速度だけであれば、プログラムを延々と回し続けて、生成させ続けるという使い方もできるのですが、それをするにはやはりVRAMが足りないようです。先述した通り、出力時に引っかかることがあるので、その場合の処理をプログラムもしくは人力でやる必要があります。
ただでさえ生成速度も遅いのに、出力でエラーを吐かれては手がかかって仕方ないので、もしやりたい場合は、たとえ処理速度が遅くとも、VRAM容量の多いGPUで行うべきでしょう。もっと本格的にやりたいのであれば、NVIDIAのミドル~ハイエンドグラボを使用するのが一番です。
目的は達成できた
実用性の面では現在のGPUとは比較にならない、スペックに不安のあったRX580でしたが、それでも今回の目的である「画像を生成する」という目標は達成できました。VRAM容量としてはギリギリのラインとはいえ、最終的に出力できているので、使用しようと思えばできるレベルと言えそうです。
参考・引用
使用モデル
MeinaMix V12 Final
Animagine XL 4.0
参考
AI画像らぼ 様

としあきdiffusion Wiki* 様

カズヤ弟@ゲーム実況&生成AI 様
