Fix race condition that can corrupt grads under certain conditions.

This commit is contained in:
Jaret Burkett committed 2026-08-07 14:52:47 -06:00
1 parent 817f3dcbcb
commit f4e9130547
3 files changed
+53 -15

No files matched your search

@@ -20,6 +20,7 @@ from toolkit.guidance import get_targeted_guidance_loss, get_guidance_loss, Guid
from toolkit.image_utils import show_tensors, show_latents
from toolkit.ip_adapter import IPAdapter
from toolkit.custom_adapter import CustomAdapter
from toolkit.memory_management import sync_grad_transfers
from toolkit.print import print_acc
from toolkit.prompt_utils import PromptEmbeds, concat_prompt_embeds
from toolkit.reference_adapter import ReferenceAdapter
@@ -2218,6 +2219,9 @@ class SDTrainer(BaseSDTrainProcess):
if not self.is_grad_accumulation_step:
# grads of memory-managed (offloaded) params are async D2H copies into
# pinned tensors; join them before anything on the CPU reads .grad
sync_grad_transfers()
# fix this for multi params
if self.train_config.optimizer != 'adafactor':
if isinstance(self.params[0], dict):