GPU Sunucu Nedir? Yapay Zeka Geleceğinizi Şekillendirin

yapayzekaserver.com
GPU Sunucu Nedir ve Neden Bu Kadar Önemli?
GPU sunucu, Graphics Processing Unit (Grafik İşlem Birimi) ile donatılmış özel sunuculardır. GPU sunucuları, kuruluşları dönüştürerek yüksek performanslı bilgi işlem (HPC), yapay zeka (AI), makine öğrenimi (ML) ve derin öğrenmeyi mümkün kılar. Bu sunucular, geleneksel CPU tabanlı sunuculardan çok daha hızlı paralel işlem yapabilme yetenekleri sayesinde modern teknolojinin temel taşlarından biri haline gelmiştir.
BİLGİ
Yapay Zeka ve Makine Öğreniminde GPU'nun Rolü
Yapay Zeka (AI) çağının açılmasında üç yakınsama kuvveti etkili oldu: çok geniş veri depolamalarının bulunması, derin öğrenme algoritmalarının icadı ve GPU hesaplamanın güçlü performansı. Modern yapay zeka uygulamaları, geleneksel işlemcilerin kapasitesini aşan karmaşık matematiksel hesaplamalar gerektirir.
GPU Sunucu Kullanım Alanları
GPU sunucular, paralel işlem yetenekleri sayesinde yüksek işlem gücü gerektiren birçok kritik alanda devrim yaratmaktadır. Özellikle büyük veri, gerçek zamanlı analiz ve yapay zeka gibi yoğun hesaplama gerektiren uygulamalarda vazgeçilmez hale gelmiştir.
GPU sunucular, sunduğu yüksek işlem gücü ve esnek altyapı sayesinde, geleceğin teknolojilerini şekillendiren birçok alanda stratejik bir rol üstlenmektedir. İşte GPU sunucuların öne çıkan kullanım alanları:
Sıkça Sorulan Sorular (S.S.S)

