Training Loop Integration
Use this sub-skill when adapting an existing PyTorch model, optimizer, dataloader, scheduler, or evaluation loop to Accelerate while keeping the training code mostly framework-neutral.
Route first
- For
accelerate config,accelerate launch, launch flags, config files, or process-count setup, use../configuration-and-cli/. - For DeepSpeed, FSDP, TPU, Megatron-LM, FP8 backend recipes, or backend-specific plugin tuning, use
../distributed-training-backends/. - For
save_state,load_state, model checkpoint saving, trackers, profiler, or experiment dashboards, use../checkpointing-and-tracking/. - For large-model loading, device maps, offload, or inference dispatch, use the root skill routing to the big-model sub-skill.
Start here
- Read
references/workflows.mdfor migration recipes and loop patterns. - Read
references/api-reference.mdfor constructor options, wrappers, dataloader semantics, gather/reduce, kwargs handlers, logging, and scheduler behavior. - Read
references/troubleshooting.mdwhen a distributed loop hangs, metrics are wrong, gradients do not sync, or device placement behaves unexpectedly. - Run
scripts/accelerator_loop_smoke.pyto verify a minimal CPU training loop in the current environment.
Core migration checklist
- Create one
Acceleratorearly, before distributed-sensitive objects need its state. - Remove hard-coded
.cuda()and direct.to("cuda"); prefer automatic device placement throughaccelerator.prepare(). - Pass related PyTorch objects to
accelerator.prepare(...)and unpack them in the same order. - Replace
loss.backward()withaccelerator.backward(loss). - For accumulation, create
Accelerator(gradient_accumulation_steps=N)or aGradientAccumulationPlugin, then wrap each minibatch body inwith accelerator.accumulate(model):. - Use
accelerator.gather_for_metrics(...)for evaluation metrics andaccelerator.pad_across_processes(...)before gathering variable-size tensors. - Use
accelerator.print(...)oraccelerate.logging.get_logger(...)instead of unsynchronized process-wideprint()spam.
Smoke check
bashpython skills/accelerate/sub-skills/training-loop-integration/scripts/accelerator_loop_smoke.py python skills/accelerate/sub-skills/training-loop-integration/scripts/accelerator_loop_smoke.py --help
The smoke script is intentionally CPU-safe and tiny. It validates importability, Accelerator.prepare, Accelerator.accumulate, Accelerator.backward, scheduler wrapping, and metric gathering without requiring a distributed launcher.


