kohya-ss / sd-scripts

Apache License 2.0
4.51k stars 763 forks source link

学習時のエラーについて #1081

Open m0r1s1 opened 5 months ago

m0r1s1 commented 5 months ago

はじめまして。QuadroM4000のPCで使用したいと考えている者です。 Stability matrixを介して導入をさせていただいているのですが、学習を開始すると下記のようにエラーがでてしまい 学習が進みません。(jsonファイルは作られるのですが、それを使って生成をかけてもあまり学習が結果として表れてるようには見えません) そもそもPCのスペックが足りないということであればあきらめがつくのですが、是非使いたいという気持ちが強いため、粘っております。 どうかご教示頂けると幸いです。

running training / 学習開始 num train images * repeats / 学習画像の数×繰り返し回数: 80 num reg images / 正則化画像の数: 0 num batches per epoch / 1epochのバッチ数: 80 num epochs / epoch数: 40 batch size per device / バッチサイズ: 1 gradient accumulation steps / 勾配を合計するステップ数 = 1 total optimization steps / 学習ステップ数: 3200 steps: 0%| | 0/3200 [00:00<?, ?it/s] epoch 1/40 ┌───────────────────── Traceback (most recent call last) ─────────────────────┐ │ C:\Users\user\AppData\Roaming\StabilityMatrix\Packages\kohya_ss\train_netwo │ │ rk.py:974 in │ │ │ │ 971 │ args = train_util.read_config_from_file(args, parser) │ │ 972 │ │ │ 973 │ trainer = NetworkTrainer() │ │ > 974 │ trainer.train(args) │ │ 975 │ │ │ │ C:\Users\user\AppData\Roaming\StabilityMatrix\Packages\kohya_ss\train_netwo │ │ rk.py:782 in train │ │ │ │ 779 │ │ │ │ │ │ │ 780 │ │ │ │ │ loss = loss.mean() # 平均なのでbatch_sizeで割る │ │ 781 │ │ │ │ │ │ │ > 782 │ │ │ │ │ accelerator.backward(loss) │ │ 783 │ │ │ │ │ if accelerator.sync_gradients and args.max_grad_n │ │ 784 │ │ │ │ │ │ params_to_clip = network.get_trainable_params │ │ 785 │ │ │ │ │ │ accelerator.clip_gradnorm(params_to_clip, a │ │ │ │ C:\Users\user\AppData\Roaming\StabilityMatrix\Packages\kohya_ss\venv\lib\si │ │ te-packages\accelerate\accelerator.py:1743 in backward │ │ │ │ 1740 │ │ elif self.distributed_type == DistributedType.MEGATRON_LM: │ │ 1741 │ │ │ return │ │ 1742 │ │ elif self.scaler is not None: │ │ > 1743 │ │ │ self.scaler.scale(loss).backward(kwargs) │ │ 1744 │ │ else: │ │ 1745 │ │ │ loss.backward(kwargs) │ │ 1746 │ │ │ │ C:\Users\user\AppData\Roaming\StabilityMatrix\Packages\kohya_ss\venv\lib\si │ │ te-packages\torch_tensor.py:487 in backward │ │ │ │ 484 │ │ │ │ create_graph=create_graph, │ │ 485 │ │ │ │ inputs=inputs, │ │ 486 │ │ │ ) │ │ > 487 │ │ torch.autograd.backward( │ │ 488 │ │ │ self, gradient, retain_graph, create_graph, inputs=input │ │ 489 │ │ ) │ │ 490 │ │ │ │ C:\Users\user\AppData\Roaming\StabilityMatrix\Packages\kohya_ss\venv\lib\si │ │ te-packages\torch\autograd__init__.py:200 in backward │ │ │ │ 197 │ # The reason we repeat same the comment below is that │ │ 198 │ # some Python versions print out the first line of a multi-line f │ │ 199 │ # calls in the traceback and some print out the last line │ │ > 200 │ Variable._execution_engine.run_backward( # Calls into the C++ en │ │ 201 │ │ tensors, gradtensors, retain_graph, create_graph, inputs, │ │ 202 │ │ allow_unreachable=True, accumulate_grad=True) # Calls into t │ │ 203 │ └─────────────────────────────────────────────────────────────────────────────┘ RuntimeError: CUDA error: CUBLAS_STATUS_EXECUTION_FAILED when calling cublasGemmEx( handle, opa, opb, m, n, k, &falpha, a, CUDA_R_16F, lda, b, CUDA_R_16F, ldb, &fbeta, c, CUDA_R_16F, ldc, CUDA_R_32F, CUBLAS_GEMM_DFALT_TENSOR_OP) steps: 0%| | 0/3200 [00:15<?, ?it/s] ┌───────────────────── Traceback (most recent call last) ─────────────────────┐ │ in _run_module_as_main:196 │ │ │ │ in _run_code:86 │ │ │ │ in :7 │ │ │ │ 4 from accelerate.commands.accelerate_cli import main │ │ 5 if name == 'main': │ │ 6 │ sys.argv[0] = re.sub(r'(-script.pyw|.exe)?$', '', sys.argv[0]) │ │ > 7 │ sys.exit(main()) │ │ 8 │ │ │ │ C:\Users\user\AppData\Roaming\StabilityMatrix\Packages\kohya_ss\venv\lib\si │ │ te-packages\accelerate\commands\accelerate_cli.py:45 in main │ │ │ │ 42 │ │ exit(1) │ │ 43 │ │ │ 44 │ # Run │ │ > 45 │ args.func(args) │ │ 46 │ │ 47 │ │ 48 if name == "main": │ │ │ │ C:\Users\user\AppData\Roaming\StabilityMatrix\Packages\kohya_ss\venv\lib\si │ │ te-packages\accelerate\commands\launch.py:918 in launch_command │ │ │ │ 915 │ elif defaults is not None and defaults.compute_environment == Com │ │ 916 │ │ sagemaker_launcher(defaults, args) │ │ 917 │ else: │ │ > 918 │ │ simple_launcher(args) │ │ 919 │ │ 920 │ │ 921 def main(): │ │ │ │ C:\Users\user\AppData\Roaming\StabilityMatrix\Packages\kohya_ss\venv\lib\si │ │ te-packages\accelerate\commands\launch.py:580 in simple_launcher │ │ │ │ 577 │ process.wait() │ │ 578 │ if process.returncode != 0: │ │ 579 │ │ if not args.quiet: │ │ > 580 │ │ │ raise subprocess.CalledProcessError(returncode=process.re │ │ 581 │ │ else: │ │ 582 │ │ │ sys.exit(1) │ │ 583 │ └─────────────────────────────────────────────────────────────────────────────┘ CalledProcessError: Command '['C:\Users\user\AppData\Roaming\StabilityMatrix\Packages\kohya_ss\venv \Scripts\python.exe', './train_network.py', '--enable_bucket', '--pretrained_model_name_or_path=C:/StableDiffusion20230722/stable-diffusion-we bui/models/Lora/anyloraCheckpoint_bakedvaeBlessedFp16.safetensors', '--train_data_dir=C:/StableDiffusion20230722/lora_train_gui/train/kppgirls', '--resolution=512,512', '--output_dir=C:/StableDiffusion20230722/lora_train_gui/outputs', '--network_alpha=1', '--save_model_as=safetensors', '--network_module=networks.lora', '--text_encoder_lr=5e-05', '--unet_lr=0.0001', '--network_dim=8', '--output_name=last', '--lr_scheduler_num_cycles=40', '--learning_rate=0.0001', '--lr_scheduler=cosine', '--lr_warmup_steps=320', '--train_batch_size=1', '--max_train_steps=3200', '--save_every_n_epochs=40', '--mixed_precision=fp16', '--save_precision=fp16', '--seed=1', '--caption_extension=.txt', '--cache_latents', '--optimizer_type=AdamW8bit', '--max_data_loader_n_workers=0', '--bucket_reso_steps=64', '--xformers', '--bucket_no_upscale']' returned non-zero exit status 1.

