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
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.autocastjako 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()