ÎncepețiÎncepe gratuit

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

Vezi cursul

Instrucțiuni pentru exercițiu

  • Configurează Accelerator() să folosească acumularea gradienților în doi pași.
  • Configurează un context manager Accelerator pentru a activa acumularea gradienților pentru model.

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}")
Editează și rulează codul