当サイトはアフィリエイト広告を利用しています

【ComfyUI】ComfyUIでFLUX.1を頑張って動かしてみよう

ComfyUI
スポンサーリンク

FLUX.1とはなんぞや?
 FLUX.1とはStable Diffusionの開発者たちが立ち上げたBlack Forest Labs(BFL)が開発した
 最新の画像生成AIモデルです。
 既存の主要なAIモデル(MidjourneyやStable Diffusion 3など)を上回る性能を達成したとされ、
 画像生成AIの新たな基準を打ち立てたと評価されています。


なんと!ブログは更新していないくせに、これは使ってみたいと思い、
いろいろと悪戦苦闘したので備忘もかねて

ここでは、
FLUX.1のかんたんな説明と、
FLUX.1 [dev]モデル「flux1-dev-bnb-nf4-v2.safetensors」とComfyUIを使って
ローカルマシンで画像が出力できる所までの流れを記載しておきます。(2024/08/20現在)

1.バリエーション

FLUX.1には以下の3つのバリエーションがあるそうです

1.FLUX.1 [pro]
 最高性能、API経由でのみアクセス可能なので個人利用は難しい。
2.FLUX.1 [dev]
 非商用利用に限定されているが、アプリケーション向けのオープンウェイトモデル。
3.FLUX.1 [schnell]
 商用可能の高速生成に特化したモデル

個人で無料で使うには、FLUX.1 [dev] か FLUX.1 [schnell]の2択ですね。

2.dev と schnell の違い

dev と schnell はどちらがいいんでしょう?
いろいろ調べてみると、

 ・高品質重視: 細部にこだわった高品質な画像が必要な場合は[dev]
 ・速度重視: 大量の画像を短時間で生成する必要がある場合は[schnell]


じゃあ、devがいいかなとなりますが。。。システム要件を見ると

 ・FLUX.1 [dev]は24GB以上のVRAMを推奨します。
 ・FLUX.1 [schnell]は16GBのVRAMでも動作可能です。


おおおおおいいい。必要スペック高すぎ(泣
これだとschnell版かなぁと思いますが、せっかくだから高品質のdev使いたいですよね。

これまたいい方法ないかなぁといろいろと調べてみると、
devの中でも、「量子化」と呼ばれる手法によってサイズを小さくしたものも配布されているらしい。

 ・標準バージョン
  ファイル名: flux1-dev.safetensors
  サイズ: 約24GB
  最高品質の出力が可能ですが、高いGPUメモリ要求があります。
 ・FP8バージョン
  ファイル名: flux1-dev-fp8.safetensors
  サイズ: 約17GB
  メモリ使用量を削減しつつ、高品質な出力が可能です。
 ・NF4バージョン
  ファイル名: flux1-dev-bnb-nf4-v2.safetensors
  サイズ: 約12GB
  通常のFLUX.1 [dev]モデルと比べて処理速度が大幅に向上しています。
  軽量化されているにもかかわらず、元のモデルと比較して画質の劣化が少ないとされています。

なるほど。これならばNF4版を使ってやってみたいですね。

3.ダウンロード

NF4バージョンのモデルをダウンロードしていきます。

flux1-dev-bnb-nf4-v2.safetensors · lllyasviel/flux1-dev-bnb-nf4 at main
We’re on a journey to advance and democratize artificial int...

上記のHugging Faceから、以下のdownloadボタンを押して気長に落としましょう。

他にも、CLIPファイルとVAEが必要とのことなので落とします。
まずはCLIP

comfyanonymous/flux_text_encoders at main
We’re on a journey to advance and democratize artificial int...

「clip_l.safetensors」と「t5xxl_fp16.safetensors」を
以下の赤枠のところをクリックしてダウンロードします。

(「t5xxl_fp8_e4m3fn.safetensors」といったファイルもありますが、
こちらはマシンスペックに自信がなければ「t5xxl_fp16.safetensors」の代わりに、「t5xxl_fp8_e4m3fn.safetensors」をダウンロードしましょう。
制度的にはfp16のほうが良いらしいです。)

次にVAE

black-forest-labs/FLUX.1-dev at main
We’re on a journey to advance and democratize artificial int...

上記サイトの下の方に、「ae.safetensors」があるのでこちらを落としましょう。

4.ダウンロードファイルの配置と、ComfyUIの最新化

ダウンロードしたファイルを配置していきましょう。
メインモデル「flux1-dev-bnb-nf4-v2.safetensors」の配置は
こちら「ComfyUI\models\unet」

CLIPファイルは
こちら「ComfyUI\models\clip」

VAEは
こちら「ComfyUI\models\vae」

ファイルの配置は以上です。ばっちりですね。

今度はComfyUIを起動します。
カスタムノード「ComfyUI-Manager」はすでに入っている前提で進めます。
まだの人は、【ComfyUI】09:ComfyUI-Managerをインストールしよう を参考にしてみてください。

まずはComfyUIを最新版にしましょう!
右下の「Manager]ボタンから、メニューを表示させて、
「Update ComfyUI」でアップデートしましょう。
終わりましたら、「Restart」でComfyUI再起動します。

5.ワークフローをダウンロード

ComfyUIのいいところは、作られた画像をドラック&ドロップすると、
その画像が作られたワークフローが読み込まれるところですね!

何度もお世話になっている以下のサイトから画像をダウンロードして、
ワークフローを読み込ませてみましょう。

