Temel PyTorch ile karma hassasiyetli eğitim
Dil çeviri modelinin eğitimini hızlandırmak için düşük hassasiyetli kayan nokta veri tiplerini kullanacaksın. Örneğin, 16 bit kayan nokta veri tipi (float16), 32 bit karşılığının (float32) yalnızca yarısı boyutundadır. Bu da matris çarpımları ve evrişimlerin hesaplamalarını hızlandırır. Bunun, gradyanların ölçeklenmesini ve işlemlerin 16 bit kayan nokta tipine dökülmesini içerdiğini unutma.
Bazı nesneler önceden yüklendi: dataset, model, dataloader ve optimizer.
Bu egzersiz, kursun bir parçasıdır
PyTorch ile Verimli AI Model Eğitimi
Egzersiz talimatları
- Döngüden önce,
torch.amp.GradScalerkullanarak gradyanlar için bir scaler tanımla. - Döngü içinde,
torch.autocast’i bir bağlam yöneticisi olarak kullanarak işlemleri 16 bit kayan nokta veri tipine dök. - Döngü içinde, kaybı ölçekle ve ölçeklenmiş gradyanlar oluşturmak için
.backward()çağır.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# 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()