Stopped process at 2024/01/26 19:02:48 +09:00

Process finished with exit code -1

kohya-ss commented 5 months ago

CUDA関連のエラーが発生しているようです。確認したところQuadro M4000はMaxwell世代ですが、この世代のGPUでもPyTorchは動作するようでした。GPUドライバおよびCUDAのバージョンや、PyTorchのバージョンをご確認いただけますでしょうか。

またGPUメモリが足りない場合にもこのエラーが起きるようですので、他にGPUメモリを使うアプリ(Web UIなども含む)が起動していないか、またタスクマネージャ等でGPUメモリに空きがあるか、ご確認いただければ幸いです。

m0r1s1 commented 5 months ago

お返事いただきありがとうございます。

早速試してみました。 CUDA Version: 12.0と表記がでてきました。Pytorchはバージョンの確認し仕方を調べてもわからず、ひとまず最新版をインストールしてみました、が、変わらず同じような表記がでてきてしまい、学習が進みませんでした。 タスクマネージャーでGPUをみておりましたが学習開始後でも10%程度だったので、空きはあるように見えました。 (メモリは15ギガ中8ギガでした)

kohya ss のV21.8.0 をインストールしてあるのですが、このバージョンと合うCUDAとpytorchにしなくてはいけない、などございますでしょうか。

