From ae3965a2a7b46586f7da50c25d4b1cc772ab1ad7 Mon Sep 17 00:00:00 2001 From: Linaqruf Date: Sat, 22 Apr 2023 16:14:14 +0700 Subject: [PATCH 1/2] feat: add arguments to set \--wandb_api_key\ before training --- library/train_util.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/library/train_util.py b/library/train_util.py index d43e0075..8ec0ccbf 100644 --- a/library/train_util.py +++ b/library/train_util.py @@ -2079,6 +2079,12 @@ def add_training_arguments(parser: argparse.ArgumentParser, support_dreambooth: parser.add_argument( "--log_tracker_name", type=str, default=None, help="name of tracker to use for logging, default is script-specific default name / ログ出力に使用するtrackerの名前、省略時はスクリプトごとのデフォルト名" ) + parser.add_argument( + "--wandb_api_key", + type=str, + default=None, + help="specify WandB API key to log in before starting training (optional)." + ) parser.add_argument( "--noise_offset", type=float, @@ -2299,7 +2305,7 @@ def read_config_from_file(args: argparse.Namespace, parser: argparse.ArgumentPar args_dict = vars(args) # remove unnecessary keys - for key in ["config_file", "output_config"]: + for key in ["config_file", "output_config", "wandb_api_key"]: if key in args_dict: del args_dict[key] @@ -2761,6 +2767,8 @@ def prepare_accelerator(args: argparse.Namespace): if logging_dir is not None: os.makedirs(logging_dir, exist_ok=True) os.environ["WANDB_DIR"] = logging_dir + if args.wandb_api_key is not None: + wandb.login(key=args.wandb_api_key) accelerator = Accelerator( gradient_accumulation_steps=args.gradient_accumulation_steps, From 9ba4c3edca330b5eb215e625aa1b5f68f0908810 Mon Sep 17 00:00:00 2001 From: Kohya S Date: Sat, 22 Apr 2023 20:18:25 +0900 Subject: [PATCH 2/2] update readme/comment --- README.md | 6 ++++++ library/train_util.py | 15 +++++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index e925b8e7..fe578cf3 100644 --- a/README.md +++ b/README.md @@ -130,13 +130,19 @@ The majority of scripts is licensed under ASL 2.0 (including codes from Diffuser ### 22 Apr. 2023, 2023/4/22: - Added support for logging to wandb. Please refer to [PR #428](https://github.com/kohya-ss/sd-scripts/pull/428). Thank you p1atdev! + - `wandb` installation is required. Please install it with `pip install wandb`. Login to wandb with `wandb login` command, or set `--wandb_api_key` option for automatic login. - Please let me know if you find any bugs as the test is not complete. +- You can automatically login to wandb by setting the `--wandb_api_key` option. Please be careful with the handling of API Key. [PR #435](https://github.com/kohya-ss/sd-scripts/pull/435) Thank you Linaqruf! + - Improved the behavior of `--debug_dataset` on non-Windows environments. [PR #429](https://github.com/kohya-ss/sd-scripts/pull/429) Thank you tsukimiya! - Fixed `--face_crop_aug` option not working in Fine tuning method. - Prepared code to use any upscaler in `gen_img_diffusers.py`. - wandbへのロギングをサポートしました。詳細は [PR #428](https://github.com/kohya-ss/sd-scripts/pull/428)をご覧ください。p1atdev氏に感謝します。 + - `wandb` のインストールが別途必要です。`pip install wandb` でインストールしてください。また `wandb login` でログインしてください(学習スクリプト内でログインする場合は `--wandb_api_key` オプションを設定してください)。 - テスト未了のため不具合等ありましたらご連絡ください。 +- wandbへのロギング時に `--wandb_api_key` オプションを設定することで自動ログインできます。API Keyの扱いにご注意ください。 [PR #435](https://github.com/kohya-ss/sd-scripts/pull/435) Linaqruf氏に感謝します。 + - Windows以外の環境での`--debug_dataset` の動作を改善しました。[PR #429](https://github.com/kohya-ss/sd-scripts/pull/429) tsukimiya氏に感謝します。 - `--face_crop_aug`オプションがFine tuning方式で動作しなかったのを修正しました。 - `gen_img_diffusers.py`に任意のupscalerを利用するためのコード準備を行いました。 diff --git a/library/train_util.py b/library/train_util.py index aa2e2d91..091e04f6 100644 --- a/library/train_util.py +++ b/library/train_util.py @@ -845,7 +845,7 @@ class BaseDataset(torch.utils.data.Dataset): # 画像サイズはsizeより大きいのでリサイズする face_size = max(face_w, face_h) - size = min(self.height, self.width) # 短いほう + size = min(self.height, self.width) # 短いほう min_scale = max(self.height / height, self.width / width) # 画像がモデル入力サイズぴったりになる倍率(最小の倍率) min_scale = min(1.0, max(min_scale, size / (face_size * subset.face_crop_aug_range[1]))) # 指定した顔最小サイズ max_scale = min(1.0, max(min_scale, size / (face_size * subset.face_crop_aug_range[0]))) # 指定した顔最大サイズ @@ -2077,13 +2077,16 @@ def add_training_arguments(parser: argparse.ArgumentParser, support_dreambooth: ) parser.add_argument("--log_prefix", type=str, default=None, help="add prefix for each log directory / ログディレクトリ名の先頭に追加する文字列") parser.add_argument( - "--log_tracker_name", type=str, default=None, help="name of tracker to use for logging, default is script-specific default name / ログ出力に使用するtrackerの名前、省略時はスクリプトごとのデフォルト名" + "--log_tracker_name", + type=str, + default=None, + help="name of tracker to use for logging, default is script-specific default name / ログ出力に使用するtrackerの名前、省略時はスクリプトごとのデフォルト名", ) parser.add_argument( - "--wandb_api_key", - type=str, - default=None, - help="specify WandB API key to log in before starting training (optional)." + "--wandb_api_key", + type=str, + default=None, + help="specify WandB API key to log in before starting training (optional). / WandB APIキーを指定して学習開始前にログインする(オプション)", ) parser.add_argument( "--noise_offset",