Windows上のComfyUIでStable Cascadeを試す(推奨VRAM 8GB)
Last update 2-25-2024
※VRAM 6GBでLiteモデルが、8GBでLargeモデルが利用できそうです(少々ギリギリかも)。
※本記事では実際の手順を示していますが、通常の記事よりも説明を省略しています。
▼ 0. 本記事について
0-1. 概要
現在、Stable Cascadeで生成を行う記事を2つ公開中です(後述)が、ComfyUIで生成する記事を見かけました。ComfyUIは独特な設計のため取っつきが悪いかもしれませんが、実績のあるツールで扱った方が有利だと思いますので、さっそく試してみます。
上記の記事(と関連記事)にも十分な情報がありますので、ぜひご覧ください。
0-2. 筆者の過去の記事
ご参考まで、下記の記事にて別の方法の手順を説明しています。
a. GUI版(VRAM 12GB以上)
b. CUI版(VRAM 6GB以上)
▼ 1. ComfyUIのインストール
1-1. 参考:過去の記事
下記の記事をご覧いただく必要はありません。そちらでは「git clone」を使用していました。
1-2. 動作環境
動作の確認は、VRAM 12GBのGeforce RTX 3060、CUDA Toolkit 11.8が導入されたPCで行いました。最低でもVRAM 6GBが必要で、8GB以上を推奨します。本記事で利用するポータブル版では、Pythonは必要無さそうです。
1-3. ComfyUIの公式リポジトリ
https://github.com/comfyanonymous/ComfyUI
1-4. ダウンロード~インストール
公式リポジトリにアクセスして、「Installing」→「Windows」にある「Direct link to download」からポータブル版をダウンロードします(約1.3GB)。
次に、これを適当なディレクトリに解凍(7z形式に対応したツールが必要)します。
1-5. 参考:アップデートの方法
アップデートは、「update」ディレクトリ内の「update_comfyui.bat」を実行するだけです。試しに、インストール後すぐに動作を確認してみました。
stashing current changes
nothing to stash
creating backup branch: backup_branch_2024-02-24_23_56_12
checking out master branch
pulling latest changes
Done!
▼ 2. Stable Cascadeのための準備
2-1. モデルの選択
先に知っておいていただきたい点があります。モデルはSTAGEA、B、Cに分かれていて、BとCのモデルは4種類あります。なお、生成時の処理はC→B→Aの順です。
STAGE BとCのモデルが4種類ずつあるのは、LargeモデルとLiteモデルそれぞれにfloat32版とbfloat16版があるためです。Liteモデルは品質が劣る(パラメーター数が異なる)代わりにコンパクトです。float32とbfloat16はデータの精度で、見た目の品質はほとんど変わりません。
最も重要な点は、モデルによってVRAM使用量が変わることです。下記を参考に適切なモデルを選択します。STAGE CでLiteモデルを選ぶと、ぱっと見で分かるほどに品質が落ちるので留意してください。
VRAM 6GB:stage_b_lite_bf16 と stage_c_lite_bf16
VRAM 8GB以上:stage_b_bf16 と stage_c_bf16
2-2. モデルのダウンロード
まずは https://huggingface.co/stabilityai/stable-cascade/tree/main にアクセスします。次に、一つずつ確認しながらStable Cascadeのモデルをダウンロードして設置します。どれを選択するかは、一つ前の項を参考にします。基本的にbf16の方を選んでください。
STAGE A
stage_a.safetensors (73.7 MB)
→「ComfyUI\models\vae」に移動する。
STAGE B
stage_b.safetensors (6.25GB)
stage_b_bf16.safetensors (3.13GB)
stage_b_lite.safetensors (2.8GB)
stage_b_lite_bf16.safetensors (1.4GB)
→いずれかを「ComfyUI\models\unet」に移動する。
STAGE C
stage_c.safetensors (14.4GB)
stage_c_bf16.safetensors (7.18GB)
stage_c_lite.safetensors (4.12GB)
stage_c_lite_bf16.safetensors (2.06GB)
→いずれかを「ComfyUI\models\unet」に移動する。
CLIP (Text encorder)
text_encoder\model.safetensors (1.39GB)
→「ComfyUI\models\clip」に移動する。
2-3. ワークフローの入手
ComfyUIで生成を行うためには、ワークフロー(回路図のようなもの)が必要です。Stable Cascade用のワークフローは、ComfyUIの作者が公開しているものを利用します。
参考(ComfyUI作者のコメント):
https://github.com/comfyanonymous/ComfyUI/issues/2785#issuecomment-1949722389
下記リンク先へアクセスして、「stable_cascade_workflow_test.json」の「Raw」を右クリックしてダウンロードします。置き場所は特に決まっていません。
https://gist.github.com/comfyanonymous/0f09119a342d0dd825bb2d99d19b781c
▼ 3. ComfyUIの起動から生成まで
3-1. ComfyUIの起動
準備が整ったので、早速生成を始めます。「run_nvidia_gpu.bat」(ポータブル版の場合)を実行してComfyUIを起動します。Windows上からバッチファイルを直接ダブルクリックしても構いません。
ComfyUIが起動するとWebブラウザが開くようですが、開かない場合はコマンド プロンプトの表示に従って http://127.0.0.1:8188/ 等のURLへアクセスします。
3-2. ワークフローの読み込み
先ほどダウンロードしたファイル「stable_cascade_workflow_test.json」を、ComfyUIの画面にドラッグ&ドロップします。「Load」のボタンから読み込んでも構いません。
続きの説明は後にして、生成画面を先に掲載します。ワークフローとは、このように様々なノードを線で結んだ状態を記録したものです。ワークフローを自由に構成できることが、ComfyUIの最大の特徴です。
3-3. レイアウトの変更
全てのワークフローを画面に表示することは困難を伴いますので、せめて使いやすいようにレイアウトを変更してみます。ブラウズ画面の倍率も変更すると良いでしょう(Ctrlを押しながら+と-で変更できる)。
ノード(それぞれのボックス)は、ドラッグして好きな位置に移動できる。
画面全体は、空白地帯をドラッグして移動できる。
下記画面は適当に動かしただけです。この状態は、生成した画像にも記録されます。先ほどはワークフローのファイルを読み込みましたが、画像ファイルを読み込むと生成時の状態が再現されます。
3-4. ノードの設定
生成を実行する前に設定を確認します。説明の都合上、レイアウトを若干変更しています。
下記画面の左上のノードで、左右の矢印をクリックしてSTAGE Bのモデルのファイルを正しく選択します。続けて、下のSTAGE CとCLIPも選択します。2-2.での選択により、STAGE BとCのファイル名が異なります。プロンプト欄は、上がポジティブプロンプト、下がネガティブプロンプトです。
下記画面の右下のノードで、左右の矢印をクリックしてSTAGE Aのモデルのファイルを正しく選択します。生成画像のサイズを変更したい場合は、widthとheightを変更します。他はそのままで構いません。
3-5. 生成の実行
設定が終わったら「Queue Prompt」をクリックします。進捗状況が控えめに表示され、最後に生成した画像が表示されます。
生成した画像は、「ComfyUI\output」下に保存されます。
3-6. 終了の方法
起動時に開かれたコマンド プロンプトのウインドウで「Ctrl + C」を押すか、おもむろにコマンド プロンプトの画面を閉じてください。
▼ 4. TIPS
仕様における留意点
ComfyUIは動作が最適化されているため、変更の無かったフローを実行しない事があります。おそらく、これに起因して生成しない時があるので(0秒で完了してしまう)、現状の設定で再度生成を行いたい場合はComfyUIを起動し直す必要があります(終了時の状態から始まります)。もちろん、シード値等を変更すれば生成されます。
画像の読み込み
先に説明したとおり、生成した画像にもワークフローが含まれています。ここでは作業を再開する想定で、画像からワークフローを読み込んでみます。
まず、「Clear」をクリックしてワークフローを消します。視覚的に分かりやすくするだけなので、これ以降は行わなくても構いません。
次に、生成した画像を直接ドラッグ&ドロップすると、ワークフローが表示されます。各ノードの選択や値も再現されるので、続きをすぐに始めることができます。
KSamplerの設定
下記画面にて、左側はSTAGE C、右側はSTAGE BのKSamplerです。簡単に補足します。
シード値(seed)
一般的なシード値は、STAGE Cのものが該当します。STAGE Bのシード値のみを変更すると、全体的にわずかな変化が見られます。
よって、STAGE Bのシード値を固定にして再現性を確保したり、逆にSTAGE Cのシード値を固定にしてベストの画像を追求する…といった活用方法が考えられます。シード値の変更方法(control_after_generate)
randomize … 生成のたびに値をランダムに変更する
increment, decrement … 生成のたびに値を増減する
fixed … 値を変更しない(固定)ステップ数(steps)
基本的にはそのままとします。生成にかかる時間と品質に影響します。CFGスケール(cfg)
基本的にはそのままとします。変化を確認したい場合は、STAGE C側のみ変更してください。低すぎても高すぎても品質が落ちます。サンプラー(sampler_name)とスケジューラー(scheduler)
それぞれに特徴があり大きな影響を与えるのですが、基本的にはそのままとします。変化を確認したい場合はシード値を固定にして、STAGE C側のみ片方ずつ変更してみてください。なお、最適なCFGスケールやステップ数が異なる場合があります。デノイズ(denoise)
基本的にはそのままとします。
▼ 5. VRAM使用量
モデルの選択によってSTAGE CとBのVRAM使用量が、画像のサイズによってSTAGE AのVRAM使用量が変化します。参考まで、GeForce RTX 3060でこれらの値と実行時間を確認してみます。画像のサイズは1024x1024です。
前提として、GPUメモリ(専用GPUメモリと共有GPUメモリの和)は、ComfyUI起動前に0.9~1.0GB、生成開始前に1.1~1.2GBを使用していました(毎回そうなるように調整)。不要なアプリケーションを終了しておけば、VRAM使用量はさらに下がることになります。
5-1. stage_b_bf16 + stage_c_bf16
最大で8.0GBです。VRAM 8GB以上の環境向けで、8GBの場合は事前に不要なアプリケーションを閉じておく必要がありそうです。41.0秒かかりました。
5-2. stage_b + stage_c
最大で8.0GBです。68.8秒かかりました。見た目の品質はほとんど変わらないため、こちらを選択するメリットは無いと思われます。
5-3. stage_b_lite_bf16 + stage_c_lite_bf16
最大で6.3GBです。VRAM 6GBの環境向けですが、実行時はできるだけアプリケーションやウインドウを閉じておく必要がありそうです。17.7秒かかりました。
5-4. stage_b_lite + stage_c_lite
最大で6.3GBです。16.2秒かかりました。こちらを選択するメリットは特に無いと思われます(実行時間は何らかの誤差)。
▼ 6. おまけ
生成画面の画像
記事中の、ComfyUIの画面に出てきた画像です。プロンプトが同じなので、内容はほとんど変化しません。プロンプトは「anime style, watercolor, close up, 1girl, big eye, pigtail, sky blue floral skirt, white ribbon blouse, gray pigtails, farm rural village, spring flower, sitting, hold cat, meadow, distant mountain,」と「teeth」です。
▼ 7. その他
私が書いた他の記事は、メニューよりたどってください。
noteのアカウントはメインの@Mayu_Hiraizumiに紐付けていますが、記事に関することはサブアカウントの@riddi0908までお願いします。
この記事が気に入ったらサポートをしてみませんか?