見出し画像

ComfyUIでfp8への変換を行うカスタムノードを作成してみた話

fp8やGGUFなど量子化が流行っている画像生成界隈でfp8へのモデル変換を直感的にしたいみたいな感じでComfyUIのカスタムノードを作成してみることにしました。

以前記事上げたfp8変換のスクリプトを元にComfyUIのカスタムノードを作成していると、ノードの入出力の部分のエラーが頻発したので、モデルとクリップを分けています。

difffusionモデル部分のみのfp8変換ノードと、clipモデルの部分のみのfp8変換ノードにしています。

簡単に変換するノードが出来るのかと期待していましたが、入力時にmodel patcherスクリプトが修正していたりして、GPT壁打ちが多かったです。

特にCLIPはなんかよく分かりませんでしたが、色々やっていたらなんとなくできた感じです。

この方法だと、VAEがfp8に圧縮されないものになります。

<実際のカスタムノードの使用例>

こんな感じでfp8に圧縮できます。

以下はGithubniにあるワークフローです。上のワークフローが出ます。

生成されたチェックポイントで画像生成はエラーなく行うことが出来ました。

以下の様にSDXLだけでなく、いくつかのモデルで試してみたところサイズの圧縮が行えました。

<変換によるサイズの変化Diffusion+clipモデルの変換>

① SDXL    6.5GB ⇒ 3.4GB

② Auraflow  16GB ⇒ 7.7GB

③ HunyanDiT 7.7GB ⇒ 3.5GB

<作成した感想>
個人的には、前回記事にしたスクリプトの方が楽なので使い道があまりない?ことに作成してから気がつきました。
もしかしたらVAEを圧縮しないことで画質が良くなるかもしれませんが、それはLoad VAEノードがあるから必要ないかも。。
想定される使用方法としては、モデルマージの時についでにするとかぐらい?
後は、全部入りのモデルから、それぞれの部分を分けて保存ができたりもしますし、部分に分けてあるのを統合も可能ではあります。






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