Web検索はbingがおすすめ!

sd-scriptsで次のエポックの処理が始まるまでに時間がかかる - Stable Diffusion

sd-scriptsでsd-scriptsで次のエポックの処理が始まるまでに時間がかかる現象の対処法を紹介します。

現象の確認

sd-scriptsで学習を実行する際に、エポックの切り替えの際に時間がかかり、その間GPUが稼働しない時間があります。
学習処理を高速で実行するために、なるべくGPUが稼働しない時間は減らし、GPUをフル稼働させて学習処理の実行時間を短くしたいです。


エポックの切り替え時に時間がかかることで、GPUが休み休み稼働している状態が確認できます。

対処法

sd-scriptsの起動コマンドに --persistent_data_loader_workers を追加します。
--persistent_data_loader_workers


tomlファイルで設定する場合は、persistent_data_loader_workers パラメータに true を設定します。
persistent_data_loader_workers = true
オプション追加後の実行状況です。GPUがフル稼働している状態が確認できます。

どの程度早くなるのか

学習ステップ 400、23エポックの場合

実行時間
--persistent_data_loader_workers あり 5分12秒
--persistent_data_loader_workers なし 19分58秒

エポック数が多い場合に差が出ますが上記の条件では、4倍程度の速度向上となります。
著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。
掲載日: 2023-07-17
iPentec all rights reserverd.