kohya-ss / sd-scripts

Apache License 2.0
5.31k stars 880 forks source link

SD3.5LのLoraで複数概念が学習できない。 #1802

Open waomodder opened 4 days ago

waomodder commented 4 days ago

いつも開発お疲れ様です。 今回はSD3.5Lで複数概念が全く学習されなかったのでバグ報告させていただきます。

私はいままで10以上の概念を持つLoraをSD1.5やSDXLで学習させて作成した経験があります。 今回も同じようにSD3.5Lで10以上の概念を学習させようと何度もテストしましたが、まったくうまくいきません。

そこで試しに4つの概念を同時に学習させてちゃんと学習内容が反映されているかテストを行いました。

トークンはそれぞれ、「A-RRS」、「FRS」、「MRS」、「SRS」で、それぞれのフォルダには同じデザインのキャラクターの画像が50枚入っています。 各キャラクターは上半身、全体像、顔のアップ、立ち姿、ポージングといった画像となっています。 image

下が教師画像の例です。

A-RRS 0052

FRS 0214

MRS 0013

SRS 0169

ところが、ComfyUIで生成したところ、結果は全く持って似ても似つかないものとなってしまいました。 image image image こちらはsd-scriptsで生成されたもの srdmk3_MC_t2_001000_00_20241121215524_1

テストした際のコマンドはこちらとなります。 accelerate launch --num_cpu_threads_per_process=20 sd3_train_network.py --network_module networks.lora_sd3 --network_args "train_t5xxl=True" --fp8_base --mixed_precision "bf16" --highvram --bucket_reso_steps=64 --caption_extension=".txt" --enable_bucket --min_bucket_reso=256 --max_bucket_reso=2048 --max_data_loader_n_workers="4" --max_grad_norm="1" --max_timestep="1000" --resolution="1024,1024" --optimizer_type "adamwschedulefree" --optimizer_args "weight_decay=0.01" "betas=0.9,0.999" "eps=0.000001" --unet_lr="3e-4" --text_encoder_lr 3e-4 1e-5 1e-6 --output_name="srdmk3_MC_t2" --output_dir="D:\Lora_learning\Data\output" --pretrained_model_name_or_path="D:\ComfyUI_windows_portable\ComfyUI\models\checkpoints\sd3.5_large.safetensors" --save_every_n_epochs="1" --save_model_as=safetensors --save_precision="bf16" --train_batch_size="1" --train_data_dir="D:\Lora_learning\Data\asset\super_robot_diffusion_XL_V3\multi_Class_test" --sdpa --gradient_checkpointing --max_train_epochs=2 --network_dim 64 --network_alpha 32.0 --save_every_n_epochs 1 --save_every_n_steps 1000 --bucket_no_upscale --clip_l="D:\ComfyUI_windows_portable\ComfyUI\models\clip\clip_l.safetensors" --clip_g="D:\ComfyUI_windows_portable\ComfyUI\models\clip\clip_g.safetensors" --t5xxl="D:\ComfyUI_windows_portable\ComfyUI\models\clip\t5xxl_fp16.safetensors" --save_every_n_epochs=1 --sample_every_n_steps 1000 --sample_prompts "D:\Lora_learning\Data\output\prompt.txt" --sample_sampler 'k_euler' --weighting_scheme uniform --training_shift 1.0 --apply_t5_attn_mask --bucket_no_upscale --bucket_reso_steps="64" --cache_latents --cache_latents_to_disk --clip_skip="0" --dynamo_backend="eager" --gradient_checkpointing --huber_c="0.1" --huber_schedule="snr" --ip_noise_gamma="0.1" --ip_noise_gamma_random_strength --loss_type="l2" --noise_offset="0.0" --persistent_data_loader_workers --prior_loss_weight="1" --sdpa

TEも含めてちゃんと学習させているはずなんですが全く教師画像に似ておらず、どうすればいいのか手詰まりの状況です。 ちゃんとTEが学習されているはずならSDXLのように分けて学習してくれるはずだと思いますので、何かしらバグがあった際には修正をしていただけるでしょうか。よろしくお願いいたします。

