ComfyUIを使ってFLUX.1のモデルマージをしてみる
はじめに
本記事では、Black Forest LabsがリリースしたFLUX.1モデルにおける、モデルマージについて学んでいこうと思います。
Black Forest Labsとは、Stable Diffusionの開発メンバーなどが立ち上げたGenerative AI研究団体です。
FLUX.1の使い方は、神ことぶるぺん氏が至極分かりやすく説明しているので、そちらの記事を参照してみてください!
概要
FLUX.1モデルを使用した画像の生成や、FLUX.1のモデルマージはComfyUIで実装されています。
今回はそちらを簡単に説明していきます。
今回やること
今回やることは、Super Mergerみたいな簡易的なモデルマージ+テスト生成が出来るフローを作成します。
要件としては以下です。
flux1-schnellとflux1-devのfp8モデルのモデルマージを行う
マージ後のモデルは保存する
マージしたモデルでテスト生成を同一ワークフローで実施する
今回必要なレシピ
ComfyUI本体(commit : e9589d6以降の最新版)
flux1-dev-fp8(画像生成モデル本体)
flux1-schnell-fp8(画像生成モデル本体)
T5XXL(fp8)
CLIP-L
FLUX.1用VAE
これらを、各種適正なフォルダへ配置します。
FLUX.1モデル
./ComfyUI/models/unet
T5XXL / CLIP-L
./ComfyUI/models/clip
VAE
./ComfyUI/models/vae
Workflow
ComfyUIのワークフローは至って簡単です。
一つずつ解説していきます。
Model Merge Flow
ModelMergeFlux1と呼ばれる基本ノードが、最新版のComfyUIに標準装備されています。
これを使っていきます。
Load Diffusion Model
Load VAE
DualCLIPLoader
CheckpointSave
ModelMergeFlux1
FLUX.1モデルにおけるマージは以上のノードで構成されています。
Stable Diffusion XL(SDXL)以降、CLIP(Text Encoder)の仕様が変わっており、CLIP-GとCLIP-Lの2種類を使用するようになっています。
その為、DualCLIPLoaderにて、2種類のCLIPを必ず読み込む必要があります。
あとは、各々のノードを接続していきます。
ここだけの構成で基本的にはモデルマージが可能です。簡単ですね。
Text-2-Image Sampling Flow
続いて、モデルマージ後のテスト生成用のフローを作ります。
これも、ぶるぺんさんの記事を見ていれば、問題なく理解ができると思います。
ModelMergeFlux1ノードからのOutputを、ModelSamplingFluxノードへバイパス接続します。
モデルマージ後のサンプラーへのバイパス接続は、従来のSD1.x時代でもComfyUIでモデルマージ+テスト生成を行う際に使われている方法ですので、取っ付きやすいかと思います。
これで完成です。
20分程度で作ったワークフローなので、基本的なことしかできません。
参考程度にベースとしてご活用ください。
モデルマージ+テスト生成してみる
今回は、主要なBlock及びLayerは全てModel B (flux1-schnell)へ寄せ、Single block部分のみ0.5の重みでマージします。
マージが可能かどうか確認するだけなので、この配分に特に意味はありません!
では、先ほどのワークフローを実行してみましょう。
100%|██████████| 12/12 [03:48<00:00, 19.06s/it]
Using pytorch attention in VAE
Using pytorch attention in VAE
Requested to load AutoencodingEngine
Loading 1 new model
loaded in lowvram mode 64.0
Prompt executed in 1048.08 seconds
当たり前ですが、1回マージするだけでめっちゃ時間がかかります。
今回は、約1048秒(約17分半)掛かっています。
fp8モデルでもこれですので、fp16モデルを扱う場合は覚悟が必要です。
正常にモデルの出力とテスト生成ができていますね。
ちなみに、出来上がったモデルは、デフォルトの状態だと以下に保存されます。
./ComfyUI/output/checkpoints
おわりに
今回は、話題沸騰中のFLUX.1における、モデルマージについて取り上げました!
思ったよりも簡単にできますね…
ComfyUIはA1111 WebUIよりも自由性が高く、生成フローを自身で構築することもでき、最新技術へのアップデート速度も速いので、使いこなせれば非常に頼もしいツールになると思いました。
是非、皆さんも、ComfyUI+FLUX.1モデルを使って遊んでみませんか?