Skip to content

Commit c5d50a9

Browse files
committed
Update train_network.py
Fix from kohya-ss#1406
1 parent 2035182 commit c5d50a9

1 file changed

Lines changed: 6 additions & 15 deletions

File tree

train_network.py

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1890,10 +1890,9 @@ def remove_model(old_ckpt_name):
18901890

18911891
# training loop
18921892
if initial_step > 0: # only if skip_until_initial_step is specified
1893-
for skip_epoch in range(epoch_to_start): # skip epochs
1894-
logger.info(f"skipping epoch {skip_epoch+1} because initial_step (multiplied) is {initial_step}")
1895-
initial_step -= len(train_dataloader)
18961893
global_step = initial_step
1894+
logger.info(f"skipping epoch {epoch_to_start} because initial_step (multiplied) is {initial_step}")
1895+
initial_step -= epoch_to_start * len(train_dataloader)
18971896

18981897
# log device and dtype for each model
18991898
logger.info(f"unet dtype: {unet_weight_dtype}, device: {unet.device}")
@@ -1955,16 +1954,13 @@ def remove_model(old_ckpt_name):
19551954

19561955
skipped_dataloader = None
19571956
if initial_step > 0:
1958-
skipped_dataloader = accelerator.skip_first_batches(train_dataloader, initial_step - 1)
1959-
initial_step = 1
1957+
skipped_dataloader = accelerator.skip_first_batches(train_dataloader, initial_step)
1958+
initial_step = 0
19601959

19611960
for step, batch in enumerate(skipped_dataloader or train_dataloader):
19621961
current_step.value = global_step
19631962
current_batch_size = len(batch['network_multipliers'])
19641963
effective_batch_size += current_batch_size
1965-
if initial_step > 0:
1966-
initial_step -= 1
1967-
continue
19681964

19691965
# Determine whether we should synchronize gradients
19701966
sync_gradients = (accumulation_counter + 1) % iter_size == 0 or (step + 1 == len(skipped_dataloader or train_dataloader))
@@ -2476,16 +2472,13 @@ def loss_fn(noise_pred: torch.Tensor, target: torch.Tensor, scale: float = 1.0):
24762472

24772473
skipped_dataloader = None
24782474
if initial_step > 0:
2479-
skipped_dataloader = accelerator.skip_first_batches(train_dataloader, initial_step - 1)
2480-
initial_step = 1
2475+
skipped_dataloader = accelerator.skip_first_batches(train_dataloader, initial_step)
2476+
initial_step = 0
24812477

24822478
for step, batch in enumerate(skipped_dataloader or train_dataloader):
24832479
current_step.value = global_step
24842480
current_batch_size = len(batch['network_multipliers'])
24852481
effective_batch_size += current_batch_size
2486-
if initial_step > 0:
2487-
initial_step -= 1
2488-
continue
24892482

24902483
with accelerator.accumulate(training_model, lossweightMLP) if args.edm2_loss_weighting else accelerator.accumulate(training_model):
24912484
on_step_start_for_network(text_encoder, unet)
@@ -2495,8 +2488,6 @@ def loss_fn(noise_pred: torch.Tensor, target: torch.Tensor, scale: float = 1.0):
24952488
# temporary, for batch processing
24962489
self.on_step_start(args, accelerator, network, text_encoders, unet, batch, weight_dtype)
24972490

2498-
2499-
25002491
if "latents" in batch and batch["latents"] is not None:
25012492
latents = batch["latents"].to(device=accelerator.device)
25022493
else:

0 commit comments

Comments
 (0)