kohya-ss commented 4 days ago

複数概念が学習できない報告は私もいくつか拝見しております。Text EncoderのLoRAの学習については改めて確認してみます。とりあえずComfyUI等で、CLIP(T5XXL)のLoRA適用率を0にして、画像が変化するかお試しいただけますでしょうか。もし画像が変化しないなら、学習できていない可能性が高いと思われます。

waomodder commented 4 days ago

早速ComfyUIでLoraのTEを0にして生成しました。 image

結果は全く似てませんでした・・。 image image image

kohya-ss commented 3 days ago

以前FLUX.1で複数キャラクタをひとつのLoRAに学ばせることができたのを思い出し、SD3.5Lでも試してみました。 結果として、学習不足もあり品質は悪いものの一応出し分けることができました。Text Encoderは学習せずDiTのみです。

image

プロンプトはThe illustration depicts a young girl named kagasaka sonoha wearing a traditional Japanese sailor school uniform, standing at a bus stop on a rainy day. ~~~The illustration depicts a young girl named ichijo tsumugi wearing a traditional Japanese sailor school uniform, standing at a bus stop on a rainy day. ~~~です。

教師データは100枚程度で、一例として、以下のような画像に、自然言語を用い(Florence-2で生成)、young girl named kagasaka sonohayoung girl named ichijo tsumugiのようにキャラ名を指定したプロンプトで学習しています。

image

左:The image is an illustration of a young girl named kagasaka sonoha in a classroom. She is standing in front of a desk with her arms crossed and is wearing a white blouse with a black bow tie and a black skirt. The girl is smiling and looking directly at the camera. The classroom has rows of desks and chairs, and there are large windows on the far wall. The overall color scheme of the image is bright and cheerful.

右:The image shows a young girl named ichijo tsumugi standing in a classroom. She is wearing a white blouse with a blue tie and a black skirt. She has a serious expression on her face and is looking directly at the camera. The classroom has rows of desks and chairs, and there is a green chalkboard on the wall behind her. The floor is tiled and there are windows on the left side of the image.

ですので、もしかするとキーワードでは反応が悪く、自然言語の方が効果的なのかもしれません。試しに自然言語で、「○○という名前のロボットの白背景のイラスト」(たとえばA detailed illustration of a robot named XXXX, on a white background.のような感じでしょうか)のようなキャプションで学習、生成してみていただけますでしょうか。

waomodder commented 3 days ago

早速の対応ありがとうございます。 一応、自分は教師データのキャプションは以下の通りで自然言語ではなく最低限のダンボールタグ形式のキャプションを付けております。

A-RRS, mecha, robot, weapon, solo, stocky legs, holding, looking at viewer

一度、DiTのみでの学習を行い、それでもだめであれば自然言語キャプションを付けて学習させてみます。 結果が出るまで少しお待ちくださいませ。

waomodder commented 2 days ago

今更ですが、一つご質問があります。DiTだけ学習させる場合は--network_train_unet_onlyを付ければいいんでしょうか? 何故か画像のように学習時にテキストエンコーダーが有効になってしまいます。 accelerate launch --mixed_precision bf16 --num_cpu_threads_per_process 3 sd3_train_network.py --pretrained_model_name_or_path="D:\ComfyUI_windows_portable\ComfyUI\models\checkpoints\sd3.5_large.safetensors" --clip_l="D:\ComfyUI_windows_portable\ComfyUI\models\clip\clip_l.safetensors" --clip_g="D:\ComfyUI_windows_portable\ComfyUI\models\clip\clip_g.safetensors" --t5xxl="D:\ComfyUI_windows_portable\ComfyUI\models\clip\t5xxl_fp16.safetensors" --cache_latents_to_disk --save_model_as safetensors --sdpa --persistent_data_loader_workers --max_data_loader_n_workers 2 --seed 42 --gradient_checkpointing --mixed_precision bf16 --save_precision bf16 --network_module networks.lora_sd3 --network_dim 32 --network_train_unet_only --optimizer_type adamw8bit --learning_rate 1e-4 --cache_text_encoder_outputs --cache_text_encoder_outputs_to_disk --fp8_base --highvram --max_train_epochs 2 --resolution="1024,1024" --save_every_n_epochs 1 --train_data_dir="D:\Lora_learning\Data\asset\super_robot_diffusion_XL_V3\multi_Class_test" --output_dir="D:\Lora_learning\Data\output" --output_name="srdmk3_v05t7_6" --save_every_n_epochs 1 --save_every_n_steps 1000 --sample_every_n_steps 1000 --sample_prompts "D:\Lora_learning\Data\output\prompt.txt" --sample_sampler 'k_euler' --caption_extension=".txt"

