DCAI
Loading Light/Dark Toggl

【ComfyUI】Flux.1 [dev]の詳しい使い方 GGUFを使った軽量化も紹介

⏱️15min read
📅 2024年11月13日
🔄 2024年11月25日
【ComfyUI】Flux.1 [dev]の詳しい使い方 GGUFを使った軽量化も紹介のメイン画像

これまでにFlux.1 [schnell]の記事を紹介てきましたが、今回はFlux.1 [dev]について解説します。Flux.1 [dev]はFlux.1 [schnell]と比べると生成時間や必要スペックは大きくなりますが高品質なイラストを生成する事ができます。また、Flux.1[schnell]と違いライセンスが非商用ライセンスで開発者やAI研究者向けに設計されたモデルです。生成された出力は、個人、科学、商用目的で使用できますが有料サービスやモデルの販売は禁止されています。ライセンスについて詳しくは🔗Black Forlest Labs公式のライセンスを確認してください。

Flux.1 [dev]の特徴

Flux.1 [dev]は120億パラメーターのガイダンス蒸留モデルのためFlux.1 [schnell]の潜在敵対的拡散蒸留モデル(latent adversarial diffusion distillation)より自由度が高くControlNet等も使う事ができます。

FLUX.1 [dev]のインストール方法

FLUX.1 [dev]を使用する前に、ComfyUIが古いと使えない標準ノードがありますので、最新版にアップデートしましょう。

FLUX.1 [dev]のインストール方法-モデルのダウンロード

FLUX.1 [dev]をインストールするにはベースモデル、テキストエンコーダーなどをインストールする必要があります。順を追ってみていきましょう。以前にFLUX.1 [schnell]のモデルをダウンロードして使用していた場合はベースモデルのみダウンロードしましょう。

FLUX.1 [dev]のComfyUI公式ワークフローの解説

ComfyUI公式ドキュメントにあるFlux Devの節にあるケーキを持った狐娘の画像をダウンロードして、ComfyUIにドラッグ アンド ドロップするか、WorkflowにあるOpenボタンより読み込みましょう。モデルが正しいフォルダーに置かれていれば「Queue」ボタンでダウンロードした画像と同じ画像が生成されます。初回の生成はデータをメモリに読み込む為、かなりの時間が掛かります。では、ここからは各ノードについて解説します。

ComfyUI公式ワークフロー 
Load Diffusion Model

モデルを読み込むノード。通常のLoadCheckpointModelでは読み込めないので注意しましょう。unet_nameはflux1-dev.safetensors、weight_dtypeはdefault(FP16)を使います。ただし生成時間がかかるのでfp8_e4m3fnを使うのも良いでしょう。

DualCLIPLoader

テキストエンコーダーモデルを読み込みます。clip_nameにt5xxl_fp16.safetensorsclip_l.safetensorsを選択しましょう。(PCメモリ不足の場合はfp16の代わりにt5xxl_fp8_e4m3fn.safetensorsを使います。)typeはfluxを使います。

Load VAE

VAEを読み込みます。vae_nameにはae.safetensorsを選択します。

BasicGuider

FluxはSD3と同様SamplerCustomAdvancedに対応する為にBasicGuiderを使います。

FluxGuidance

Flux用のガイダンス(CFG)を設定します。デフォルトの3.5で使用しましょう。

CLIP Text Encode (Positive Prompt)

Fluxではネガティブプロンプトを使わないのでポジティブプロンプトのみを使用します。

EmptySD3LatentImage

Stable Diffusion3用に空のラテントイメージを作っていますが、通常の「Empty Latent Image」でも生成結果は同じになります。widthとheightは後ほど説明する「ModelSamplingFlux」と共有させるために外部化されています。

RandomNoise

生成用のシードを指定します。サンプル画像と同じ結果を希望の場合はnoise_seedを219670278747233にして、control_after_genetateをfixedに設定しましょう。

KSamplerSelect

サンプラーを選択します。基本的にはeulerで問題ありません。

BasicScheduler

サンプリングのスケジュールを設定します。schedulerはsimpleでstepsを20にしています。denoiseは元画像がないので1.00のまま使用します。

ModelSamplingFlux

Stable Diffusion 3で使われているタイムステップスケジューリングシフトのFlux版になります。max_shiftはシフトの最大値の設定です。base_shiftはシフトの基本値を入力しましょう。width / heightは生成画像サイズにします。この例ではデフォルトの値を使います。

SamplerCustomAdvanced

次世代モデル向けサンプラーノード。パラメーターが外部化したことによりより細かな調整が可能となっています。

公式ワークフローをカスタムしてみる

ここでは公式ワークフローを実用的にカスタムしていこうと思います。組み込みたい項目は下記のようになります。

  • 生成時間が長いのでGGUFの導入
  • 複数のLoRAを導入
  • Image chooserカスタムノード:1st Passの結果を確認する為に実装。これにより生成時間が短い1st Passを満足のいく生成が出るまで簡単に再実行できます。
  • 2nd Passの導入でアップスケール
