皆さまいかがお過ごしでしょうか。歌乃です。

書いたつもりですっかり忘れていました( ゚Д゚)

タイトル通りの内容と、解決策というか対処法に関してです。

※今回は戯言少なめな内容でお送りしております。

まずは SVDQuant (Nunchaku) に関して。


SVDQuant (Nunchaku)

要約すると、Dffusion モデルの新しい 4 ビット量子化手法です。

なんのこっちゃわかりませんね。わたしもよくわかってません( ゚Д゚)

技術的な内容は、開発元の hanlab のサイトで確認できます。

https://hanlab.mit.edu/projects/svdquant

要は「新しい方法で、生成モデルの大事な部分だけを圧縮したら、劣化を抑えて、爆速になったやん!」ということです。

んでこれを利用したモデル(と利用するためのライブラリ)が Nunchaku システムということです。

Nunchaku システムに関する資料はここで確認できます。

https://nunchaku.tech/docs/nunchaku/index.html


ComfyUI で Nunchaku を使ってみる

Nunchaku の python パッケージが必要になります。

Nunchaku の github リリースから環境に合わせた whl ファイルを入手して install します。

https://github.com/nunchaku-tech/nunchaku/releases

Nunchaku 用のカスタムノードが公開されてるので、そちらを ComfyUI にインストールします。マニュアルインストールでも ComfyUI manager からでもOKです。

システムに合わせた Nunchaku モデルをダウンロードします。

RTX50 シリーズは float4 、それ以外は int4 モデルが必要です。※うちは 3070 なので int4

Nunchaku カスタムノードに 含まれている sample work flow を使用して、画像生成できれば、一応目的達成です。

nunchaku_lora001


自作のLoRAが使えない

基本モデルは Flux1 です

Nunchaku カスタムノードにはLoRA Loader も含まれています。

使い方はいたって普通で 基本モデルにチェーンするだけです。

が、 エラーを吐いて止まります。再実行すると実行完了はしますが、LoRA が適用されません。

nunchaku_lora002

エラー内容は、LoRA ファイルのレイヤーに処理できない (見つからない、または余分な) Key (名前) があるとの事。

エラー内容でネット検索してみると、全く同じではないけれど、レイヤーの Key が見つからずエラーになる現象が散見されます。

ただし、すべての LoRA ファイル で起きているわけではなく、起きない LoRA もあるようで、たまたま、同じ LoRA を持っていたため試してみると、確かにエラーもなく適用されます。

自作 LoRA をいろいろ取り換えてみると、エラーを起こさないものがあったので、学習時の設定ファイルを確認してみたところ、text encoder の training を false にしたものがエラーを起こさないようでした。

その後、いろいろ調べてみると、Nunchaku は内部的に LoRA の形式を変換することで既存のLoRA をそのまま使用できるようにしている ということが判りました。

https://nunchaku.tech/docs/nunchaku/usage/lora.html#exporting-converted-loras

そしてこの変換時に、ライブラリでエラーを吐いているようです。


対処法

原因は分かったので、対処法として自作時に Text encoder の学習をしない。既存のものに関しては、Text encoder 部分の学習(重み) を切り離し(削除) してやればいいのでは、と思い至りました。

Text encoder weight 部分の切り離し方法として、何かないかしら、と調べたところ、Kohya_ss/sd-script 内に良いものがありました。

SD3 ブランチにある「convert_flux_lora.py」がそれです。Flux1 用の形式に変換するためのスクリプトですが、変換時に Text encoder 部分を Drop するようです。

使い方としては

python networks\convert_flux_lora.py --src_path lora_with_te.safetensors --dst_path lora_without_te.safetensors 

のようにして使用します。

※09/23 追記。LoRA によっては変換に失敗するものもあります。私の学習環境は AI toolkit ですが、そちらで作成したファイルは問題なく変換できました。




これで既存の LoRA を Nunchaku で使用できるようになります (`・ω・´)

ポスト いいんじゃね。と感じたらポストしてもらえると喜びます。
タイーツ タイーツもできます。