GPU desteği
- Makine Öğrenmesi kursu
- İleri seviye
- Ders 11/78
- 5 dk
PyTorch, tensor'ları GPU'ya taşıyarak hızlı hesaplama sağlar.
GPU desteği
Derin öğrenmenin hızı, matris çarpımlarının GPU'da paralel yapılmasından gelir. PyTorch'ta bir tensör ya da model .to(cihaz) ile GPU'ya taşınır. Kod, GPU yoksa CPU'ya düşecek biçimde yazılır:
cihaz = "cuda" if torch.cuda.is_available() else "cpu"
x = torch.randn(1000, 1000).to(cihaz)
model = model.to(cihaz)
y = model(x) # hesap seçilen cihazdaApple çiplerinde "mps" cihazı kullanılır: torch.backends.mps.is_available().
Cihaz kalıpları
Eğitim döngüsünde her toplu veri modele verilmeden önce aynı cihaza taşınır. Sonuçları NumPy'a çevirmek için önce CPU'ya dönmek gerekir:
for xb, yb in yukleyici:
xb, yb = xb.to(cihaz), yb.to(cihaz)
cikti = model(xb)
tahmin = cikti.argmax(dim=1).cpu().numpy() # GPU -> CPU -> NumPyGPU ile CPU arasındaki kopyalama yavaştır; döngü içinde gereksiz .cpu() çağrılarından kaçınılır.
Uygulama Cihazdan bağımsız kod
Cihazı "cuda" if torch.cuda.is_available() else "cpu" ile seç. x = torch.ones(2, 3)'ü cihaza taşı, 3 ile çarp ve sonucu .cpu() ile geri alıp tolist() ile yazdır. Ardından sonucun device.type değerinin "cpu" olduğunu yazdır.
Başlangıç kodu
import torch
# buraya yazÖrnek çözüm
import torch
cihaz = "cuda" if torch.cuda.is_available() else "cpu"
x = torch.ones(2, 3).to(cihaz)
sonuc = (x * 3).cpu()
print(sonuc.tolist())
print(sonuc.device.type == "cpu")Beklenen çıktı
[[3.0, 3.0, 3.0], [3.0, 3.0, 3.0]] True
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Biri CPU'da biri GPU'da olan iki tensörü toplarsan ne olur?
- Otomatik taşınır
- Sonuç CPU'da olur
- Sorunsuz çalışır
- Hata verir; ikisi aynı cihazda olmalı Doğru cevap
Açıklama: İşlemdeki tüm tensörler ve model aynı cihazda bulunmalıdır.
2 Tensörü seçilen cihaza taşı.
x = x.____(cihaz)
x = x.to(cihaz)
Açıklama: .to() hem cihaz hem tür değiştirebilir.
3 İfadeleri eşleştir.
| Kavram | Anlamı |
|---|---|
torch.cuda.is_available() |
GPU var mı? |
.to(cihaz) |
Cihaza taşı |
.cpu() |
CPU'ya dön |
"mps" |
Apple GPU'su |