公式ワークフローのカスタムワークフロー 

公式ワークフローをカスタムしてみる-GGUFの導入

まずはGGUFを導入しましょう。下記のリンクよりcity96氏の公開しているFlux.1 [dev]のGGUFモデルの8-bit版をダウンロードしましょう。ダウンロード先はComfyUI\models\unetになります。

前回の記事にてGGUF版のT5-xxlテキストエンコーダーを導入している方は必要ありませんが、導入していない方は下記のリンクよりダウンロードしましょう。ダウンロード先はComfyUI\models\clipになります。

モデルをダウンロードできたら、次にカスタムノードの「ComfyUI-GGUF」が必要になるので、「Custom Nodes Manager」を使ってComfyUI-GGUFを検索してインストールしましょう。

GGUF周りのグラフ 

それでは、ノードを組み込んでいきましょう。「Load Diffusion Model」ノードを先ほどインストールしたComfyUI-GGUFから「Unet Loader (GGUF)」に差し替えましょう。unet_nameにはflux1-dev-Q8_0.ggufを選択します。

次に「DualCLIPLoader」を「DualCLIPLoader (GGUF)」に差し替えます。順番は決まっていませんがclip_name1にclip_l.safetensors、clip_name2に先ほどダウンロードしたt5-v1_1-xxl-encoder-Q8_0.ggufを選択します。

Nodeの場所
  • Unet Loader (GGUF):bootleg > Unet Loader (GGUF)
  • DualCLIPLoader (GGUF):bootleg > DualCLIPLoader (GGUF)

公式ワークフローをカスタムしてみる-LoRAの導入

今回は2つのLoRAを組み込みたいと思います。下記のLoRAをダウンロードします。ダウンロード先は通常のComfyUI\models\lorasになります。(複数のLoRAを使う場合、カスタムノードのrgthreeにあるPower Lora Loader等を使うと便利ですが、DCAIのワークフローでは、できるだけシンプルにしたいので、カスタムノードの使用は最小限にしています。)

LoraLoaderModelOnly周りのグラフ 

Flux.1でLoRAを導入するのはそれ程難しくはなく先ほど差し替えた「Unet Loader (GGUF)」と接続先の「ModelSamplingFlux」の間に「LoraLoaderModelOnly」を入れるだけです。今回は2つ使いたいのでノードを2つ繋げます。

LoRAの読み込む順番もとくにはありませんが、1番目の「LoraLoaderModelOnly」ノードからlora_nameをaidmaImageUprader-FLUX-v0.3.safetensorsを選択して、strength_modelを0.25にします。続いて2番目のノードのlora_nameをsifw-annihilation-fluxd-lora-v013-Beta-000015.safetensorsを選択して、strength_modelを0.85にしましょう。

今回使用するLoRAにはそれぞれトリガーワードがあるので「CLIP Text Encode (Positive Prompt)」の最後に下記のプロンプトを追加します。※トリガーワードを入れなくても使うことはできます。

aidmaimageupgrader, sifwastyle, anime
Nodeの場所
  • LoraLoaderModelOnly:loaders > LoraLoaderModelOnly

公式ワークフローをカスタムしてみる-Image chooserのインストール

DCAIのワークフローではお馴染の「Image chooser」を使います。インストールされたいない方は「Custom Nodes Manager」を使ってImage chooserを検索してインストールしましょう。詳しくインストール方法を知りたい方は下記の記事にて解説しています。

Preview Chooser周りのグラフ 

インストールが完了したらサンプル後の「VAE Decode」の後に「Preview Chooser」を繋ぎます。「Save Image」ノードは最後に使うのでとりあえず邪魔にならないところに移動しておきましょう。

Nodeの場所
  • Preview Chooser:image_chooser > Preview Chooser

公式ワークフローをカスタムしてみる-2nd Passの導入でアップスケール

アップスケール周りのグラフ 

ここからは少し複雑ですが、まずはアップスケールのノードを組み込みましょう。「Load Upscale Model」と「Upscale Image (using Model)」を配置してUPSCALE_MODELをupscale_modelに繋ぎます。「Load Upscale Model」のmodel_nameを4x-UltraSharp.pthを選択します。

続いて「Scale Image to Total Pixels」を配置して「Upscale Image (using Model)」のIMAGEをimageに繋ぎます。upscale_methodをlanczosに、megapixelsを3.00に設定します。

「Scale Image to Total Pixels」を「VAE Encode」に繋いで2nd Pass用にラテントイメージにエンコードします。

2nd Pass周りのグラフ 

次に2nd Passのサンプラーを組み込みます。1st Passの「BasicGuider」「FluxGuidance」「ModelSamplingFlux」「CLIP Text Encode (Positive Prompt)」「BasicScheduler」「SamplerCustomAdvanced」をCtrl + cでコピーしてCtrl + Shift + vでインプットを保ったままペーストします。ペーストしたら好みの場所に配置しましょう。