image

waomodder commented 2 days ago

@kohya-ss 申し訳ないですが、結果は全く持って改善されませんでした。 image image

ComfyUIでの生成時のプロンプト A detailed illustration of a mecha F-RRS., on a white background. ワークフロー loratest.json

学習時のコマンド accelerate launch --mixed_precision bf16 --num_cpu_threads_per_process 3 sd3_train_network.py --pretrained_model_name_or_path="D:\ComfyUI_windows_portable\ComfyUI\models\checkpoints\sd3.5_large.safetensors" --clip_l="D:\ComfyUI_windows_portable\ComfyUI\models\clip\clip_l.safetensors" --clip_g="D:\ComfyUI_windows_portable\ComfyUI\models\clip\clip_g.safetensors" --t5xxl="D:\ComfyUI_windows_portable\ComfyUI\models\clip\t5xxl_fp16.safetensors" --cache_latents_to_disk --save_model_as safetensors --sdpa --persistent_data_loader_workers --max_data_loader_n_workers 2 --seed 42 --gradient_checkpointing --mixed_precision bf16 --save_precision bf16 --network_module networks.lora_sd3 --network_dim 32 --network_train_unet_only --optimizer_type adamw8bit --learning_rate 1e-4 --cache_text_encoder_outputs --cache_text_encoder_outputs_to_disk --fp8_base --highvram --max_train_epochs 2 --resolution="1024,1024" --save_every_n_epochs 1 --train_data_dir="D:\Lora_learning\Data\asset\super_robot_diffusion_XL_V3\multi_Class_test" --output_dir="D:\Lora_learning\Data\output" --output_name="srdmk3_v05t7_7" --save_every_n_epochs 1 --save_every_n_steps 1000 --sample_every_n_steps 1000 --sample_prompts "D:\Lora_learning\Data\output\prompt.txt" --sample_sampler 'k_euler' --caption_extension=".txt"

学習時のログ

The following values were not passed to `accelerate launch` and had defaults used instead:
        `--num_processes` was set to a value of `1`
        `--num_machines` was set to a value of `1`
        `--dynamo_backend` was set to a value of `'no'`
