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ノードがあるから必要ないかも。。
想定される使用方法としては、モデルマージの時についでにするとかぐらい?
後は、全部入りのモデルから、それぞれの部分を分けて保存ができたりもしますし、部分に分けてあるのを統合も可能ではあります。
この記事が気に入ったらサポートをしてみませんか?