つづいてコピーした「CLIP Text Encode (Positive Prompt)」の内容を下記の様に書き換えます。

very detailed, masterpiece, intricate details, UHD, 8K

「BasicScheduler」のdenoiseを0.35に変更しましょう。そして「ModelSamplingFlux」のmax_shiftを0.25、base_shiftを0.00に変更します。

VAE Decode周りのグラフ 

1st Passの「VAE Decode」を先ほどと同じCtrl + Shift + v使った方法でコピーして2nd Passの「SamplerCustomAdvanced」のdenoised_outputと繋ぎます。

最後にImage chooserのインストールで避けていた「Save Image」を繋げばカスタム完了です。

「Queue」ボタンで生成をしてみましょう。1st Passの結果が出たら画像を選択して次に進めます。しばらくすれば最終結果が生成されるでしょう。

Nodeの場所
  • Load Upscale Model:loaders > Load Upscale Model
  • Upscale Image (using Model):image > upscaling > Upscale Image (using Model)
  • Scale Image to Total Pixels:image > upscaling > Scale Image to Total Pixels
  • VAE Encode:latent > VAE Encode

公式ワークフローをカスタムしてみる-最終結果

最終結果
Seed:219670278747233

ワークフローはPatreonで公開していますが、有料サポーター様のみ閲覧・ダウンロードが可能となっています。1か月だけでも有料サポーターになっていただければ執筆の励みになりますので、よろしければ入会をお願い致します。

また、ワークフローがダウンロード出来なくでもここまでの解説を見ればご自身でも構成できるので、無理にダウンロードする必要はありません。

おまけ

おまけとして先ほどカスタムしたワークフローを使って今回の記事のアイキャッチのイラストを生成してみましょう。

おまけのワークフロー 

おまけ-LoRAの変更

始めに「LoraLoaderModelOnly」をもう1つ「Unet Loader (GGUF)」の後に追加します。追加したら下記の2つのLoRAをダウンロードしましょう。

ダウンロードが完了したらLoRAの設定を下記のように変更します。(順番はとくに重要ではありません。)

  • Flux.1_Turbo_Detailer.safetensors:0.70
  • aidmaFLUXpro1.1-FLUX-V0.2.safetensors:0.75
  • sifw-annihilation-fluxd-lora-v013-Beta-000015.safetensors:0.90

おまけ-パラメーターの変更

  • プロンプトを下記のプロンプトに書き換えます。
    A masterful highly intricate detailed cinematic photo.
    (In the European medieval fantasy era:1.4), medium close shot of a very cute anime high wizard girl with light-pink-haired and blue-eyes  is looking at viewer. She wears a white and dark-blue magic robe.
    A vibrant diverse people. A wide variety of people faces. 
    The marketplace is offering a wide variety of fruits, vegetables, meats, breads, cheese, spices, flowers, and daily commodities. 
    In the shoppers are adventurers with various armor, swords, magic sticks, and other equipment, as well as residents. 
    In the background is a magnificent castle, and behind the castle is a mountain.
    The weather is blue with a summer-like sky and birds are flying.
    
    A hyper realistic, very detailed, masterpiece, intricate details, 50mm lens shot, soft edge line for girl's face, correct perspective, upper-body
  • widthとheightの値を変更します。widthを1280に、heightを720に変更しましょう。
  • 「RandomNoise」のnoise_seedを303013184412751に変更します。
  • 1st Passと2nd Pass用の「BasicScheduler」のschedulerをbetaに変更します。
  • 1st Pass用の「ModelSamplingFlux」のmax_shiftを1.50に、base_shiftを0.25に変更します。
  • 2nd Pass用の「FluxGuidance」のguidanceを2.0に変更しましょう。
  • 最後に2nd Pass用の「BasicScheduler」のstepsを30に上げれば完了です。

「Queue」ボタンで生成をしてみましょう。1st Passの結果が出たら画像を選択して次に進めます。しばらくすれば最終結果が生成されるでしょう。

おまけ-最終結果

最終結果
Seed:303013184412751

このワークフローもPatreonで公開していますが、有料サポーター様のみ閲覧・ダウンロードが可能となっています。

まとめ

いかがでしたか?Flux.1 [schnell]と比べるとFlux.1 [dev]は生成にかなりの時間が掛かっています。GGUFやFP8版を使ってVRAMの消費を抑えればそれなりに使えることが伝われば幸いです。また、生成の品質はFlux.1 [schnell]と比べるとFlux.1 [dev]の方が良く思えますが、場合によっては低品質の結果が出るときもあります。とくにイラスト関係は実写と比べると品質はそれ程変わらない印象でした。AI生成が苦手としている手の生成も今回のワークフローでは失敗が多い印象です。しかし、Flux.1 [dev]ではControlNetやネガティブプロンプトも使えるので、またの機会にDCAIでも紹介したいと思います。

最後までお読みいただきありがとうございます。

もし少しでも参考になったら、ぜひ「いいね」で応援してください!