AMP ile Karışık Hassasiyet Eğitimi
torch.cuda.amp.autocast(), GradScaler, FP16 ve BF16 karşılaştırması, bellek tasarrufu, hız kazanımları.
AMP ile Karışık Hassasiyet Eğitimi, CoddyKit'te ücretsiz bir Learn AI with Python dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn AI with Python öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn AI with Python kursu toplamda 4 dersten oluşur.
Karma Hassasiyet Nedir
Karma hassasiyet eğitimi, işlemlerin çoğunu 32 bitlik (FP32) kayan nokta yerine 16 bitlik (FP16) kayan nokta ile gerçekleştirir. FP16 belleğin yarısını kullanır ve modern GPU tensör çekirdeklerinde daha hızlı çalışır; hassas işlemlerden birkaçı ise kararlılık için FP32 olarak kalır.
Faydaları
Karma hassasiyet size şunları sağlar:
- Yaklaşık 2 kat bellek tasarrufu; daha büyük yığınları veya modelleri mümkün kılar
- Tensör çekirdeklerinde daha hızlı matris çarpımları
- Doğru uygulandığında son model doğruluğunda çok az veya hiç kayıp olmaması
FP16 Alt Taşma Sorunu
FP16'nın aralığı dardır. Küçük gradyan değerleri fark edilmeden sıfıra alt taşabilir ve öğrenmeyi durdurabilir. Bu, karma hassasiyetin çözmesi gereken temel sorundur ve her şeyi neden doğrudan FP16'ya dönüştüremeyeceğimizi açıklar.
torch.cuda.amp
PyTorch Automatic Mixed Precision (AMP), ayrıntıları iki araçla yönetir: autocast her işlem için hassasiyeti seçer, GradScaler ise gradyanların alt taşmasını önler.
import torch
from torch.cuda.amp import autocast, GradScalerautocast Bağlamı
İleri geçişi autocast() içine sarınız. PyTorch bunun içinde her işlemi otomatik olarak en güvenli hassasiyetle çalıştırır: matris çarpımları FP16, softmax ve kayıp gibi indirgemeler FP32 olarak çalışır.
with autocast():
output = model(x)
loss = criterion(output, y)GradScaler'ı Tanıyalım
GradScaler, geriye yayılımdan önce kaybı büyük bir ölçek katsayısıyla çarparak alt taşmayla mücadele eder. Bu, küçük gradyanları FP16'nın ifade edebileceği aralığa taşır; ölçek, iyileştirici adımından önce kaldırılır.
scaler = GradScaler()Kayıbı Ölçekleme
scaler.scale(loss).backward(), kaybı büyütür ve ardından geriye yayılımı çalıştırır. Ortaya çıkan gradyanlar da ölçeklenir; böylece küçük değerlerin yok olması önlenir.
scaler.scale(loss).backward()scaler.step
scaler.step(optimizer), önce gradyanların ölçeğini gerçek büyüklüklerine geri getirir, ardından optimizer.step() çağrısını yapar; ancak bu işlem yalnızca sonsuz değer veya NaNs oluşmadıysa gerçekleştirilir. Gradyanlarda taşma olduysa adım atlanır.
scaler.step(optimizer)scaler.update
scaler.update(), sonraki yineleme için ölçek katsayısını ayarlar: adımlar başarılı olduğunda ölçeği artırır, taşmadan sonra azaltır. Bu uyarlamalı ölçekleme, eğitimi otomatik olarak kararlı tutar.
scaler.update()Tam AMP Döngüsü
Bu parçaları bir araya getirdiğinizde eksiksiz bir karma hassasiyet eğitim adımı elde edersiniz.
scaler = GradScaler()
for x, y in loader:
x, y = x.cuda(), y.cuda()
optimizer.zero_grad()
with autocast():
out = model(x)
loss = criterion(out, y)
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()Uygulama İpuçları
Şunları aklınızda tutunuz:
backward()çağrısını yalnızca ölçeklenmiş kayıp üzerinde yapınız- autocast yalnızca ileri geçişi sarar; geriye yayılımı veya iyileştirici adımını sarmaz
- AMP, tensör çekirdekli GPU'larda çok etkilidir; eski donanımlardaki kazanımlar daha küçüktür
Hızlı Kontrol
AMP bilginizi sınayınız.
Özet
AMP ile karma hassasiyet eğitimini öğrendiniz:
autocast(), ileri geçişte her işlem için FP16 veya FP32'yi seçer- GradScaler, gradyanların alt taşmasını önlemek için kaybı ölçekler
- Döngü
scaler.scale(loss).backward(),scaler.step(optimizer),scaler.update()adımlarından oluşur - Sonuç: yaklaşık 2 kat bellek tasarrufu ve daha hızlı eğitim
Sıkça Sorulan Sorular
“AMP ile Karışık Hassasiyet Eğitimi” dersi ücretsiz mi?
Evet — “AMP ile Karışık Hassasiyet Eğitimi” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn AI with Python kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn AI with Python kursu toplamda 4 dersten oluşur.
“AMP ile Karışık Hassasiyet Eğitimi” dersinde ne öğreneceğim?
torch.cuda.amp.autocast(), GradScaler, FP16 ve BF16 karşılaştırması, bellek tasarrufu, hız kazanımları. Learn AI with Python ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Learn AI with Python öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Learn AI with Python, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“AMP ile Karışık Hassasiyet Eğitimi” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Learn AI with Python dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Learn AI with Python dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- DataParallel ile Çoklu GPU Eğitimi
- DistributedDataParallel (DDP)
- AMP ile Karışık Hassasiyet Eğitimi
- Hugging Face Accelerate ile Verimli Eğitim