Skip to content

Commit 8b73454

Browse files
committed
feat: pass optimizer and effective_batch_size for dynamic weight noise scaling
Pass the raw optimizer object and effective batch size to inject_weight_noise() so the network can resolve per-parameter-group LR from optimizer.param_groups for accurate dynamic sigma scaling. Usage: --network_args weight_noise_sigma=1e-3 weight_noise_dynamic_sigma=True
1 parent 2cceed7 commit 8b73454

1 file changed

Lines changed: 10 additions & 1 deletion

File tree

train_network.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2486,7 +2486,16 @@ def remove_model(old_ckpt_name):
24862486
if self.weight_noise_enabled and accelerator.sync_gradients:
24872487
unwrapped_network = accelerator.unwrap_model(network)
24882488
if hasattr(unwrapped_network, "inject_weight_noise"):
2489-
noise_norm = unwrapped_network.inject_weight_noise()
2489+
# Compute effective batch size and fallback LR for dynamic scaling.
2490+
# Pass the optimizer so the network can resolve per-param LR
2491+
# from optimizer.param_groups for accurate dynamic scaling.
2492+
_eff_bs = args.train_batch_size * args.gradient_accumulation_steps
2493+
_fallback_lr = lr_scheduler.get_last_lr()[0]
2494+
_raw_opt = getattr(optimizer, 'optimizer', optimizer)
2495+
noise_norm = unwrapped_network.inject_weight_noise(
2496+
lr=_fallback_lr, effective_batch_size=_eff_bs,
2497+
optimizer=_raw_opt,
2498+
)
24902499
if current_global_step_wnoise is not None:
24912500
current_global_step_wnoise += noise_norm
24922501

0 commit comments

Comments
 (0)