To avoid this warning pass in values for each of the problematic parameters or run `accelerate config`.
C:\Users\the_X\AppData\Local\Programs\Python\Python311\Lib\site-packages\diffusers\utils\outputs.py:63: FutureWarning: `torch.utils._pytree._register_pytree_node` is deprecated. Please use `torch.utils._pytree.register_pytree_node` instead.
  torch.utils._pytree._register_pytree_node(
C:\Users\the_X\AppData\Local\Programs\Python\Python311\Lib\site-packages\diffusers\utils\outputs.py:63: FutureWarning: `torch.utils._pytree._register_pytree_node` is deprecated. Please use `torch.utils._pytree.register_pytree_node` instead.
  torch.utils._pytree._register_pytree_node(
2024-11-23 18:08:49 INFO     highvram is enabled / highvramが有効です                                                                                                                          train_util.py:4190
                    WARNING  cache_latents_to_disk is enabled, so cache_latents is also enabled / cache_latents_to_diskが有効なため、cache_latentsを有効にします                               train_util.py:4207
2024-11-23 18:08:49 INFO     t5xxl_max_token_length: 256                                                                                                                                 sd3_train_network.py:136
C:\Users\the_X\AppData\Local\Programs\Python\Python311\Lib\site-packages\transformers\tokenization_utils_base.py:1601: FutureWarning: `clean_up_tokenization_spaces` was not set. It will be set to `True` by default. This behavior will be depracted in transformers v4.45, and will be then set to `False` by default. For more details check this issue: https://github.com/huggingface/transformers/issues/31884
  warnings.warn(
You are using the default legacy behaviour of the <class 'transformers.models.t5.tokenization_t5.T5Tokenizer'>. This is expected, and simply means that the `legacy` (previous) behavior will be used so nothing changes for you. If you want to use the new behaviour, set `legacy=False`. This should only be set if you understand what it means, and thoroughly read the reason why this was added as explained in https://github.com/huggingface/transformers/pull/24565
2024-11-23 18:08:51 INFO     Using DreamBooth method.                                                                                                                                        train_network.py:325
                    INFO     prepare images.                                                                                                                                                   train_util.py:1971
                    INFO     get image size from name of cache files                                                                                                                           train_util.py:1886
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<?, ?it/s]
                    INFO     set image size from cache files: 50/50                                                                                                                            train_util.py:1916
                    INFO     found directory D:\Lora_learning\Data\asset\super_robot_diffusion_XL_V3\multi_Class_test\3_A-RRS contains 50 image files                                          train_util.py:1918
read caption: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 284.13it/s]
                    INFO     get image size from name of cache files                                                                                                                           train_util.py:1886
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<?, ?it/s]
                    INFO     set image size from cache files: 50/50                                                                                                                            train_util.py:1916
                    INFO     found directory D:\Lora_learning\Data\asset\super_robot_diffusion_XL_V3\multi_Class_test\3_F-RRS contains 50 image files                                          train_util.py:1918
read caption: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 295.61it/s]
2024-11-23 18:08:52 INFO     get image size from name of cache files                                                                                                                           train_util.py:1886
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<?, ?it/s]
                    INFO     set image size from cache files: 50/50                                                                                                                            train_util.py:1916
                    INFO     found directory D:\Lora_learning\Data\asset\super_robot_diffusion_XL_V3\multi_Class_test\3_MRS contains 50 image files                                            train_util.py:1918
read caption: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 583.70it/s]
                    INFO     get image size from name of cache files                                                                                                                           train_util.py:1886
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<?, ?it/s]
                    INFO     set image size from cache files: 50/50                                                                                                                            train_util.py:1916
                    INFO     found directory D:\Lora_learning\Data\asset\super_robot_diffusion_XL_V3\multi_Class_test\3_SRS contains 50 image files                                            train_util.py:1918