GPU sunucu ile normal sunucu arasındaki fark nedir?
Donanım Yapısı:
Normal sunucu: Temel olarak CPU, RAM, depolama ve ağ bileşenlerinden oluşur
GPU sunucu: Bunlara ek olarak bir veya birden fazla güçlü grafik işlem birimi (GPU) içerir
İşlem Gücü:
Normal sunucu: CPU'lar seri işleme odaklıdır, karmaşık görevleri sırayla yapar
GPU sunucu: GPU'lar binlerce küçük çekirdeğe sahip olup paralel işleme konusunda çok güçlüdür
Kullanım Alanları:
Normal sunucu: Web siteleri, veritabanları, dosya paylaşımı, genel iş uygulamaları
GPU sunucu: Yapay zeka, makine öğrenmesi, kripto madenciliği, 3D render, bilimsel hesaplamalar, video işleme
Performans:
Normal sunucu: Genel amaçlı görevlerde dengeli performans
GPU sunucu: Paralel hesaplama gerektiren görevlerde çok daha yüksek performans
Maliyet:
Normal sunucu: Daha uygun fiyatlı
GPU sunucu: GPU'ların yüksek maliyeti nedeniyle önemli ölçüde daha pahalı
Güç Tüketimi:
Normal sunucu: Daha düşük enerji tüketimi
GPU sunucu: GPU'lar yüksek enerji tükettiği için elektrik maliyeti daha yüksek
Hangi tür sunucuya ihtiyacınız olduğu, yapacağınız işin türüne bağlıdır. Genel web uygulamaları için normal sunucu yeterken, AI geliştirme veya yoğun grafik işlemleri için GPU sunucu gereklidir.
Hangi programlama dillerini destekliyorsunuz?
GPU Programlama için Ana Diller:
CUDA (NVIDIA GPU'lar için):
C/C++
Python (CuPy, Numba, PyCUDA)
Fortran
OpenCL (Tüm GPU'lar için):
C/C++
Python (PyOpenCL)
Java (JOCL)
AI/ML Framework'leri:
Python: TensorFlow, PyTorch, JAX, Keras
R: TensorFlow R, torch for R
Julia: Flux.jl, MLJ.jl
C++: LibTorch, TensorFlow C++
Paralel Hesaplama:
Python: CuPy, Numba, Rapids (cuDF, cuML)
C++: Thrust, CUB
Fortran: CUDA Fortran
Yüksek Seviye Çözümler:
Python: Dask, Ray (dağıtık hesaplama)
Scala: Apache Spark (GPU desteği ile)
Jav * aScript: TensorFlow.js (WebGL backend)
Özel GPU Kütüphaneleri:
cuBLAS, cuDNN, cuFFT (NVIDIA)
ROCm (AMD GPU'lar için)
En Popüler Seçenekler:
Python - En yaygın kullanılan, zengin ekosistem
C++ - En yüksek performans
Julia - Bilimsel hesaplamalar için ideal
CUDA C - Doğrudan GPU kontrolü
Hangi GPU modelini seçmeliyim? (H200, H100, RTX Pro 6000 Blackwell, L40S, T4/L4, RTX5090, RTX4090, vs.)
NVIDIA H200 (En Yeni, En Güçlü)
141GB HBM3e VRAM
En yüksek AI performansı
Büyük model eğitimi için ideal
Çok pahalı (~$33,000+)
Enterprise seviye
NVIDIA H100
80GB veya 94GB (H100 NVL) HBM3 VRAM
Profesyonel AI geliştirme
Büyük language model'ler
Çok pahalı (~$25,000-30,000)
Veri merkezi kullanımı
NVIDIA L40S
48GB GDDR6 VRAM
AI + grafik hibrit kullanım
Orta-büyük model'ler
Daha uygun fiyat (~$9,000-10,000)
Çok amaçlı kullanım
RTX PRO 6000 Blackwell (Yeni)
96GB GDDR7 VRAM
AI + grafik hibrit kullanım
MIG Destekli Çoklu Kiracılı Kullanım
Orta-büyük model'ler
Daha uygun fiyat (~$9,000-10,000)
Çok amaçlı kullanım
RTX 5090 (2025 Yeni)
~32GB VRAM (tahmini)
Consumer-prosumer arası
Oyun + AI hibrit
~$2,000-3,000 (tahmini)
Henüz piyasada değil
RTX 4090
24GB GDDR6X VRAM
Consumer seviye en güçlü
Küçük-orta AI projeleri
~$1,500-2,000
Yaygın kullanım
Hangi durumda hangisini seçmeli:
Büyük AI şirketi/araştırma: H200/H100
Orta ölçekli AI startup: L40S ( RTX PRO 6000 Blackwell
Individual developer/küçük team: RTX 4090
Bütçe sınırlı ama yeni teknoloji: RTX 5090 bekle
Hibrit kullanım (oyun+AI): L40S veya RTX 4090
Sorularınız:
Bütçeniz ne kadar?
Hangi tür AI projeleri yapacaksınız?
Kaç kişilik ekip kullanacak?
Ticari mi, araştırma amaçlı mı?
Bu bilgilere göre daha spesifik öneriler sunabiliriz.
GPU sunucumda kaç adet GPU olmalı?
Tek GPU (1x)
Kimler için: Bireysel geliştiriciler, öğrenciler, küçük projeler
Kullanım: Model fine-tuning, küçük veri setleri, prototyping
Avantaj: Düşük maliyet, basit kurulum
Dezavantaj: Sınırlı performans
Çift GPU (2x)
Kimler için: Küçük-orta ekipler, startup'lar
Kullanım: Paralel eğitim, A/B testing, farklı modeller
Avantaj: İyi performans/fiyat oranı, yedeklilik
Dezavantaj: Veri paylaşımı karmaşıklığı
Dörtlü GPU (4x)
Kimler için: Orta ölçekli şirketler, araştırma laboratuvarları
Kullanım: Büyük model eğitimi, distributed training
Avantaj: Yüksek throughput, model parallelism
Dezavantaj: Yüksek maliyet, soğutma sorunu
8+ GPU
Kimler için: Büyük tech şirketleri, bulut sağlayıcılar
Kullanım: Large Language Model'ler, massive datasets
Avantaj: En yüksek performans
Dezavantaj: Çok pahalı, karmaşık altyapı
Karar Faktörleri:
Bütçe: GPU başına $1,500-30,000 veya üstü
Güç: Her GPU ~300-700W
Soğutma: Çoklu GPU için özel soğutma
Motherboard: PCIe slot sayısı sınırı
RAM: GPU başına 64-128GB sistem RAM'i
Use case: Eğitim vs inference farklı gereksinimler
Sizin durumunuz için:
Hangi tür projeler yapacaksınız?
Bütçeniz ne kadar?
Ekip büyüklüğünüz nedir?
Anlık mı yoksa sürekli kullanım mı?
Bizimle iletişime geçin, ihtiyacınızı beraber planlayalım.
GPU kullanım oranını nasıl artırırım?
Batch Size’ı artır: Özellikle AI ve DL eğitimlerinde küçük batch size, GPU'yu tam kapasite kullanmaz. Daha büyük batch size ile GPU daha çok yük altına girer.
Mixed Precision Training (örneğin float16 kullanımı): Daha az bellek kullanarak daha fazla veri işleyebilir, GPU’nun işlemci çekirdeklerini daha verimli kullanmanı sağlar.
Modeli optimize et: Gereksiz katmanlar, yetersiz paralelizm ve veri bağımlılığı, GPU darboğazına yol açar. Modelleri ONNX, TensorRT, TorchScript ile optimize et.
✅ 2. Veri Yükleme ve I/O Gecikmelerini Azalt
CPU-GPU veri transferi zaman alabilir. Bu nedenle:
DataLoader kullanırken num_workers parametresini artır.
Veri önbellekleme (prefetching, caching) uygula.
NVMe disk ve yüksek hızlı I/O kullan.
Asenkron veri aktarımı (cuda streams) ile GPU’nun veri beklemeden işleme devam etmesini sağla.
✅ 3. GPU Paralelliğini Artır
Birden fazla stream, kernel ya da thread kullanarak iş parçalarını eş zamanlı çalıştır.
Büyük veri işlemlerini küçük parçalara bölerek GPU'nun çoklu işlemci bloklarını (SM) etkin kullan.
TensorFlow veya PyTorch gibi kütüphanelerde multi-GPU desteğini etkinleştir:
PyTorch → DataParallel veya DistributedDataParallel
TensorFlow → tf.distribute.MirroredStrategy
✅ 4. GPU Monitoring ile Darboğazları Belirle
Kullan:
nvidia-smi (anlık kullanım ve bellek durumu)
nvtop (canlı izleme)
Nsight Systems veya CUDA Profiler (detaylı analiz)
GPU % utilization, bellek kullanımı, GPU fan hızı ve sıcaklık gibi verilerle darboğazın kod, model ya da I/O kaynaklı olup olmadığını belirle.
✅ 5. Kapsayıcı (Container) ve Çevresel Optimizasyonlar
NVIDIA Docker ile GPU donanımına doğrudan erişim sağlayan izole ortamlar kur.
TensorRT, cuDNN, NCCL gibi optimize edilmiş kütüphaneler kullan.
Yazılım ve sürücü uyumluluğunu güncel tut:
CUDA sürümü
GPU driver
Framework sürümleri (PyTorch, TensorFlow vb.)
✅ 6. İş Yükü Dengeleme ve Otomasyon
Job scheduler sistemleri (Slurm, Kubernetes + GPU plugin) ile GPU’ya iş atanmasını otomatikleştir.
GPU affinity ayarlarıyla belirli GPU’ya belirli işlerin atanmasını sağla.
Ekstra Öneri:
Eğer sanallaştırılmış bir ortamda çalışıyorsan (örneğin Proxmox, VMware, vGPU), vGPU ayarları, MIG (Multi-Instance GPU) konfigürasyonu ve sanal makine kaynak tahsisleri de GPU kullanımını doğrudan etkiler.
Memory bottleneck'ları nasıl çözerim?
Mixed Precision (FP16) kullan → Daha az bellekle daha hızlı işlem.
Model pruning / quantization → Gereksiz ağırlıkları at, daha kompakt model.
Veri boyutunu düşür → Görsellerde yeniden boyutlandırma, gereksiz kanalları sil.
🚀 2. Data Pipeline İyileştirmesi
Prefetch + cache → GPU’nun veri beklemesini önle.
DataLoader’da num_workers sayısını artır.
📊 3. GPU Bellek İzleme ve Yönetimi
nvidia-smi, torch.cuda.memory_summary() gibi araçlarla bellek kullanımını izle.
torch.cuda.empty_cache() ile kullanılmayan belleği serbest bırak.
⚙️ 4. Bellek Verimliliği için Teknikler
Gradient checkpointing: Bellek yerine işlem gücü harcar, büyük modelleri eğitmeni sağlar.
Layer-wise loading: Büyük modelleri parça parça yükle.
🧠 5. Multi-GPU veya MIG Kullanımı
Bellek yoğunluğu çok yüksekse:
Modeli çoklu GPU'ya böl (DataParallel / DDP).
NVIDIA MIG ile belleği bölüp kaynakları izole et.
Batch size'ı nasıl optimize ederim?
✅ 1. Donanıma Göre Başla
GPU belleğine göre batch size belirle
Örneğin:
24 GB VRAM → 64–128
48 GB VRAM → 256+
Bellek taşarsa: "CUDA out of memory" hatası alırsın.
🧪 2. Aşamalı Deneme (Grid Search)
Küçük bir modelle farklı batch size'ları (8, 16, 32, 64...) sırayla dene.
Her denemede:
Eğitim süresi
GPU kullanımı
Doğruluk (accuracy)
gibi metrikleri karşılaştır.
⚖️ 3. Dengeyi Bul: Hız vs. Genel Performans
Büyük batch size → Daha hızlı eğitim, daha kararlı gradyanlar
❗ Ama genelleme kötüleşebilir.
Küçük batch size → Daha iyi genelleme, ama eğitim süresi uzar.
🔧 4. Optimize Edici Ayarıyla Uyumlu Ol
Büyük batch size kullanıyorsan öğrenme oranını da artırman gerekebilir (Linear Scaling Rule).
LR = base_lr * (batch_size / base_batch)
🧠 5. Gradient Accumulation Kullan
Bellek yetmiyorsa:
Örn: 64 yerine 16 batch kullan ama 4 kez biriktir → GPU’ya büyük batch gibi görünür.
📊 6. Monitör Et
GPU bellek ve işlem kullanımını nvidia-smi ile canlı izle.
Eğitim ve validasyon kayıplarını (loss) grafikle takip et.
Multi-GPU eğitimi nasıl yaparım?
🎯 Multi-GPU Eğitimi Nasıl Yapılır?
🔧 1. PyTorch ile Multi-GPU
A. DataParallel (kolay ama sınırlı)
python
Kopyala
Düzenle
import torch
model = MyModel()
model = torch.nn.DataParallel(model)
model = model.cuda()
Tek komutla çalışır.
Ancak ana GPU'ya yük biner, bu da verimsizliğe yol açabilir.
B. DistributedDataParallel (DDP) (tercih edilen yöntem)
bash
Kopyala
Düzenle
torchrun --nproc_per_node=2 train.py
python
Kopyala
Düzenle
import torch.distributed as dist
from torch.nn.parallel import DistributedDataParallel as DDP
dist.init_process_group("nccl")
model = MyModel().cuda(local_rank)
model = DDP(model, device_ids=[local_rank])
Her GPU’da ayrı süreç başlatılır.
Daha ölçeklenebilir ve verimli.
NCCL backend (NVIDIA için) kullanılır.
⚙️ 2. TensorFlow ile Multi-GPU
python
Kopyala
Düzenle
import tensorflow as tf
strategy = tf.distribute.MirroredStrategy()
with strategy.scope():
model = build_model()
model.compile(...)
Otomatik olarak tüm GPU’ları kullanır.
Model ağırlıkları her GPU’ya kopyalanır, gradient'ler senkronize edilir.
💡 Ekstra İpuçları
Veri yükleme paralel olmalı: num_workers > 0 (PyTorch).
Batch size genelde GPU sayısı kadar artırılır.
Eğitim doğruluğunu korumak için learning rate de ölçeklenmeli.
🔍 İzleme ve Hata Ayıklama
nvidia-smi, nvtop, wandb, TensorBoard gibi araçlarla GPU’ları izleyin.
Kodun her GPU’ya eşit iş dağıttığından emin olun.
DDP’de her sürecin kendine ait bir rank'i vardır, bu ID ile GPU eşleşmesi yapılır.
Mixed precision training nedir?
🎯 Amaç:
Daha az VRAM kullan
Daha hızlı matematiksel işlemler
Aynı doğrulukta daha verimli eğitim
🧠 Nasıl Çalışır?
float16 (FP16) → Ağırlıklar ve aktivasyonlar gibi yoğun hesaplamalarda kullanılır.
float32 (FP32) → Duyarlılık gereken işlemler (örneğin loss hesaplaması, ağırlık güncellemesi) için kullanılır.
NVIDIA GPU'lar (özellikle Tensor Core destekli: V100, A100, H100, L40S vs.) bu karışık formatı donanımsal olarak hızlandırır.
⚙️ Destekleyen Framework’ler:
✅ PyTorch
python
Kopyala
Düzenle
from torch.cuda.amp import autocast, GradScaler
scaler = GradScaler()
for inputs, labels in dataloader:
optimizer.zero_grad()
with autocast():
outputs = model(inputs)
loss = loss_fn(outputs, labels)
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()
✅ TensorFlow
python
Kopyala
Düzenle
from tensorflow.keras import mixed_precision
mixed_precision.set_global_policy('mixed_float16')
model = build_model() # Otomatik olarak FP16 kullanır
🔍 Avantajları
Özellik Etki
VRAM kullanımı ↓ Daha büyük batch size mümkün olur
Eğitim süresi ↓ %30–50 hız artışı sağlayabilir
Model doğruluğu ≈ Genelde float32 kadar başarılı
⚠️ Dikkat Edilmesi Gerekenler
FP16 ile nümerik kararsızlık olabilir → GradScaler gibi tekniklerle önlenir.
Tüm GPU’lar desteklemeyebilir → Volta (V100)+ GPU gerekir.
Docker container'larında GPU nasıl kullanılır?
🚀 Docker Container'larda GPU Kullanımı
🔧 1. Gereksinimler
NVIDIA GPU + sürücüler (driver) kurulu
CUDA destekli NVIDIA Driver (konteyner içine kurmana gerek yok, sadece host’ta)
Docker yüklü
NVIDIA Container Toolkit kurulmuş
🧱 2. NVIDIA Container Toolkit Kurulumu (tek seferlik)
bash
Kopyala
Düzenle
sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker
Test etmek için:
bash
Kopyala
Düzenle
docker run --rm --gpus all nvidia/cuda:12.3.0-base-ubuntu22.04 nvidia-smi
🎯 Eğer nvidia-smi çıktısı görüyorsan, her şey hazır!
🐳 3. GPU ile Docker Konteyner Çalıştırmak
bash
Kopyala
Düzenle
docker run --gpus all -it your-image-name
🔹 --gpus all: Tüm GPU’ları verir
🔹 Belirli GPU için:
bash
Kopyala
Düzenle
docker run --gpus '"device=0,1"' -it your-image-name
📦 4. Dockerfile içinde CUDA tabanlı image seç
Örnek:
Dockerfile
Kopyala
Düzenle
FROM nvidia/cuda:12.3.0-cudnn8-runtime-ubuntu22.04
RUN apt update && apt install -y python3-pip
RUN pip3 install torch torchvision
🧠 5. TensorFlow / PyTorch içinde GPU erişimi kontrolü
PyTorch:
python
Kopyala
Düzenle
import torch
print(torch.cuda.is_available())
TensorFlow:
python
Kopyala
Düzenle
import tensorflow as tf
print(tf.config.list_physical_devices('GPU'))
🛠️ Ekstra: docker-compose.yml ile GPU kullanımı
yaml
Kopyala
Düzenle
services:
my-ai-app:
image: my-image
runtime: nvidia
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
Kubernetes ile GPU scheduling nasıl yapılır?
Aşağıda adım adım Kubernetes ile GPU scheduling nasıl yapılır özetlenmiştir:
🚀 Kubernetes ile GPU Scheduling Nasıl Yapılır?
✅ 1. Gereksinimler
Kubernetes cluster (minikube, kubeadm, GKE, EKS, AKS fark etmez)
NVIDIA GPU sürücüleri (host’ta yüklü)
NVIDIA Container Toolkit (host’ta)
NVIDIA Device Plugin for Kubernetes
⚙️ 2. NVIDIA Device Plugin Kurulumu
bash
Kopyala
Düzenle
kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.14.0/nvidia-device-plugin.yml
Bu plugin sayesinde Kubernetes, nvidia.com/gpu kaynağını algılar.
Test etmek için:
bash
Kopyala
Düzenle
kubectl describe node <node-name> | grep -A4 Capacity
Çıktıda nvidia.com/gpu: 1 gibi bir ifade görmelisin.
📦 3. GPU Kaynağı Talep Eden Pod Örneği
yaml
Kopyala
Düzenle
apiVersion: v1
kind: Pod
metadata:
name: gpu-pod
spec:
containers:
- name: gpu-container
image: nvidia/cuda:12.3.0-base-ubuntu22.04
resources:
limits:
nvidia.com/gpu: 1 # GPU isteği
command: ["nvidia-smi"]
Bu örnek pod, 1 adet GPU'ya ihtiyaç duyar ve nvidia-smi komutunu çalıştırır.
⚠️ Notlar
Konu Açıklama
requests gerekmez GPU sadece limits ile tanımlanır.
Multi-GPU desteği nvidia.com/gpu: 2 gibi istenebilir.
MIG desteği MIG etkinse, her instance ayrı GPU olarak atanabilir.
Resource scheduling GPU olmayan node’lara bu pod atanmaz.
🧠 Ekstra: GPU node taint ile kontrol
Eğer GPU node’ları sadece GPU iş yükü için kullanmak istiyorsan:
bash
Kopyala
Düzenle
kubectl taint nodes <node-name> dedicated=gpu:NoSchedule
Sonra sadece bu taint’i tolera eden pod’lar o node’da çalışır:
yaml
Kopyala
Düzenle
tolerations:
- key: "dedicated"
operator: "Equal"
value: "gpu"
effect: "NoSchedule"
GPU sunucu kiralama vs satın alma?
📊 GPU Sunucu Kiralama vs Satın Alma
Kriter Kiralama (GPU Cloud / Hosting) Satın Alma (Fiziksel Sunucu)
💰 Başlangıç Maliyeti Düşük – sadece kullanım kadar ödersin Yüksek – donanım + kurulum maliyeti
📈 Ölçeklenebilirlik Yüksek – ihtiyaç oldukça kaynak eklenir Düşük – yeni ihtiyaçta yeni yatırım gerekir
🛠️ Bakım & Yönetim Sağlayıcı tarafından yapılır Donanım arızaları, yazılım bakımı sana aittir
⏱️ Kullanım Süresi Kısa / orta vadede avantajlı Uzun vadede toplam maliyet daha uygun olabilir
🧪 Test / Prototipleme Hızlı erişim ve deneme imkanı Donanım alımı zaman ve planlama ister
🌍 Lokasyon / Ulaşım Her yerden erişilebilir Fiziksel lokasyon gerekir
🔒 Gizlilik & Kontrol Veri dış sunucuda, güvenlik politikası önemli Tüm kontrol sende, kapalı sistem olabilir
🚀 Performans Esnekliği Farklı GPU modelleri kolayca denenebilir Sadece sahip olunan donanım kullanılabilir
🎯 Ne Zaman Kiralama?
Kısa süreli yoğun işler (model eğitimi, proje sunumu)
GPU testleri ve karşılaştırmalar
Bütçe sınırlıysa veya sermaye yatırımı yapmak istemiyorsan
Anında erişim ve kurulum gerektiren durumlar
🧱 Ne Zaman Satın Alma?
Uzun vadeli, sürekli AI / HPC iş yüklerin varsa
Yüksek maliyetli GPU’ları sık sık kullanacaksan
Verilerin tamamen kendi sistemlerinde kalması gerekiyorsa (gizlilik, regulasyon)
Gecikmesiz, yüksek hızlı ağ bağlantısı gerekiyorsa (örneğin Infiniband)
Örnek Karşılaştırma (RTX 6000 Ada)
Seçenek Aylık Kiralama Satın Alma
1x RTX 6000 Ada (48GB) ~2.000–2.500 USD ~6.500–7.000 USD
ROI Süresi — ~3–4 ay yoğun kullanımda
Sonuç:
🔹 Kısa vadeli, esnek işler için kiralama
🔹 Uzun vadeli, sürekli yoğun işler için satın alma daha avantajlıdır.
CUDA out of memory hatası?
🧨 CUDA Out of Memory Hatası: Neden ve Çözüm Yolları
🚨 Neden Olur?
Model çok büyük (çok fazla parametre)
Batch size çok büyük
GPU belleği başka işlemlerle dolu
Tensor’lar bellekten temizlenmiyor (örneğin loss.backward() sonrası)
GPU’ya çok fazla veri aynı anda yükleniyor
✅ Çözüm Yolları
1. 🔄 Batch Size’ı Küçült
python
Kopyala
Düzenle
batch_size = 64 → batch_size = 32
En hızlı ve garantili çözümlerden biridir.
2. 🧹 Bellek Temizliği Yap
python
Kopyala
Düzenle
import torch
torch.cuda.empty_cache()
Bu, kullanılmayan ama ayrılmış belleği serbest bırakır. (Garbage collection etmez.)
3. ⚙️ Gradient Accumulation Kullan
Bellek taşmasın diye küçük batch’lerle biriktirip sonra backward yap:
python
Kopyala
Düzenle
accumulation_steps = 4
loss = model(input)
loss = loss / accumulation_steps
loss.backward()
4. 🧠 Mixed Precision Training Kullan (FP16)
python
Kopyala
Düzenle
from torch.cuda.amp import autocast
with autocast():
output = model(input)
Hem bellek kazancı sağlar hem eğitim hızlanır.
5. 🧪 Model Boyutunu veya Çözünürlüğü Düşür
Daha küçük layer sayısı
Görsel işler için çözünürlüğü küçült (örn. 512x512 → 256x256)
6. 👀 GPU Bellek Kullanımını Takip Et
bash
Kopyala
Düzenle
watch -n 1 nvidia-smi
Hangi işlem ne kadar bellek kullanıyor, anlık görebilirsin.
7. 🧯 GPU’da Boşta Olan Tensor’ları Sil
python
Kopyala
Düzenle
del variable
torch.cuda.empty_cache()
Özellikle döngülerde kullanılmayan tensor’lar bellekte kalmasın.
8. 🛠️ Modeli Parçalayarak Eğit (Gradient Checkpointing)
Uzun forward pass'leri böl, geri yayılımda belleği daha az kullan:
python
Kopyala
Düzenle
from torch.utils.checkpoint import checkpoint
output = checkpoint(model_block, input)
Driver uyumsuzluk sorunları?
❗️Driver Uyumsuzluğu Sorunları: Nedenler ve Çözümler
🚨 Yaygın Belirtiler
CUDA driver version is insufficient for CUDA runtime
Illegal memory access
Kernel başlatılamıyor (kernel launch failed)
Framework GPU’yu görmüyor (torch.cuda.is_available() → False)
🎯 Başlıca Nedenler
Neden Açıklama
🔢 CUDA sürümü ile driver uyumsuz Örn. CUDA 12.2 çalıştırmak istiyorsun ama driver sadece CUDA 11.8 destekli
🧱 cuDNN versiyonu framework ile uyumsuz TensorFlow veya PyTorch belirli cuDNN versiyonuna ihtiyaç duyar
📦 Conda/Docker ortamında yanlış CUDA Ortam içinde farklı, host’ta farklı CUDA yüklü olabilir
⚙️ Driver güncel değil Yeni GPU kartları eski sürücülerle uyumlu değildir (örnek: RTX 6000 Ada requires 525+ driver)
✅ Çözüm Adımları
🔎 1. Driver ve CUDA Uyumluluğunu Kontrol Et
Mevcut driver sürümünü öğren:
bash
Kopyala
Düzenle
nvidia-smi
Ekranda: Driver Version: 535.154.05, CUDA Version: 12.2 gibi bilgiler yer alır.
✅ Uyumluluk tablosu
Örneğin: Driver 525 → CUDA 12.0’a kadar çalıştırabilir.
📦 2. Kullandığın Framework’ün CUDA Versiyonunu Bil
Örneğin:
PyTorch 2.2.0 → CUDA 11.8 veya 12.1 destekliyor
TensorFlow 2.14 → CUDA 11.8 + cuDNN 8.6
Kontrol etmek için:
python
Kopyala
Düzenle
import torch
print(torch.version.cuda)
🔁 3. Driver’ı Güncelle
Yeni GPU’lar için:
bash
Kopyala
Düzenle
sudo apt install nvidia-driver-535
sudo reboot
Ubuntu kullanıyorsan ubuntu-drivers devices komutuyla önerilen sürücüyü görebilirsin.
🐳 4. Docker / Conda Uyumsuzluğunu Gider
Docker image’in doğru CUDA sürümünü içermeli:
bash
Kopyala
Düzenle
docker run --gpus all nvidia/cuda:12.3.0-base-ubuntu22.04
Conda ortamı:
bash
Kopyala
Düzenle
conda install pytorch torchvision pytorch-cuda=12.1 -c pytorch -c nvidia
🧪 5. Test: GPU ve CUDA Çalışıyor mu?
python
Kopyala
Düzenle
import torch
print(torch.cuda.is_available())
print(torch.cuda.get_device_name(0))
📘 Ekstra: NVIDIA’nin Resmî Uyumluluk Dokümanları
CUDA Toolkit ve driver uyumluluk tablosu
PyTorch CUDA uyum tabloları
TensorFlow CUDA/cuDNN uyum bilgisi
YAPAY ZEKA PROJELERİNİZDE MAKSİMUM PERFORMANSI YAKALAYIN..
Yapay zeka uygulamalarınız için optimize edilmiş GPU sunucu çözümlerimizle tanışın; NVIDIA PCIe GPU'ları ile donatılmış yüksek hızlı, güvenilir ve ölçeklenebilir çözümlere sahip olun..