m0r1s1 commented 5 months ago

連投大変失礼します。アップデートをかけてみたらCUDAに関するエラーは無くなったのですが、

RuntimeError: Error(s) in loading state_dict for CLIPTextModel: Missing key(s) in state_dict: "text_model.embeddings.position_ids".

   というものが新たにエラーとして出てきました。
   下のものは相変わらず出ている状態です。

   CalledProcessError: Command 

'['C:\Users\user\AppData\Roaming\StabilityMatrix\Packages\kohya_ss\venv \Scripts\python.exe', './train_network.py', '--enable_bucket', '--pretrained_model_name_or_path=C:/StableDiffusion20230722/stable-diffusion-we bui/models/Lora/anyloraCheckpoint_bakedvaeBlessedFp16.safetensors', '--train_data_dir=C:/StableDiffusion20230722/lora_train_gui/train/kppgirls', '--resolution=512,512', '--output_dir=C:/StableDiffusion20230722/lora_train_gui/outputs', '--network_alpha=1', '--save_model_as=safetensors', '--network_module=networks.lora', '--text_encoder_lr=5e-05', '--unet_lr=0.0001', '--network_dim=8', '--output_name=kppgirls_v1', '--lr_scheduler_num_cycles=20', '--learning_rate=0.0001', '--lr_scheduler=cosine', '--lr_warmup_steps=160', '--train_batch_size=1', '--max_train_steps=1600', '--save_every_n_epochs=20', '--mixed_precision=fp16', '--save_precision=fp16', '--seed=1', '--caption_extension=.txt', '--cache_latents', '--optimizer_type=AdamW8bit', '--max_data_loader_n_workers=0', '--bucket_reso_steps=64', '--xformers', '--bucket_no_upscale']' returned non-zero exit status 1.

kohya-ss commented 5 months ago

インストールされているtransformersのバージョンと、スクリプトのバージョンが合わないようです。READMEに記載のupdate手順に従い、アップデートしていただけますでしょうか(venvをactivateした後に pip install --use-pep517 --upgrade -r requirements.txt)。

m0r1s1 commented 5 months ago

ご回答ありがとうございました。 kohya_ssのフォルダでコマンドプロンプトを打ってみました。 アップデートは問題なく行えているようですが、学習を開始すると以下の内容となっており、学習がなされていないようでした。

