sd-scripts で"RuntimeError: Setting different lr values in different parameter groups is only supported for values of 0" エラーが発生する - Stable Diffusion
sd-scripts で"RuntimeError: Setting different lr values in different parameter groups is only supported for values of 0" エラーが発生する現象と対処法の紹介です。
現象
sd-scritpsを実行すると、次のエラーが発生します。
エラーメッセージ
RuntimeError: Setting different lr values in different parameter groups is only supported for values of 0
原因
いくつかの可能性が考えられますが、よくある原因の一つとして、
Text Encoderの学習率が設定されていない場合があります。
以下のtomlファイルの設定では、
network_train_unet_only
が false に設定されており、テキストエンコーダーの学習を実行する設定ですが、
学習率の設定は、
unet_lr = 1
により、U-NETの学習率のみが設定されており、テキストエンコーダーの学習率が設定されていません。
[additional_network_arguments]
network_train_unet_only = false
cache_text_encoder_outputs = false
network_module = "networks.lora"
[optimizer_arguments]
optimizer_type = "prodigy"
optimizer_args = ["betas=0.9,0.999", "weight_decay=0"]
unet_lr = 1
network_dim = 16
network_alpha = 1
network_args = ["conv_dim=8"]
lr_scheduler="cosine"
...(以下略)
対処法1
テキストエンコーダーの学習率を設定します。
learning_rate
を設定すると、U-NETとテキストエンコーダーの両方の学習率を設定できます。
[additional_network_arguments]
network_train_unet_only = false
cache_text_encoder_outputs = false
network_module = "networks.lora"
[optimizer_arguments]
optimizer_type = "prodigy"
optimizer_args = ["betas=0.9,0.999", "weight_decay=0"]
learning_rate = 1
network_dim = 16
network_alpha = 1
network_args = ["conv_dim=8"]
lr_scheduler="cosine"
...(以下略)
対処法2
optimizer_type が"D-Adaptation"、"Prodigy" 以外の場合、
unet_lr
と
text_encoder_lr
の2つのパラメーターを設定する方法もあります。
[additional_network_arguments]
network_train_unet_only = false
cache_text_encoder_outputs = false
network_module = "networks.lora"
[optimizer_arguments]
optimizer_type = "AdamW"
text_encoder_lr = 5e-4
unet_lr = 1e-3
network_dim = 16
network_alpha = 1
lr_scheduler="cosine"
...(以下略)
tomlファイルを修正してsd-scriptsを実行し、エラーが発生しないことを確認します。
著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。