GPU (Graphics Processing Unit)
GPU, paralel matematik işlemleri için tasarlanmış binlerce çekirdeğe sahip bir işlemcidir; bu nedenle derin öğrenme modellerini eğitmek ve çalıştırmak için kullanılan başlıca donanımdır.
Bir grafik işlem birimi (GPU), aynı işlemi çok sayıda veri öğesinde aynı anda yürüten binlerce basit çekirdeğe sahip bir işlemcidir. GPU'lar 3B grafikleri işlemek, yani milyonlarca pikseli ve köşeyi paralel olarak hesaplamak için geliştirildi; derin öğrenmenin başlıca donanımı hâline gelmelerinin nedeni ise sinir ağı eğitimi ve çıkarımında, aynı şekilde paralelleştirilebilen matris çarpımlarının baskın olmasıdır. NVIDIA'nın 2007'de yayımladığı CUDA platformu, GPU'larını genel amaçlı hesaplamalar için programlanabilir hâle getirdi; 2012'de iki NVIDIA GTX 580 GPU'da beş ila altı gün eğitilen AlexNet ağı, en yakın rakibin %26,2'lik değerine karşı %15,3'lük ilk-5 hata oranıyla ImageNet yarışmasını kazandı. Günümüzde PyTorch, TensorFlow ve JAX; NVIDIA GPU'larda CUDA, AMD GPU'larda ROCm ve Apple yongalarında Metal üzerinden çalışıyor; binlerce GPU'dan oluşan kümeler de en büyük temel modelleri eğitiyor.
GPU'lar Derin Öğrenmeyi Nasıl Hızlandırır#
Bir CPU, az sayıdaki çekirdeğin dallanmalı kodu hızla çalıştırabilmesi için yonga alanının çoğunu önbelleklere ve kontrol mantığına ayırır. GPU ise bu alanı aritmetik işlemlere ayırır: NVIDIA GPU, her biri 32 iş parçacığından oluşan ve warp adı verilen grupları çalıştıran akış çoklu işlemcilerine bölünür; bu iş parçacıkları farklı verilerde aynı komutu yürütür. Bazı warp'lar bellek beklerken diğerleri hesaplama yapar; böylece yeterli paralel iş olduğu sürece yonga çalışmayı sürdürür. 2017'deki Volta neslinden beri NVIDIA GPU'larda, FP8 ve Blackwell'den bu yana FP4 dâhil olmak üzere, küçük matrisleri düşük hassasiyetle tek adımda çarpan Tensor Core birimleri de bulunur. Bir NVIDIA A100, standart FP32 işlemlerinde 19,5 TFLOPS'a, Tensor Core birimlerindeki BF16 işlemlerinde ise 312 TFLOPS'a ulaşır; GPU eğitimlerinin çoğunda karma hassasiyet kullanılmasının nedeni budur. Bu kod, aynı matris çarpımının CPU ve GPU'daki süresini ölçer:
import time
import torch
gpu = torch.accelerator.current_accelerator() # cuda, mps, or xpu device on this machine
a = torch.randn(4096, 4096)
b = torch.randn(4096, 4096)
for device in (torch.device("cpu"), gpu):
x, y = a.to(device), b.to(device)
x @ y # warm-up run
torch.accelerator.synchronize()
start = time.perf_counter()
for _ in range(10):
x @ y
torch.accelerator.synchronize() # GPU calls return immediately, so wait for them to finish
seconds = (time.perf_counter() - start) / 10
print(f"{device.type}: {seconds * 1000:.1f} ms per multiply, {2 * 4096**3 / seconds / 1e12:.1f} TFLOPS")Apple M5 Pro dizüstü bilgisayarda kod cpu: 80.0 ms per multiply, 1.7 TFLOPS ve mps: 18.3 ms per multiply, 7.5 TFLOPS değerlerini yazdırır; bu da dizüstü bilgisayarın tümleşik GPU'sunun FP32'de yaklaşık 4,4 kat daha hızlı olduğu anlamına gelir. Veri merkezi GPU'ları, hem daha fazla çekirdek hem de çekirdeklere ağırlık ve etkinleştirmeleri sağlayacak kadar, saniyede birkaç terabayt veri aktaran yüksek bant genişlikli bellek (HBM) sayesinde bu farkı daha da açar. Genellikle VRAM adı verilen GPU belleği, tek bir cihaza sığabilecek model boyutunu ve yığın boyutunu da belirler; gradyan kontrol noktası ve dağıtık eğitim gibi teknikler bu sınırı aşmaya yardımcı olur.
GPU'larda Model Eğitme ve Dağıtma#
Bir eğitim işi, ancak işlem hattının geri kalanı GPU'ya yetişebildiğinde GPU'yu meşgul tutar: CPU çalışanları görselleri yeterince hızlı çözmeli ve artırmalı, çekirdekleri dolduracak kadar büyük yığınlar kullanılmalı, Tensor Core birimlerinde ise hesaplamalar azaltılmış hassasiyetle yürütülmelidir. Düşük GPU kullanımı genellikle şu adımlardan birine işaret eder:
Ultralytics YOLO, kullanılabilir bir GPU olduğunda varsayılan olarak ilk CUDA GPU'da eğitim yapar, çoklu GPU eğitimi için device=[0, 1] seçeneğini kabul eder ve batch=-1 ile GPU'nun boş belleğini ölçüp boş belleğin yaklaşık %60'ını kullanacak bir batch boyutu seçen AutoBatch'i çalıştırır. Çıkarım için YOLO26 nano modeli TensorRT'ye aktarıldığında, NVIDIA T4 GPU'da 640 piksellik bir görüntüyü 1,7 ms'de işler; CPU'da ONNX kullanıldığında aynı işlem 38,9 ms sürer. Bu kod, YOLO26'yı AutoBatch ile ilk GPU'da eğitir:
from ultralytics import YOLO
# En küçük YOLO26 algılama modelini yükle
model = YOLO("yolo26n.pt")
# GPU 0'da eğit ve yığın boyutunu GPU belleğine göre AutoBatch'in belirlemesini sağla
results = model.train(data="coco8.yaml", epochs=3, imgsz=640, device=0, batch=-1)GPU, CPU, TPU ve NPU Karşılaştırması#
- CPU: Genel amaçlı, dallanmalı kod için tasarlanmış birkaç güçlü çekirdeğe sahiptir. CPU'lar çoğu eğitim işlem hattında veri yükleme ve ön işleme işlemlerini yürütür; hızlandırıcı bulunmadığında da çıkarım yapar.
- GPU: Binlerce programlanabilir çekirdeğin yanı sıra Tensor Core birimlerine sahiptir. GPU'lar neredeyse her modeli ve çerçeveyi çalıştırır, çeşitli üreticilerden temin edilebilir ve tüm büyük bulut platformlarında bulunur.
- TPU: Büyük matris çarpım birimleri etrafında tasarlanmış, Google'ın uygulamaya özel yongasıdır. TPU'lar büyük ve yoğun matris iş yüklerinde verimlilik karşılığında GPU esnekliğinden ödün verir ve Google Cloud üzerinden kullanılabilir.
- NPU: Telefonlarda, dizüstü bilgisayarlarda ve uç cihazlarda bulunan, eğitimden çok çıkarım için kullanılan, düşük güçlü bir sinir ağı hızlandırıcısıdır.
Gerçek Dünya Uygulamaları#
- Büyük modelleri eğitme: Milyarlarca parametreli dil ve görü modelleri, NVLink ve InfiniBand gibi yüksek hızlı bağlantılarla birbirine bağlanan binlerce veri merkezi GPU'sundan oluşan kümelerde eğitilir.
- Gerçek zamanlı video analitiği: Tek bir GPU; trafik izleme, perakende analitiği veya fabrika denetimi için birçok kamera akışında nesne algılama ve izleme işlemlerini aynı anda yürütebilir.
- Robotik ve otonom araçlar: NVIDIA Jetson gibi gömülü GPU modülleri, algılama modellerini araç üzerinde çalıştırır; kamera verilerinin sunucuya gönderilmesi burada çok fazla gecikmeye yol açar.
- Tıbbi görüntüleme: GPU'lar, organ ve tümör segmentasyonu için büyük 3B BT ve MRI hacimlerini dakikalar yerine saniyeler içinde işler.










