見出し画像

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のワークフローは至って簡単です。

FLUX.1モデルマージ+テスト生成用ワークフロー概要図

一つずつ解説していきます。

Model Merge Flow

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

続いて、モデルマージ後のテスト生成用のフローを作ります。
これも、ぶるぺんさんの記事を見ていれば、問題なく理解ができると思います。

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モデルを扱う場合は覚悟が必要です。

キュー完了時
FLUX.1マージモデル テスト生成結果
出来上がったモデル

正常にモデルの出力とテスト生成ができていますね。

ちなみに、出来上がったモデルは、デフォルトの状態だと以下に保存されます。

./ComfyUI/output/checkpoints


おわりに


今回は、話題沸騰中のFLUX.1における、モデルマージについて取り上げました!
思ったよりも簡単にできますね…

ComfyUIはA1111 WebUIよりも自由性が高く、生成フローを自身で構築することもでき、最新技術へのアップデート速度も速いので、使いこなせれば非常に頼もしいツールになると思いました。

是非、皆さんも、ComfyUI+FLUX.1モデルを使って遊んでみませんか?

いいなと思ったら応援しよう!

とーふのかけら
よろしければサポートお願いします!✨ 頂いたサポート費用は活動費(電気代や設備費用)に使わさせて頂きます!✨

この記事が参加している募集