Aan de slagBegin gratis

Mixed precision training met basis-PyTorch

Je gaat zwevendekommagetallen met lage precisie gebruiken om de training van je vertaamodel te versnellen. Zo zijn 16-bits zwevendekommagetallen (float16) maar half zo groot als hun 32-bits tegenhangers (float32). Dit versnelt berekeningen voor matrixvermenigvuldigingen en convoluties. Onthoud dat dit inhoudt dat je de gradiënten schaalt en bewerkingen cast naar 16-bits zwevendekommagetallen.

Een aantal objecten is al voor je geladen: dataset, model, dataloader en optimizer.

Deze oefening maakt deel uit van de cursus

Efficiënt AI-modellen trainen met PyTorch

Bekijk cursus

Oefeninstructies

  • Definieer vóór de lus een scaler voor de gradiënten met torch.amp.GradScaler.
  • Cast in de lus bewerkingen naar het 16-bits zwevendekommagetaltype met torch.autocast als contextmanager.
  • Schaal in de lus de loss en roep .backward() aan om geschaalde gradiënten te maken.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

# Define a scaler for the gradients
scaler = torch.amp.____()
for batch in train_dataloader:
    inputs, targets = batch["input_ids"], batch["labels"]
    # Casts operations to mixed precision
    with torch.____(device_type="cpu", dtype=torch.____):
        outputs = model(inputs, labels=targets)
        loss = outputs.loss
    # Compute scaled gradients
    scaler.____(loss).backward()
    scaler.step(optimizer)
    scaler.update()
    optimizer.zero_grad()
Code bewerken en uitvoeren