【Stable Diffusion】LoRAだと思ってたらLyCORISだった

エンタメ
記事内に広告が含まれています。
スポンサーリンク

追記 4/23 Google Colabでstable-diffusion-webuiの文字を含む関数を実行しようとすると警告が出るようになっています。

スポンサーリンク

注意

この記事は学習したファイルを使いたい人向けの記事であり、学習ファイルを作りたい人向けの記事ではありません。

LoRAを使えない(と思っていた)時に出ていたエラー

activating extra network lora with arguments [<modules.extra_networks.ExtraNetworkParams object at 0x7fd3f85f5130>, <modules.extra_networks.ExtraNetworkParams object at 0x7fd3f85f51c0>]: AssertionError Traceback (most recent call last): File “/content/stable-diffusion-webui/modules/extra_networks.py”, line 75, in activate extra_network.activate(p, extra_network_args) File “/content/stable-diffusion-webui/extensions-builtin/Lora/extra_networks_lora.py”, line 23, in activate lora.load_loras(names, multipliers) File “/content/stable-diffusion-webui/extensions-builtin/Lora/lora.py”, line 151, in load_loras lora = load_lora(name, lora_on_disk.filename) File “/content/stable-diffusion-webui/extensions-builtin/Lora/lora.py”, line 122, in load_lora assert False, f’Bad Lora layer name: {key_diffusers} – must end in lora_up.weight, lora_down.weight or alpha’ AssertionError: Bad Lora layer name: lora_te_text_model_encoder_layers_0_mlp_fc1.hada_w1_a – must end in lora_up.weight, lora_down.weight or alpha

先日 Stable Diffusion で遊んでいたら、こんな感じのエラーが Generate を押してからセルのところに表示されていました。

画像自体は出力されるのですが、どうにも導入している LoRA がうまく作用していないようで、 LoRA タグとトリガーワードを入れても入れなくても同じ画像が生成されます。

せっかく賢者たちが学習データを上げてくれているのにうまく動作していないんじゃ楽しさ半減なので解決のために頑張ってみました。

ちなみにこのエラーを chatGPT にかけたところ

このエラーメッセージは、LoRaの追加ネットワークを有効化する際に発生したアサーションエラーを示しています。エラーメッセージによると、LoRa層の名前が正しくないため、”lora_up.weight”、”lora_down.weight”、または”alpha”のいずれかで終わる必要があることがわかります。

このエラーメッセージを見る限り、”lora_te_text_model_encoder_layers_0_mlp_fc1.hada_w1_a”という名前の層がLoRa層として正しくフォーマットされていないようです。この層が定義されているコードを確認し、層の名前がLoRa層に対して有効な接尾辞のいずれかで終わるように修正する必要があります。

層の名前を修正した後、追加ネットワークを再度有効化し、エラーが解決されたかどうかを確認できます。

ChatGPT(https://www.openai.com/)

と返ってきました。

まあ、今となっては学習の仕組みが違ってLoRA層の終端が違うからエラーになってるのかな?なんてことも考えられますが(この解釈があってるかも不明)問題解決的にはたいして役に立たなかったです。

LoRAだと思ってたらLyCORIS

記事のタイトルで盛大にネタバレしてますが、 LoRA だと思って wget してきたものが実は LyCORIS だったというのが今回のオチです。リコリス・リコイル…

LoRA と LyCORIS は別物なので LyCORIS が使えるように拡張機能を入れておく必要があります。

最近の流行りというかざっくりした認識だと LoRA の進化系が LyCORIS なので今後は LyCORIS の追加学習データが多くなってくると思っていていいでしょう。

解決策として、具体的には

GitHub - KohakuBlueleaf/a1111-sd-webui-locon: A extension for loading LyCORIS model in sd-webui
A extension for loading LyCORIS model in sd-webui. Contribute to KohakuBlueleaf/a1111-sd-webui-locon development by crea...

を使うことで問題なく動作するようです。

!git clone https://github.com/KohakuBlueleaf/a1111-sd-webui-locon  /content/stable-diffusion-webui/extensions/a1111-sd-webui-locon

動作環境は人それぞれなので何とも言えませんが、他の WebUI の拡張機能とかと同じようにこんな感じで書いておけば動くんじゃないですかね?(上記は僕が google colab で動作させている時のもの)

この拡張機能は他人の書いたコードなので保証はできませんが、何度も使っている感じ問題なく動作してそうです。

まあそんなこと言い出したら最初から最後まで1つも自分で書いたコードなんてないんだが…

最後のまとめ

今回は「【Stable Diffusion】LoRAだと思ってたらLyCORISだった」というタイトルで拡張機能を入れないと出てくるエラーの解決法を書きました。

まあ短い記事になったのでまとめるほどの事でもないんですが、自分が入れた追加学習のファイルが LoRA なのか LyCORIS なのか、はたまた別の何かなのかを確認しましょう。という話です。

もっと言うならちゃんと入れるときは LoRA タグとかトリガーワードとか色々確認した方が良いですね。

おそらく今後の追加学習データは LyCORIS が主流になってくるので置いていかれないように勉強していきましょう。(僕も頑張る…)

こんな記事も書いています。

大きい画像が欲しい人はこちらもどうぞ

コメント

タイトルとURLをコピーしました