read caption: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 403.63it/s]
                    INFO     600 train images with repeating.                                                                                                                                  train_util.py:2012
                    INFO     0 reg images.                                                                                                                                                     train_util.py:2015
                    WARNING  no regularization images / 正則化画像が見つかりませんでした                                                                                                       train_util.py:2020
                    INFO     [Dataset 0]                                                                                                                                                       config_util.py:567
                               batch_size: 1
                               resolution: (1024, 1024)
                               enable_bucket: False
                               network_multiplier: 1.0

                               [Subset 0 of Dataset 0]
                                 image_dir: "D:\Lora_learning\Data\asset\super_robot_diffusion_XL_V3\multi_Class_test\3_A-RRS"
                                 image_count: 50
                                 num_repeats: 3
                                 shuffle_caption: False
                                 keep_tokens: 0
                                 keep_tokens_separator:
                                 caption_separator: ,
                                 secondary_separator: None
                                 enable_wildcard: False
                                 caption_dropout_rate: 0.0
                                 caption_dropout_every_n_epochs: 0
                                 caption_tag_dropout_rate: 0.0
                                 caption_prefix: None
                                 caption_suffix: None
                                 color_aug: False
                                 flip_aug: False
                                 face_crop_aug_range: None
                                 random_crop: False
                                 token_warmup_min: 1
                                 token_warmup_step: 0
                                 alpha_mask: False
                                 custom_attributes: {}
                                 is_reg: False
                                 class_tokens: A-RRS
                                 caption_extension: .txt

                               [Subset 1 of Dataset 0]
                                 image_dir: "D:\Lora_learning\Data\asset\super_robot_diffusion_XL_V3\multi_Class_test\3_F-RRS"
                                 image_count: 50
                                 num_repeats: 3
                                 shuffle_caption: False
                                 keep_tokens: 0
                                 keep_tokens_separator:
                                 caption_separator: ,
                                 secondary_separator: None
                                 enable_wildcard: False
                                 caption_dropout_rate: 0.0
                                 caption_dropout_every_n_epochs: 0
                                 caption_tag_dropout_rate: 0.0
                                 caption_prefix: None
                                 caption_suffix: None
                                 color_aug: False
                                 flip_aug: False
                                 face_crop_aug_range: None
                                 random_crop: False
                                 token_warmup_min: 1
                                 token_warmup_step: 0
                                 alpha_mask: False
                                 custom_attributes: {}
                                 is_reg: False
                                 class_tokens: F-RRS
                                 caption_extension: .txt

                               [Subset 2 of Dataset 0]
                                 image_dir: "D:\Lora_learning\Data\asset\super_robot_diffusion_XL_V3\multi_Class_test\3_MRS"
                                 image_count: 50
                                 num_repeats: 3
                                 shuffle_caption: False
                                 keep_tokens: 0
                                 keep_tokens_separator:
                                 caption_separator: ,
                                 secondary_separator: None
                                 enable_wildcard: False
                                 caption_dropout_rate: 0.0
                                 caption_dropout_every_n_epochs: 0
                                 caption_tag_dropout_rate: 0.0
                                 caption_prefix: None
                                 caption_suffix: None
                                 color_aug: False
                                 flip_aug: False
                                 face_crop_aug_range: None
                                 random_crop: False
                                 token_warmup_min: 1
                                 token_warmup_step: 0
                                 alpha_mask: False
                                 custom_attributes: {}
                                 is_reg: False
                                 class_tokens: MRS
                                 caption_extension: .txt

                               [Subset 3 of Dataset 0]
                                 image_dir: "D:\Lora_learning\Data\asset\super_robot_diffusion_XL_V3\multi_Class_test\3_SRS"
                                 image_count: 50
                                 num_repeats: 3
                                 shuffle_caption: False
                                 keep_tokens: 0
                                 keep_tokens_separator:
                                 caption_separator: ,
                                 secondary_separator: None
                                 enable_wildcard: False
                                 caption_dropout_rate: 0.0
                                 caption_dropout_every_n_epochs: 0
                                 caption_tag_dropout_rate: 0.0
                                 caption_prefix: None
                                 caption_suffix: None
                                 color_aug: False
                                 flip_aug: False
                                 face_crop_aug_range: None
                                 random_crop: False
                                 token_warmup_min: 1
                                 token_warmup_step: 0
                                 alpha_mask: False
                                 custom_attributes: {}
                                 is_reg: False
                                 class_tokens: SRS
                                 caption_extension: .txt

                    INFO     [Dataset 0]                                                                                                                                                       config_util.py:573
                    INFO     loading image sizes.                                                                                                                                               train_util.py:923
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 200/200 [00:00<?, ?it/s]
                    INFO     prepare dataset                                                                                                                                                    train_util.py:948
                    INFO     preparing accelerator                                                                                                                                           train_network.py:379
accelerator device: cuda
2024-11-23 18:08:53 INFO     Building MMDit                                                                                                                                                       sd3_utils.py:89
                    INFO     Analyzing state dict state...                                                                                                                                        sd3_utils.py:31
                    INFO     Analyzed state dict state: SD3Params(patch_size=2, depth=38, num_patches=36864, pos_embed_max_size=192, adm_in_channels=2048, qk_norm='rms',                         sd3_utils.py:74
                             x_block_self_attn_layers=[], context_embedder_in_features=4096, context_embedder_out_features=2432, model_type='3-5-large')
                    INFO     Loading state dict...                                                                                                                                                sd3_utils.py:94
                    INFO     Loaded MMDiT: <All keys matched successfully>                                                                                                                        sd3_utils.py:96
                    INFO     Cast SD3 model to fp8. This may take a while. You can reduce the time by using fp8 checkpoint. /                                                             sd3_train_network.py:91
                             SD3モデルをfp8に変換しています。これには時間がかかる場合があります。fp8チェックポイントを使用することで時間を短縮できます。
