メインコンテンツへスキップ
見出し画像

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モデルを使って遊んでみませんか?

     
     
    AI Creator | AI Tech Designer Generative AIを活用したnoteを投稿しています。 様々な生成AIを組み合わせて、クリエイティブ技術を向上させる試みを研究。 AIクリエイターのお役に立てる情報を公開しています!

    あなたへのおすすめ