Začněte nyníZačněte zdarma

Trénování se smíšenou přesností v základním PyTorchi

Pro urychlení trénování modelu překladu jazyka použiješ datové typy s nízkou přesností plovoucí desetinné čárky. Například 16bitové typy (float16) mají jen poloviční velikost oproti svým 32bitovým protějškům (float32). To urychluje výpočty maticových násobení a konvolucí. Nezapomeň, že tato technika zahrnuje škálování gradientů a přetypování operací na 16bitovou plovoucí desetinnou čárku.

Některé objekty jsou předem načteny: dataset, model, dataloader a optimizer.

Toto cvičení je součástí kurzu

Efficient AI Model Training with PyTorch

Zobrazit kurz

Pokyny k cvičení

  • Před smyčkou definuj škálovač gradientů pomocí torch.amp.GradScaler.
  • Ve smyčce přetypuj operace na 16bitový datový typ plovoucí desetinné čárky pomocí torch.autocast jako správce kontextu.
  • Ve smyčce škáluj ztrátu a zavolej .backward() pro vytvoření škálovaných gradientů.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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()
Upravit a spustit kód