2024-11-23 18:10:10 INFO     Building CLIP-L                                                                                                                                                     sd3_utils.py:122
                    INFO     Loading state dict from D:\ComfyUI_windows_portable\ComfyUI\models\clip\clip_l.safetensors                                                                          sd3_utils.py:148
2024-11-23 18:10:11 INFO     Adding text_projection.weight to clip_l_sd                                                                                                                          sd3_utils.py:152
                    INFO     Loaded CLIP-L: <All keys matched successfully>                                                                                                                      sd3_utils.py:156
                    INFO     Building CLIP-G                                                                                                                                                     sd3_utils.py:182
                    INFO     Loading state dict from D:\ComfyUI_windows_portable\ComfyUI\models\clip\clip_g.safetensors                                                                          sd3_utils.py:208
2024-11-23 18:10:13 INFO     Loaded CLIP-G: <All keys matched successfully>                                                                                                                      sd3_utils.py:211
                    INFO     Loading state dict from D:\ComfyUI_windows_portable\ComfyUI\models\clip\t5xxl_fp16.safetensors                                                                     flux_utils.py:314
                    INFO     Loaded T5xxl: <All keys matched successfully>                                                                                                                      flux_utils.py:317
                    INFO     Building VAE                                                                                                                                                        sd3_utils.py:258
2024-11-23 18:10:14 INFO     Loading state dict...                                                                                                                                               sd3_utils.py:260
2024-11-23 18:10:15 INFO     Loaded VAE: <All keys matched successfully>                                                                                                                         sd3_utils.py:262
import network module: networks.lora_sd3
2024-11-23 18:10:17 INFO     [Dataset 0]                                                                                                                                                       train_util.py:2495
                    INFO     caching latents with caching strategy.                                                                                                                            train_util.py:1048
                    INFO     caching latents...                                                                                                                                                train_util.py:1097
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 200/200 [00:02<00:00, 91.04it/s]
2024-11-23 18:10:19 INFO     move vae and unet to cpu to save memory                                                                                                                     sd3_train_network.py:198
                    INFO     move text encoders to gpu                                                                                                                                   sd3_train_network.py:206
2024-11-23 18:10:25 INFO     [Dataset 0]                                                                                                                                                       train_util.py:2517
                    INFO     caching Text Encoder outputs with caching strategy.                                                                                                               train_util.py:1231
                    INFO     checking cache validity...                                                                                                                                        train_util.py:1242
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 200/200 [00:02<00:00, 97.47it/s]
2024-11-23 18:10:27 INFO     no Text Encoder outputs to cache                                                                                                                                  train_util.py:1269
                    INFO     cache Text Encoder outputs for sample prompt: D:\Lora_learning\Data\output\prompt.txt                                                                       sd3_train_network.py:223
                    INFO     cache Text Encoder outputs for prompt: masterpiece, best quality, (FRS:1.8), full body, mecha, (mecha armor:1.2), (holding weapon:1.5), robot joint, simple sd3_train_network.py:234
                             background