Flux Examples
Examples of ComfyUI workflows

ちょっと下の方にスクロールすると、以下のようなかわいい女の子の画像があります。

こちらが、FLUX.1 Dev版で作られたものになります。
女の子の画像を、右クリックして画像を保存しましょう。

保存した画像をComfyUIにドラック&ドロップすると以下のようなワークフローがでてきます。

わー!もうなんかこれだけでできる気がする!!
ここで先ほど配置したファイルをそれぞれ選びます。

そして、「Queue Prompt」を押すと・・・

ぬあー!わけわからんエラーが・・・

Error occurred when executing UNETLoader:

Error(s) in loading state_dict for Flux:
size mismatch for img_in.weight: copying a param with shape torch.Size([98304, 1]) from checkpoint, the shape in current model is torch.Size([3072, 64]).
size mismatch for time_in.in_layer.weight: copying a param with shape torch.Size([393216, 1]) from checkpoint, the shape in current model is torch.Size([3072, 256]).
・・・と以下省略

ここから悪戦苦闘。。。いろいろ調べてみました。。。。

6.エラーの解消

検索してもエラーの詳細があまり出てこなくて困りました。
実はこの症状は私だけ??

このエラーは結論から言うと、「flux1-dev-bnb-nf4-v2.safetensors」を使うのに
専用のカスタムノードが必要みたいなのです。
今現在(2024/8/20)の情報なので、これから変わっていくかもしれませんが。
ここからはエラー解消のために行ったこと記載していきます。
皆様は自己責任でお願いしますね。

参考にさせていただいたのは以下のサイト

この方によると、
CheckpointLoaderNF4 というカスタムノードをインストールする必要があり、
以下の手順で行うみたいです。

 ① ComfyUI-Managerのインストールのセキュリティ レベルを下げる
  (下げないと、カスタムノードがインストールできないみたい。。。)
 ② ComfyUIを再起動し、ComfyUI-Manager内の git インストール オプションを
   使用してCheckpointLoaderNF4カスタムノードをインストール
 ③ セキュリティ レベルを戻す

だそうです。ちょっとセキュリティレベルとか下げるの怖そうですが、やってみました。


① まず、ComfyUI-Managerのインストールのセキュリティ レベルを下げます。
「ComfyUI\custom_nodes\ComfyUI-Manager」内にある「config.ini」をいじるので、
バックアップは取っておきましょう。


ダブルクリックするとメモ帳が開きますので設定を変えます。
(テキストエディタは好きなのを使ってください)

以下の15行目のように、「security_level = normal」から「security_level = weak」に変更します。

Readmeから、weakは「すべての機能が利用可能」となるみたいですね。

「config.ini」を変更したら、保存します。


② ComfyUIを再起動しましょう、ComfyUI-Managerから、Restartでもよいですし、
ComfyUI自体を再度立ち上げてもよいです。

CheckpointLoaderNF4 カスタムノードをインストールするのに、
以下のサイトからgitのアドレスをコピーします。

GitHub - comfyanonymous/ComfyUI_bitsandbytes_NF4
Contribute to comfyanonymous/ComfyUI_bitsandbytes_NF4 develo...

緑のボタンの「Code」を押して、赤枠のコピーのボタンを押します。
これで、アドレスはコピーされました。

次は、ComfyUIの「ComfyUI-Manager」からgitを使ってインストールします。
「ComfyUI-Manager」の「Install via Git URL」ボタンを押すと、ポップアップがでるので、
ここに先ほどコピーしたアドレスを入れてOKを押します。

成功すると、以下のようなダイアログが出るので、「Restart」で再起動しましょう。

これでインストールは完了です。

ComfyUI上で適当なところをダブルクリックしてください。
カスタムノードの検索画面が出るので、「CheckpointLoaderNF4」と入れると
以下のようにCheckpointLoaderNF4カスタムノードが表示されるようになるので、
こちらをクリックして選びましょう。

出ました!!

このカスタムノードは、「model」を「checkpoints」から読みだしているみたいなので、
「flux1-dev-bnb-nf4-v2.safetensors」を「unet」内から「checkpoints」の方に移動します。

そして、「Refresh」を押して、「CheckpointLoaderNF4」のチェックポイントネームに
「flux1-dev-bnb-nf4-v2.safetensors」を選び、
MODELのノードを「CheckpointLoaderNF4」から出るように繋ぎなおします。
(下の赤丸の部分ですね)


あとは、「Queue Prompt」を押せば。。。

ジャーン!!出力されました!!!
高クオリティの画像がそれなりの短い時間で出力できます。
感動です!!


せっかくなのでいろいろプロンプトを変えて出力して遊んでみました。

最後に
③ ComfyUI-Managerのインストールのセキュリティ レベルを
「security_level = normal」に戻しておきましょう。

7.残念なことも・・・

軽量で、質もいい「flux1-dev-bnb-nf4-v2.safetensors」ですがこのNF4版は残念なこともありまして。。。

なんと!LoRAが使えません!!!

そう、現在はLoRAが組み込めなく使えないのです。。。
NF4形式のモデルは、メモリ使用量を削減するために設計されているため、
LoRAとの組み合わせて使用メモリを増やしたら本末転倒ですね。

技術的にも難しいらしく、アップデートで使えるようになるといいのですが。。。
LoRAをどうしても使いたかったら「FP8バージョン」を使うのが無難ですかね。