Appearance
ComfyUI + AMD ROCm環境構築とWAI-Illustrious導入メモ
結論
ComfyUIはUbuntu + RX7600XT(16GB) + ROCm環境で正常に動作した。最初は公式の「1.1入門」テンプレートでは問題があったが、公式の「SDXLシンプル」テンプレートを使用することで正常に画像生成できた。
WAI-Illustrious v17を導入し、1024×1024で画像生成成功。
今後はこの環境をベースにLoRAやControlNetを追加していく。
環境
PC
- Ubuntu
- AMD RX7600XT 16GB
- ROCm
- Python venv
- ComfyUI最新版
ComfyUI起動
外部PCからアクセスする場合は
bash
python main.py --listenManagerも有効化する場合
bash
python main.py --listen --enable-manager注意
全角スペースが入ると
unrecognized argumentsになる。
Manager確認
起動後
カスタムノードマネージャが表示されれば導入成功。
ここから
- Custom Nodes
- Extensions
などをGUIで管理できる。
モデル導入
最初はIllustrious系を使用。
最終的に選んだモデル
WAI-Illustrious SDXL
v17.0ファイル名
waiIllustriousSDXL_v170.safetensors保存場所
ComfyUI/models/checkpoints/CivitAIについて
最新版は
v17
を使用。
CivitAIはログインしないとDownload URL取得できないことがある。
NSFWと付いている理由
- 学習データにNSFW画像も含まれる
- モデル自体がNSFW画像しか生成できないわけではない
普通のイラストも問題なく生成可能。
ComfyUIテンプレート
最初に試した
1.1 入門では
- モデル読み込みエラー
- WAIとの相性問題?
が発生。
その後
SDXLシンプルテンプレートでは正常動作。
結論
WAIはSDXLシンプルから始めるのがおすすめ。
最初に画像生成できるまで
テンプレート
SDXLシンプルを開く。
Checkpointを
waiIllustriousSDXL_v170.safetensorsへ変更。
実行。
1024×1024画像生成成功。
Promptの理解
最初は
masterpiece
best quality
ultra detailed
...という長いPromptを書こうとしていた。
しかし最近のSDXL/Illustrious系は
かなり短いPromptでも十分。
例えば
1girl,
black hair,
hoodie,
city at night,
rain,
neon lights程度でもかなり綺麗に生成できる。
Positive Prompt
例
1girl,
black short hair,
hoodie,
city at night,
rain,
looking at viewer,
cinematic lightingNegative Prompt
最低限
low quality,
worst quality,
bad anatomy,
bad hands,
extra fingers,
missing fingers,
text,
watermark,
signature程度で十分。
昔のように大量に書く必要はあまりない。
Prompt編集場所
最初に混乱したポイント。
テンプレートでは
Positive Prompt (Text)↓
CLIP Text Encodeという構造。
つまり
左側の
Positive Prompt (Text)がデータ。
CLIP Text Encodeは
データを埋め込みへ変換する処理。
最初はCLIP Text Encodeを書き換えていたため
実行すると元へ戻ってしまった。
正しくは
Positive Prompt (Text)を編集する。
Negativeも同様。
最初に画像生成できたPrompt
SDXLシンプルテンプレートでは、初期状態ではPositive/Negativeともに説明文が入っている。
最初に変更したのはPositive Promptのみ。
Positive Prompt
text
masterpiece,
best quality,
1girl,
black short hair,
hoodie,
city at night,
rain,
neon lights,
looking at viewer,
cinematic lighting,
soft lightingNegative Promptはテンプレートの説明文のままでも問題なく画像生成できた。
text
These nodes are where you include the text for:
- what you want in the picture (Positive Prompt, Green)
- or what you don't want in the picture (Negative Prompt, Red)
This node type is called a "PrimitiveNode" if you are searching for the node type.その後、Negative Promptは後から適切なタグへ変更していく予定。
この時点で学んだことは、Illustrious系では昔のStable Diffusion 1.5時代のような大量の「おまじないPrompt」は必須ではなく、比較的短いPositive Promptでも十分綺麗な画像を生成できるということ。
<img width="1024" height="1024" alt="Image" src="https://github.com/user-attachments/assets/3e4727a7-3f30-478b-9575-2cfccf2a9055" />
学んだこと
テンプレートでは
Positive Prompt (Text)が「データ」であり、
CLIP Text Encodeは「処理」。
ComfyUIでは
「文字列を書き換える」のではなく
「データをノード間で流す」
という考え方になっている。
この考え方を理解したことで、ComfyUI全体の構造がかなり理解しやすくなった。
ComfyUIの考え方
ノードは
データ
と
処理
に分かれる。
例
データ
- Prompt
- Negative Prompt
- Checkpoint
処理
- CLIP Encode
- KSampler
- VAE Decode
- Save Image
データがノード間を流れているだけ。
プログラムの関数に近い考え方。
Refinerについて
SDXLテンプレートは
Base
↓
Refiner
↓
VAEという構造。
しかし
WAIには専用Refinerは存在しない。
現在は
Baseにも
Refinerにも
同じ
waiIllustriousSDXL_v170.safetensorsを設定している。
これは動作はする。
ただし画質向上効果はほぼない。
今後
Refinerを使わない場合
Base KSampler
↓
VAE Decode
↓
Save Imageだけにする予定。
これでワークフローがかなりシンプルになる。
解像度
最初
1024×1024
で生成成功。
RX7600XT 16GBなら
概ね
| 解像度 | 目安 |
|---|---|
| 1024 | 快適 |
| 1344 | 快適 |
| 1536 | 問題ない可能性高い |
| 2048 | ギリギリ |
最終的に4K画像が欲しい場合は
1024生成
↓
Hires Fix
↓
2048
↓
Upscaler
↓
4096という流れが一般的。
GPUクラッシュ
一度
Memory access fault by GPU
Fatal Python errorでPythonごと落ちた。
原因は
ROCm側のGPUクラッシュと思われる。
Promptが直接原因というより
ROCmまたはRefiner構成が影響している可能性が高い。
復旧方法
Ctrl+C
↓
ComfyUI再起動
↓
必要ならPC再起動NVIDIAとの比較
現状の印象
AMDでも十分動く。
しかし
- CUDA優先開発
- 情報量
- トラブル対応
- 新機能
はNVIDIAが圧倒的に有利。
ただし
RX7600XT 16GBでも
通常の画像生成用途には十分。
当面はこの環境を使う予定。
今後のロードマップ
① Promptを理解する
↓
② LoRA導入
↓
③ Hires Fix
↓
④ ControlNet
↓
⑤ IPAdapter
判断・感想
ComfyUIはGUIツールというより「ノードプログラミング環境」に近い。
最初は非常に分かりづらかったが、
- データノード
- 処理ノード
という考え方を理解すると一気に理解しやすくなった。
テンプレートを編集するよりも、
最終的には自分専用の最小構成ワークフローを作る方が理解も深まりそう。
また、SDXLシンプルテンプレートの方がWAIとの相性が良く、今後はこれをベースに育てる予定。
未検証・注意点
- WAIでRefinerを完全に削除した最小構成ワークフローは未作成
- GPUクラッシュ原因がROCmなのかRefinerなのかは未確定
- LoRA追加後のVRAM使用量は未確認
- Hires FixやControlNet追加時の安定性は未検証
- ROCm環境固有のクラッシュ回避方法は今後調査予定