mirror of
https://github.com/kohya-ss/sd-scripts.git
synced 2026-04-17 01:12:41 +00:00
fix: use getattr for safe attribute access in argument verification
This commit is contained in:
1
.codex-tmp/LECO
Submodule
1
.codex-tmp/LECO
Submodule
Submodule .codex-tmp/LECO added at a93cb46db4
1
.codex-tmp/ai-toolkit
Submodule
1
.codex-tmp/ai-toolkit
Submodule
Submodule .codex-tmp/ai-toolkit added at 35b1cde3cb
@@ -62,7 +62,7 @@ def add_deepspeed_arguments(parser: argparse.ArgumentParser):
|
||||
|
||||
|
||||
def prepare_deepspeed_args(args: argparse.Namespace):
|
||||
if not args.deepspeed:
|
||||
if not getattr(args, "deepspeed", False):
|
||||
return
|
||||
|
||||
# To avoid RuntimeError: DataLoader worker exited unexpectedly with exit code 1.
|
||||
@@ -70,7 +70,7 @@ def prepare_deepspeed_args(args: argparse.Namespace):
|
||||
|
||||
|
||||
def prepare_deepspeed_plugin(args: argparse.Namespace):
|
||||
if not args.deepspeed:
|
||||
if not getattr(args, "deepspeed", False):
|
||||
return None
|
||||
|
||||
try:
|
||||
|
||||
@@ -4405,7 +4405,7 @@ def verify_command_line_training_args(args: argparse.Namespace):
|
||||
|
||||
|
||||
def enable_high_vram(args: argparse.Namespace):
|
||||
if args.highvram:
|
||||
if getattr(args, "highvram", False):
|
||||
logger.info("highvram is enabled / highvramが有効です")
|
||||
global HIGH_VRAM
|
||||
HIGH_VRAM = True
|
||||
@@ -4418,10 +4418,10 @@ def verify_training_args(args: argparse.Namespace):
|
||||
"""
|
||||
enable_high_vram(args)
|
||||
|
||||
if args.v2 and args.clip_skip is not None:
|
||||
if getattr(args, "v2", False) and getattr(args, "clip_skip", None) is not None:
|
||||
logger.warning("v2 with clip_skip will be unexpected / v2でclip_skipを使用することは想定されていません")
|
||||
|
||||
if args.cache_latents_to_disk and not args.cache_latents:
|
||||
if getattr(args, "cache_latents_to_disk", False) and not getattr(args, "cache_latents", False):
|
||||
args.cache_latents = True
|
||||
logger.warning(
|
||||
"cache_latents_to_disk is enabled, so cache_latents is also enabled / cache_latents_to_diskが有効なため、cache_latentsを有効にします"
|
||||
@@ -4440,32 +4440,32 @@ def verify_training_args(args: argparse.Namespace):
|
||||
# "perlin_noise and multires_noise_iterations cannot be enabled at the same time / perlin_noiseとmultires_noise_iterationsを同時に有効にできません"
|
||||
# )
|
||||
|
||||
if args.adaptive_noise_scale is not None and args.noise_offset is None:
|
||||
if getattr(args, "adaptive_noise_scale", None) is not None and getattr(args, "noise_offset", None) is None:
|
||||
raise ValueError("adaptive_noise_scale requires noise_offset / adaptive_noise_scaleを使用するにはnoise_offsetが必要です")
|
||||
|
||||
if args.scale_v_pred_loss_like_noise_pred and not args.v_parameterization:
|
||||
if getattr(args, "scale_v_pred_loss_like_noise_pred", False) and not getattr(args, "v_parameterization", False):
|
||||
raise ValueError(
|
||||
"scale_v_pred_loss_like_noise_pred can be enabled only with v_parameterization / scale_v_pred_loss_like_noise_predはv_parameterizationが有効なときのみ有効にできます"
|
||||
)
|
||||
|
||||
if args.v_pred_like_loss and args.v_parameterization:
|
||||
if getattr(args, "v_pred_like_loss", None) and getattr(args, "v_parameterization", False):
|
||||
raise ValueError(
|
||||
"v_pred_like_loss cannot be enabled with v_parameterization / v_pred_like_lossはv_parameterizationが有効なときには有効にできません"
|
||||
)
|
||||
|
||||
if args.zero_terminal_snr and not args.v_parameterization:
|
||||
if getattr(args, "zero_terminal_snr", False) and not getattr(args, "v_parameterization", False):
|
||||
logger.warning(
|
||||
f"zero_terminal_snr is enabled, but v_parameterization is not enabled. training will be unexpected"
|
||||
+ " / zero_terminal_snrが有効ですが、v_parameterizationが有効ではありません。学習結果は想定外になる可能性があります"
|
||||
)
|
||||
|
||||
if args.sample_every_n_epochs is not None and args.sample_every_n_epochs <= 0:
|
||||
if getattr(args, "sample_every_n_epochs", None) is not None and args.sample_every_n_epochs <= 0:
|
||||
logger.warning(
|
||||
"sample_every_n_epochs is less than or equal to 0, so it will be disabled / sample_every_n_epochsに0以下の値が指定されたため無効になります"
|
||||
)
|
||||
args.sample_every_n_epochs = None
|
||||
|
||||
if args.sample_every_n_steps is not None and args.sample_every_n_steps <= 0:
|
||||
if getattr(args, "sample_every_n_steps", None) is not None and args.sample_every_n_steps <= 0:
|
||||
logger.warning(
|
||||
"sample_every_n_steps is less than or equal to 0, so it will be disabled / sample_every_n_stepsに0以下の値が指定されたため無効になります"
|
||||
)
|
||||
|
||||
@@ -42,6 +42,7 @@ def setup_parser() -> argparse.ArgumentParser:
|
||||
train_util.add_sd_models_arguments(parser)
|
||||
train_util.add_optimizer_arguments(parser)
|
||||
train_util.add_training_arguments(parser, support_dreambooth=False)
|
||||
custom_train_functions.add_custom_train_arguments(parser, support_weighted_captions=False)
|
||||
sdxl_train_util.add_sdxl_training_arguments(parser, support_text_encoder_caching=False)
|
||||
add_logging_arguments(parser)
|
||||
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
import sdxl_train_leco
|
||||
from library import deepspeed_utils, sdxl_train_util, train_util
|
||||
|
||||
|
||||
def test_syntax():
|
||||
assert sdxl_train_leco is not None
|
||||
|
||||
|
||||
def test_setup_parser_supports_shared_training_validation():
|
||||
args = sdxl_train_leco.setup_parser().parse_args(["--prompts_file", "slider.yaml"])
|
||||
|
||||
train_util.verify_training_args(args)
|
||||
sdxl_train_util.verify_sdxl_training_args(args, support_text_encoder_caching=False)
|
||||
|
||||
assert args.min_snr_gamma is None
|
||||
assert deepspeed_utils.prepare_deepspeed_plugin(args) is None
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
import train_leco
|
||||
from library import deepspeed_utils, train_util
|
||||
|
||||
|
||||
def test_syntax():
|
||||
assert train_leco is not None
|
||||
|
||||
|
||||
def test_setup_parser_supports_shared_training_validation():
|
||||
args = train_leco.setup_parser().parse_args(["--prompts_file", "slider.yaml"])
|
||||
|
||||
train_util.verify_training_args(args)
|
||||
|
||||
assert args.min_snr_gamma is None
|
||||
assert deepspeed_utils.prepare_deepspeed_plugin(args) is None
|
||||
|
||||
@@ -40,6 +40,7 @@ def setup_parser() -> argparse.ArgumentParser:
|
||||
train_util.add_sd_models_arguments(parser)
|
||||
train_util.add_optimizer_arguments(parser)
|
||||
train_util.add_training_arguments(parser, support_dreambooth=False)
|
||||
custom_train_functions.add_custom_train_arguments(parser, support_weighted_captions=False)
|
||||
add_logging_arguments(parser)
|
||||
|
||||
parser.add_argument(
|
||||
|
||||
Reference in New Issue
Block a user