Acumularea gradienților cu Accelerator
Antrenezi un model de limbaj pentru a simplifica traducerile prin parafrazarea propozițiilor complexe, dar GPU-ul tău rămâne fără memorie. Acumularea gradienților permite modelului să se antreneze eficient pe loturi mai mari, folosind loturi mici care încap în memorie. Preferi să scrii bucla de antrenament explicit pentru a-i vedea structura, așa că folosești Accelerator. Rețineți că acest exercițiu rulează de fapt pe CPU, dar codul rămâne același și pentru GPU.
model, train_dataloader, optimizer și lr_scheduler au fost predefinite.
Acest exercițiu face parte din cursul
Antrenament eficient al modelelor AI cu PyTorch
Instrucțiuni pentru exercițiu
- Configurează
Accelerator()să folosească acumularea gradienților în doi pași. - Configurează un context manager
Acceleratorpentru a activa acumularea gradienților pentrumodel.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# Configure Accelerator
accelerator = ____(____=____)
model, optimizer, train_dataloader, lr_scheduler = accelerator.prepare(model, optimizer, train_dataloader, lr_scheduler)
for batch in train_dataloader:
# Set up an Accelerator context manager
with ____.____(____):
inputs, targets = batch["input_ids"], batch["labels"]
outputs = model(inputs, labels=targets)
loss = outputs.loss
accelerator.backward(loss)
optimizer.step()
lr_scheduler.step()
optimizer.zero_grad()
print(f"Loss = {loss}")