running training / 学習開始 num train images * repeats / 学習画像の数×繰り返し回数: 80 num reg images / 正則化画像の数: 0 num batches per epoch / 1epochのバッチ数: 80 num epochs / epoch数: 40 batch size per device / バッチサイズ: 1 gradient accumulation steps / 勾配を合計するステップ数 = 1 total optimization steps / 学習ステップ数: 3200 steps: 0%| | 0/3200 [00:00<?, ?it/s] epoch 1/40 Traceback (most recent call last): File "C:\StableDiffusion20230722\lora_train_gui\kohya_ss\train_network.py", line 1033, in trainer.train(args) File "C:\StableDiffusion20230722\lora_train_gui\kohya_ss\train_network.py", line 844, in train accelerator.backward(loss) File "C:\StableDiffusion20230722\lora_train_gui\kohya_ss\venv\lib\site-packages\accelerate\accelerator.py", line 1903, in backward self.scaler.scale(loss).backward(**kwargs) File "C:\StableDiffusion20230722\lora_train_gui\kohya_ss\venv\lib\site-packages\torch_tensor.py", line 492, in backward torch.autograd.backward( File "C:\StableDiffusion20230722\lora_train_gui\kohya_ss\venv\lib\site-packages\torch\autograd__init__.py", line 251, in backward Variable._execution_engine.run_backward( # Calls into the C++ engine to run the backward pass RuntimeError: CUDA error: the launch timed out and was terminated CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect. For debugging consider passing CUDA_LAUNCH_BLOCKING=1. Compile with TORCH_USE_CUDA_DSA to enable device-side assertions.

steps: 0%| | 0/3200 [00:32<?, ?it/s] Traceback (most recent call last): File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main return _run_code(code, main_globals, None, File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code exec(code, run_globals) File "C:\StableDiffusion20230722\lora_train_gui\kohya_ss\venv\Scripts\accelerate.exe__main__.py", line 7, in File "C:\StableDiffusion20230722\lora_train_gui\kohya_ss\venv\lib\site-packages\accelerate\commands\accelerate_cli.py", line 47, in main args.func(args) File "C:\StableDiffusion20230722\lora_train_gui\kohya_ss\venv\lib\site-packages\accelerate\commands\launch.py", line 1017, in launch_command simple_launcher(args) File "C:\StableDiffusion20230722\lora_train_gui\kohya_ss\venv\lib\site-packages\accelerate\commands\launch.py", line 637, in simple_launcher raise subprocess.CalledProcessError(returncode=process.returncode, cmd=cmd) subprocess.CalledProcessError: Command '['C:\StableDiffusion20230722\lora_train_gui\kohya_ss\venv\Scripts\python.exe', './train_network.py', '--enable_bucket', '--min_bucket_reso=256', '--max_bucket_reso=2048', '--pretrained_model_name_or_path=C:/StableDiffusion20230722/stable-diffusion-webui/models/Lora/anyloraCheckpoint_bakedvaeBlessedFp16.safetensors', '--train_data_dir=C:/StableDiffusion20230722/lora_train_gui/train/kppgirls', '--resolution=512,512', '--output_dir=C:/StableDiffusion20230722/lora_train_gui/outputs', '--network_alpha=1', '--save_model_as=safetensors', '--network_module=networks.lora', '--text_encoder_lr=5e-05', '--unet_lr=0.0001', '--network_dim=8', '--output_name=kppgirls_v1', '--lr_scheduler_num_cycles=40', '--learning_rate=0.0001', '--lr_scheduler=cosine', '--lr_warmup_steps=320', '--train_batch_size=1', '--max_train_steps=3200', '--save_every_n_epochs=40', '--mixed_precision=fp16', '--save_precision=fp16', '--seed=1', '--caption_extension=.txt', '--cache_latents', '--optimizer_type=AdamW8bit', '--max_grad_norm=1', '--max_data_loader_n_workers=0', '--bucket_reso_steps=64', '--xformers', '--bucket_no_upscale', '--noise_offset=0.0']' returned non-zero exit status 1.

また、他にkohya ssのguiを立ち上げる時に以下の内容も出てきますが、これも正常に動作していたら出てこない内容でしょうか。

22:11:16-645059 WARNING Package wrong version: torchvision 0.15.2+cu118 required 0.16.2+cu118

お忙しい中大変申し訳ないです。ご教示頂けると幸いです。