C:\Users\the_X\AppData\Local\Programs\Python\Python311\Lib\site-packages\transformers\models\clip\modeling_clip.py:480: UserWarning: 1Torch was not compiled with flash attention. (Triggered internally at C:\actions-runner\_work\pytorch\pytorch\builder\windows\pytorch\aten\src\ATen\native\transformers\cuda\sdp_utils.cpp:555.)
  attn_output = torch.nn.functional.scaled_dot_product_attention(
2024-11-23 18:10:28 INFO     cache Text Encoder outputs for prompt: low quality, worst quality, bad anatomy,bad composition, poor, low effort                                            sd3_train_network.py:234
2024-11-23 18:10:29 INFO     move CLIP-L back to cpu                                                                                                                                     sd3_train_network.py:249
                    INFO     move CLIP-G back to cpu                                                                                                                                     sd3_train_network.py:251
                    INFO     move t5XXL back to cpu                                                                                                                                      sd3_train_network.py:253
2024-11-23 18:10:31 INFO     move vae and unet back to original device                                                                                                                   sd3_train_network.py:258
                    INFO     create LoRA network. base dim (rank): 32, alpha: 1                                                                                                                   lora_sd3.py:286
                    INFO     neuron dropout: p=None, rank dropout: p=None, module dropout: p=None                                                                                                 lora_sd3.py:287
                    INFO     create LoRA for Text Encoder 1:                                                                                                                                      lora_sd3.py:423
                    INFO     create LoRA for Text Encoder 1: 72 modules.                                                                                                                          lora_sd3.py:426
                    INFO     create LoRA for Text Encoder 2:                                                                                                                                      lora_sd3.py:423
2024-11-23 18:10:32 INFO     create LoRA for Text Encoder 2: 192 modules.                                                                                                                         lora_sd3.py:426
                    INFO     create LoRA for SD3 MMDiT: 377 modules.                                                                                                                              lora_sd3.py:455
                    INFO     enable LoRA for U-Net: 377 modules                                                                                                                                   lora_sd3.py:582
prepare optimizer, data loader etc.
                    INFO     use 8-bit AdamW optimizer | {}                                                                                                                                    train_util.py:4673
override steps. steps for 2 epochs is / 指定エポックまでのステップ数: 1200
enable fp8 training for U-Net.
enable fp8 training for Text Encoder.
                    INFO     set U-Net weight dtype to torch.float8_e4m3fn                                                                                                                   train_network.py:606
running training / 学習開始
  num train images * repeats / 学習画像の数×繰り返し回数: 600
  num reg images / 正則化画像の数: 0
  num batches per epoch / 1epochのバッチ数: 600
  num epochs / epoch数: 2
  batch size per device / バッチサイズ: 1
  gradient accumulation steps / 勾配を合計するステップ数 = 1
  total optimization steps / 学習ステップ数: 1200
steps:   0%|                                                                                                                                                                           | 0/1200 [00:00<?, ?it/s]2024-11-23 18:10:48 INFO     text_encoder is not needed for training. deleting to save memory.                                                                                              train_network.py:1076
                    INFO     unet dtype: torch.float8_e4m3fn, device: cuda:0                                                                                                                train_network.py:1098

epoch 1/2
C:\Users\the_X\AppData\Local\Programs\Python\Python311\Lib\site-packages\diffusers\utils\outputs.py:63: FutureWarning: `torch.utils._pytree._register_pytree_node` is deprecated. Please use `torch.utils._pytree.register_pytree_node` instead.
  torch.utils._pytree._register_pytree_node(
C:\Users\the_X\AppData\Local\Programs\Python\Python311\Lib\site-packages\diffusers\utils\outputs.py:63: FutureWarning: `torch.utils._pytree._register_pytree_node` is deprecated. Please use `torch.utils._pytree.register_pytree_node` instead.
  torch.utils._pytree._register_pytree_node(
C:\Users\the_X\AppData\Local\Programs\Python\Python311\Lib\site-packages\diffusers\utils\outputs.py:63: FutureWarning: `torch.utils._pytree._register_pytree_node` is deprecated. Please use `torch.utils._pytree.register_pytree_node` instead.
  torch.utils._pytree._register_pytree_node(
C:\Users\the_X\AppData\Local\Programs\Python\Python311\Lib\site-packages\diffusers\utils\outputs.py:63: FutureWarning: `torch.utils._pytree._register_pytree_node` is deprecated. Please use `torch.utils._pytree.register_pytree_node` instead.
  torch.utils._pytree._register_pytree_node(
2024-11-23 18:10:55 INFO     epoch is incremented. current_epoch: 0, epoch: 1                                                                                                                   train_util.py:715
2024-11-23 18:10:55 INFO     epoch is incremented. current_epoch: 0, epoch: 1                                                                                                                   train_util.py:715
C:\Users\the_X\AppData\Local\Programs\Python\Python311\Lib\site-packages\torch\utils\checkpoint.py:1399: FutureWarning: `torch.cpu.amp.autocast(args...)` is deprecated. Please use `torch.amp.autocast('cpu', args...)` instead.
  with device_autocast_ctx, torch.cpu.amp.autocast(**cpu_autocast_kwargs), recompute_context:  # type: ignore[attr-defined]

学習時のキャプションの一例 A detailed picture of a mecha named A-RRS. A digital illustration of a futuristic, humanoid mecha with intricate armor plating, red accents, and sharp, angular design. The mecha wields two swords crossed in front, with a detailed, mechanical face and a helmet-like structure. The background is plain white, emphasizing the mecha's detailed, metallic appearance.

本当に何が原因でうまく学習してくれないのかが全くわかりません・・。

kohya-ss commented 2 days ago

なかなか悩ましいですね。

DiTのみの学習はnetwork_train_unet_onlyを付けることで行えます。ログによるとINFO enable LoRA for U-Net: 377 modulesとありますので問題ないようです(Text Encoderも学習するとenable LoRA for Text Encoderも合わせて表示されます)。

挙げていただいたキャプションでデフォルトのSD3.5Lで生成するとそれらしい画像が生成されますので、キャプションとしては適切なように思います。

--debug_datasetオプションを付けて起動すると、実際の学習に使用される画像とキャプションが表示されますので、そちらで拡張子指定などが正しいか、念のためご確認いただけますでしょうか。(複数概念ではない場合は正しく学習されるとすると、恐らく問題ないとは思いますが……。)

waomodder commented 2 days ago

@kohya-ss kohyaさん、もしよろしければ先ほどの複数概念を分けてトレーニングしたLoraのトレーニングコマンドを教えていただけないでしょうか? 何か自分のコマンドがどこが間違えているのかを比較したいと考えています。

waomodder commented 2 days ago

--debug_datasetオプションを付けて起動すると、実際の学習に使用される画像とキャプションが表示されますので、そちらで拡張子指定などが正しいか、念のためご確認いただけますでしょうか。

確認は致しました。キャプションも画像もすべて問題ございませんでした。

kohya-ss commented 1 day ago

kohyaさん、もしよろしければ先ほどの複数概念を分けてトレーニングしたLoraのトレーニングコマンドを教えていただけないでしょうか?

コマンドは以下になります。

accelerate launch  --mixed_precision bf16 --num_cpu_threads_per_process 1 sd3_train_network.py 
--pretrained_model_name_or_path path\to\sd3\stabilityai-stable-diffusion-3.5-large\sd3.5_large.safetensors 
--clip_l path\to\sd3\clip_l.safetensors --clip_g path\to\sd3\clip_g.safetensors 
--t5xxl path\to\sd3\t5xxl_fp8_e4m3fn.safetensors --cache_latents_to_disk --save_model_as safetensors --sdpa 
--persistent_data_loader_workers --max_data_loader_n_workers 2 --seed 42 --gradient_checkpointing 
--mixed_precision bf16 --save_precision bf16 --network_module networks.lora_sd3 
--network_dim 16 --network_args "loraplus_unet_lr_ratio=4" --network_train_unet_only 
--optimizer_type adamw8bit --learning_rate 1e-3 --cache_text_encoder_outputs --cache_text_encoder_outputs_to_disk 
--fp8_base --highvram --max_train_epochs 8 --save_every_n_epochs 1 
--dataset_config path\to\dataset\ori1_ori2_cap_1024_bs6.toml --output_dir path\to\sd3\lora 
--output_name sd3-ori1ori2-lora --sample_prompts=path\to\prompts_ori12.txt 
--sample_every_n_epochs 1 --sample_at_first

テストのため学習率を高くし、LoRA+を設定していますが、他は特殊な設定はないかと思います。

キャプション、画像とも問題ないとなると、なかなか難しいですね……。

waomodder commented 1 day ago

共有していただきありがとうございます。 これで一度試してみます!