見出し画像

Flux with ControlNet ※高速化技術&対応ワークフロー追記

有体に言って、その性能自体にはまだ相当ストレスを感じますが…

とりあえずFlux1に対応した最初のControlNetが公開されました。発表したのは、複数のエンジニアたちによって運営されるAI開発グループ「XLabs AI」です。

ここまでSD界隈では無名と言ってもいいグルーブですが(※個々のエンジニア各位はもしかしたら、著名な人物なのかもしれませんが)、Flux1に対応したLoRAやControlNetモデルを誰よりも早く投入してきたことにより、一躍注目を集めつつありました。

しかし、LoRAはともかくContrlNetモデルにおいては、まともに動作したという報告もなく、私自身も色々試行錯誤したもののまともに動作せず、正直欠陥品ではないかと思っていたのですが…

今回、彼らがContrlNetとLoRA一式を制御するノードそのものを公開したことにより、そもそも彼ら自身が開発したプラットフォームで運用することが前提だったことが判明しました。

私も、下の動画を参考にして自らノードを組んで、テストしてみました。

まずはcanny用のノードを組んでみましたが…

一言で言えば、相当不安定です。何がと言えば、cannyでスキャンしたデータの反映度がです。はっきり言って、SD1.5やSDXL1.0での精度を期待すると完全に当てが外れます。

強度1.0で絵を生成すると、下のようにまともな絵になりません。

強度を下げていくと、何とかまともな絵に近づきますが、当然元絵の再現性という点では外れた絵になっていきます。

ちなみに元絵は以下です。同じくFlux1生成です。

という訳で、現時点ではcanny一つとっても満足とは言い難い性能ですが、そもそもオープンソースで無料で公開されているコードに、文句を付ける権利など、我々ユーザーにはないのです。

新しい技術の開発に挑戦し、公開してくださっただけでもありがたいと思うべきなのです。

そして、技術とはこうした試行錯誤を繰り返して、発展していくものなのです。最初から完成された技術など存在しません。

という訳で、まずはFluxフォーマットにおける最初のチャレンジに取り組んでくださったXlabsの各位に、感謝と敬意を捧げたいと思います。

ただ初期状態では動作も激重です。

単純な生成ならば、ギリVRAM12GBに収まったUnet形式のdevモデルは、このノードでは、共有VRAMを使ってさえOutofMemoryを起こし完走しません。久々にSD関連ではOutofMemoryを見ました。

fp8形式では何とか完走しますが、RTX4070 12GBでは完全に共有VRAMを使いに行く為、激遅になります。以下のように恐らく、RTX4070よりもRTX4060Ti 16GB の方が処理が速いはずです。

Xlabsが独自に開発したSamplerを使用する訳ですが、その部分でメモリ消費が重くなっています。

ただ、ControlNetをかました時に重くなるというのはSD1.5でも起こる話なので、特にXlabsのメモリ管理技術が悪い訳ではないのでしょう。

ただ、有体に言ってRTX4070 12GBでは現実的に使用に耐える速度ではなくなってしまうので、このノードを使う場合にはVRAM 16GB以上を持つVGAへの乗り換えを行うか、又はGoogleを使うかは必須.…と思っていたのですが、

上記記述した後に、何とかVRAM12GBに収まる方法を発見しました。

一つ目は、NF4形式のモデルを使用することです。NF4をComfyUIで使用する方法は下の記事を参照してください。

当初、NF4形式は非対応かと思っていましたが、下のようにあっさり動作しました。モデルはfp8を指定したままでも、NF4形式で動作します。

2つ目は、Xlabs公式はこちらの方法を推奨していますが、GGUF形式のモデルを使用することです。GGUF形式とは、画像生成AI界隈ではこれまで馴染みの薄いフォーマットでしたが、言語生成AIの、特にオープンソースで公開されているLLMのフォーマットとしては比較的メジャーな形式です。

ComfyUI上でGGUF形式のモデルをロードする為には、更にノードの追加や設定が必要ですが、その方法に関しては下を参照して導入して下さい。Flux1のモデル自体も、GGUF化された形式で既に公開されています。

上を踏まえて、NF4とGGUFに対応したノードを組みなおしたので公開します。またXlabs Samplerもアップデートされ、推奨設定値も変更されていたので、それも反映させています。

しかし、やはりこの2つの高速化手法だと従来のフォーマットによるLoRAと完全に互換性が無い為、今後LoRAを使えないという問題は不可避です。

GGUFにしてもNF4にしても、Xlabsのこの手法ではControlNetはギリ実用的な速度で使えますが、今後LoRAとの互換性の問題はクローズアップされてくるはずです。

NF4もGGUFも、それぞれのフォーマットに対応したLoRAが別途必要になってしまいますが、その普及への各種ハードルを考えると、余り現実的な未来図が思い浮かびません。

これまで、SD関連に関してはSDXL、SD3であってもVRAM12GBであれば実用的な速度で使えてきましたが、今後Flux1を前提にした時は、VRAM16GBが最低ラインになってくるかもしれません。

この記事が気に入ったらサポートをしてみませんか?