Vebende Akademi - gpu-vs-cpu-inference
Uzmanla Konuşun
Blog
MAKALE

GPU vs CPU Inference — Hangi Donanım Ne Zaman Tercih Edilmeli?

Yayınlayan: Vebende Akademi  |  Okuma süresi: ~30-50 dk

GPU vs CPU Inference — Hangi Donanım Ne Zaman Tercih Edilmeli?

Yayınlayan: Vebende Akademi  |  Okuma süresi: ~30-50 dk

1. Giriş

Derin öğrenme modellerinin üretimde çalıştırılması (inference) bugün her geçen gün daha yaygın hale geliyor. Görüntü işleme, doğal dil işleme (NLP), öneri sistemleri ve gerçek‑zamanlı analitik gibi alanlarda modeller, kullanıcı etkileşimlerinin merkezinde yer alıyor. Bu modelleri çalıştırırken temel bir karar söz konusu: tahminleri CPU üzerinde mi yoksa GPU üzerinde mi yapmalıyız? Donanım seçimi sadece performans (latency, throughput) değil; maliyet, enerji tüketimi, ölçeklenebilirlik ve operasyonel karmaşıklık üzerinde doğrudan etkili olur.

Bu makale, mühendis ve mimar perspektifinden GPU ve CPU üzerinde inference yapmanın teknik temellerini, mimarilerini, gerçek dünya kullanım örneklerini, avantaj‑dezavantaj analizlerini, karşılaştırmalarını ve en iyi pratikleri kapsamlı şekilde ele alır. Amaç, hangi senaryoda hangi donanım tercihiyle en iyi maliyet‑performans dengesine ulaşılacağını somut önerilerle sunmaktır.

Bu konu neden konuşuluyor? Çünkü modeller büyüdükçe (transformer tabanlı LLM'ler gibi) hesaplama gereksinimleri artıyor ve geleneksel CPU'lar her zaman ekonomik bir çözüm sunmuyor. Öte yandan, GPU'ların sağladığı hız her zaman maliyete değmeyebilir; özellikle düşük hacimli veya düşük latency gerektiren mikroservisler için CPU tercih edilebilir. Bu yüzden doğru kararı, kullanım örneğinize göre veri‑güdümlü olarak vermeniz gerekecektir.

2. Kavramsal Temeller

Temel Kavramlar ve Terminoloji

  • Inference: Eğitim tamamlanmış bir modelin yeni veriler üzerinde tahmin üretmesi.
  • Latency: Tek bir isteğin tamamlanma süresi (ms). p50/p95/p99 değerleriyle ölçülür.
  • Throughput: Birim zamanda işlenen istek sayısı (ör. requests/second).
  • Batching: Birden çok örneği tek seferde işleyerek donanım verimliliğini artırma tekniği.
  • Parallelism (Paralellik): İş yükünü aynı anda birden çok hesap birimi üzerinde yürütme kabiliyeti.
  • FP32/FP16/INT8: Farklı sayısal hassasiyet formatları; düşük hassasiyetler çoğunlukla daha hızlı ve daha az bellek tüketir.
  • Model Size: Parametre sayısı ve buna bağlı olarak RAM/VRAM gereksinimi.

Donanım Bileşenleri

  • CPU (Central Processing Unit): Genel amaçlı işlem birimi. Tekil işlerde düşük overhead, yüksek tek‑iş performansı, yüksek esneklik.
  • GPU (Graphics Processing Unit): Yüksek paralellik için tasarlanmış, binlerce çekirdekli hesap birimi. Büyük matris çarpımları ve tensor işlemlerinde üstün performans.
  • TPU / NPU: Tensor işlem birimleri veya sinir ağı hızlandırıcıları; belirli optimizasyonlarla LLM ve büyük model çalıştırma için avantajlı.
  • Accelerator (Edge ASIC): Mobil/edge cihazlar için özel hızlandırıcılar (Neural Engine, Edge TPU vb.).

Performans Metrikleri

  • Latency (ms): Kullanıcı etkileşimi için kritik.
  • QPS (Queries per second): Ölçek ve throughput ihtiyacını belirler.
  • Cost per inference: Bulut veya altyapı kaynaklı doğrudan maliyet.
  • Energy per inference: Özellikle edge ve sürdürülebilirlik hesapları için önemlidir.

3. Nasıl Çalışır?

Sistem Mimarisi — CPU Tabanlı Inference

CPU tabanlı inference çoğunlukla aşağıdaki senaryolarda tercih edilir:

  • Düşük‑orta model boyutları (ör. tens of millions parameters),
  • Düşük trafik hacmi veya düşük paralellik ihtiyacı,
  • Hızlı başlatma (startup) ve daha basit operasyonel ihtiyaç.

Tipik CPU mimarisi bileşenleri:

  1. API Gateway → küçük Python/Go/Java servisleri (FastAPI, ASP.NET Core, Spring Boot).
  2. Model runtime: ONNX Runtime, TensorFlow CPU build, PyTorch CPU.
  3. Caching: Model input/output için Redis/memory cache (sık tekrarlanan isteklerde öne çıkar).
  4. Autoscaling ve çoklu instance yönetimi (Kubernetes HPA, VM autoscale).

Sistem Mimarisi — GPU Tabanlı Inference

GPU tabanlı inference, büyük matris operasyonlarını verimli şekilde paralelleştirdiği için aşağıdaki durumlarda tercih edilir:

  • Büyük model boyutları (hundreds of millions to billions parameters),
  • Yüksek throughput gereksinimi (batch embedding generation, video/imagery),
  • Çoklu paralel iş akışlarının aynı anda çalıştırılması.

GPU mimarisi bileşenleri:

  1. GPU cluster (NVIDIA, AMD) — Triton Inference Server veya custom containerlar.
  2. Model optimizasyonu: TensorRT, cuDNN, mixed precision (FP16), kernel fusion.
  3. Batching stratejileri: büyük batch'ler GPU'ların verimliliğini artırır.
  4. Multi‑GPU ve model paralelizasyonu (data parallel, model parallel).

Veri Akışı ve Batching

Batching, GPU üzerinde yüksek throughput elde etmek için merkezi bir taktiktir. Ancak batch büyüdükçe latency artar. Bu nedenle üretim sistemlerinde micro‑batching, dynamic batching veya request coalescing gibi teknikler kullanılır. Örneğin:

  • Dynamic batching: Gelen istekleri kısa bir zaman penceresinde toplar (ör. 1–10 ms) ve tek seferde işler.
  • Micro‑batching: Küçük sabit batch boyutları ile latency ve throughput arasında denge kurar.

Donanım‑Seviye Optimizasyonlar

GPU üzerinde performansı artırmak için sık kullanılan optimizasyonlar:

  • FP16 / mixed precision ile hesaplama hızını artırma,
  • Operator fusion ile bellek bant genişliği ihtiyacını azaltma,
  • TensorRT veya ONNX Runtime ile kernel optimizasyonu,
  • Model sharding / pipeline parallelism ile büyük modelleri dağıtmak.

4. Gerçek Dünya Kullanımları

Netflix — Video Analitiği ve İçerik Öneri Pipeline'ları

Netflix benzeri platformlarda video işleme pipeline'ları (frame‑level inference) GPU'larda ekonomik olur. Ancak kullanıcıya anlık öneri sunma katmanında daha küçük modeller CPU üzerinde çalıştırılarak maliyet‑verim dengesine ulaşılır. Pratikte hibrit bir model kullanılır: ağır video analizleri GPU, kullanıcı kişileştirme CPU/edge.

Uber — Gerçek‑Zamanlı Tahminler

Uber gibi düşük latency gerektiren sistemlerde CPU tabanlı mikroservisler tercih edilebilir; çünkü GPU'ların cold start gecikmesi ve provisioning overhead'i kabul edilemez seviyede olabilir. Ancak büyük veri setlerinin offline analizinde GPU'lar kullanılır.

OpenAI / LLM Servis Sağlayıcıları

Büyük dil modellerini gerçek‑zamanlı sunan hizmetlerde GPU ve özel hızlandırıcılar (A100, H100, TPU v4) olmazsa olmazdır. Bu sağlayıcılar genellikle model sharding, tensor parallelism ve optimized runtimes ile yüksek throughput sağlarlar. Birçok ticari senaryoda self‑hosting maliyeti yönetmek için hem GPU bulut instance'ları hem de managed API'ler kombinasyonu tercih edilir.

Stripe — Fraud Detection

Fraud detection sistemlerinde hem CPU hem GPU kullanımı görülür. Çoğu anlık risk kararları CPU üzerinde çalışan hızlı modellerle alınır; derin, ağır analizler ve batch scoring işlemleri GPU'larda yapılır.

5. Avantajlar ve Sınırlamalar

CPU — Avantajlar

  • Daha düşük başlangıç maliyeti ve daha yaygın altyapı,
  • Basit deploy ve hızlı cold start,
  • Daha iyi tek‑iş gecikmesi (single‑threaded latency) senaryolarında performans.

CPU — Dezavantajlar

  • Matematiksel yoğun hesaplamalarda (matris çarpımları) verimsiz,
  • Büyük modellerin bellek/kaynak gereksinimlerini karşılamak zor olabilir.

GPU — Avantajlar

  • Büyük paralellik sayesinde yüksek throughput (batch inference, embedding generation),
  • Mixed precision ve kernel optimizasyonları ile yüksek verim sağlar,
  • Büyük modellerin inference'ını pratik hale getirir.

GPU — Dezavantajlar

  • Daha yüksek saatlik maliyet; doğru kullanım profiline göre ekonomik olmayabilir,
  • Cold start ve provisioning overhead,
  • Operasyonel karmaşıklık (driver, CUDA/cuDNN sürümleri, GPU memory fragmentation).

6. Alternatifler ve Karşılaştırma

Donanım Avantaj Dezavantaj
CPU Uygun maliyet (düşük hacim), kolay yönetim, düşük cold start Büyük modellerde yetersiz throughput, yüksek latency
GPU Yüksek throughput, büyük model desteği, optimizasyon seçenekleri Yüksek maliyet, operasyon karmaşıklığı
TPU / Accelerator LLM ve büyük model inference için yüksek verim Vendor‑specific, taşıma ve entegrasyon zorluğu
Edge ASIC Düşük latency, gizlilik avantajı Sınırlı model kapasitesi, güncelleme zorluğu

7. En İyi Pratikler

Production Kullanımı

  • İş yükünü ölçün: latency hedefleri, expected QPS ve cost per inference hesaplayın.
  • Hibrit mimariyi düşünün: heavy job'lar için GPU, kritikal hızlı path için CPU veya daha küçük modeller.
  • Model registry ve versiyonlama ile rollback stratejisi tutun.

Performans Optimizasyonu

  • Model quantization (INT8/FP16) deneyin; doğruluk kaybı minimal ise büyük kazanç sağlar.
  • Dynamic batching veya request coalescing ile GPU verimliliğini artırın.
  • Use optimized runtimes (Triton, TensorRT, ONNX Runtime) — production workload'larda fark yaratır.

Güvenlik ve Stabilite

  • GPU sürücü ve runtime versiyonlarını yönetin; uyumsuzluklar prod kesinti nedeni olabilir.
  • Monitoring: GPU util, memory fragmentation, p99 latency, error rate izleyin.

Ölçeklenebilirlik

  • Autoscaling testlerini gerçek trafik patternleriyle yapın — warmup stratejileri önemlidir.
  • Model sharding ve pipeline parallelism ile çok büyük model desteği sağlayın.

8. Sık Yapılan Hatalar

  • Benchmark yapmadan donanım seçmek: Sentetik testler yanıltıcı olabilir; gerçek world traces ile test edin.
  • Over‑provisioning: "Her şeyi GPU'ya koyarım" düşüncesi maliyeti katlayabilir.
  • Ignoringe cold starts: serverless GPU kullanımında warm pools veya provisioned concurrency yoksa p99 latency patlayabilir.
  • Model memory fragmentation'ı göz ardı etmek: uzun süre çalışan GPU instance'larında bellek parçalanması performansı düşürür.

9. Gelecek Trendler

  1. Heterojen altyapı: CPU, GPU, TPU ve özel ASIC’lerin birlikte kullanılacağı orkestrasyon çözümleri yaygınlaşacak.
  2. Hardware‑aware compilation: Derleyiciler ve runtime'lar donanımı otomatik algılayıp en iyi kernel'leri seçecek.
  3. Serverless GPU: Cold start ve maliyet problemlerini çözen serverless GPU çözümleri olgunlaşacak.
  4. Green AI: Enerji verimliliği ve karbon ayak izi optimizasyonu donanım seçiminde belirleyici olacak.

Ek Bölümler

Sık Sorulan Sorular (FAQ)

  1. Ne zaman GPU, ne zaman CPU tercih edilmelidir?

    Yüksek throughput, büyük model veya batch processing gerekiyorsa GPU; düşük hacim, düşük maliyet veya hızlı cold start gereken mikroservisler için CPU tercih edilir.

  2. Quantization her zaman kullanılmalı mı?

    Değil; quantization performans kazancı sağlar ancak model doğruluğunu etkileyebilir. A/B testleri ile doğruluk kontrolü şarttır.

  3. GPU'larda cold start nasıl minimize edilir?

    Warm pools, provisioned instances ve pre‑warmed containers kullanarak cold start etkisini azaltabilirsiniz.

  4. Edge inference hangi durumlarda uygundur?

    Gizlilik, düşük ağ gecikmesi veya offline çalışma gereksinimleri varsa edge tercih edilir; ancak model boyutu ve güncelleme zorlukları göz önünde bulundurulmalıdır.

  5. Model sharding nedir ve ne zaman gereklidir?

    Büyük modeller GPU belleğine sığmadığında model parametrelerini birden çok GPU'ya dağıtarak inference yapılmasını sağlayan tekniktir. Çok büyük LLM'lerde gereklidir.

  6. GPU memory fragmentation nedir?

    Uzun süre çalışan GPU instance'larında farklı bellek allocation'larının yaratılması sonucu kullanılabilir contiguous bellek azalır; bu performansı ve deploy esnekliğini düşürebilir.

  7. Hangi metriklere bakmalıyım?

    p50/p95/p99 latency, throughput, GPU utilizasyonu, memory usage, error rate ve cost per inference temel metriklerdir.

  8. Self‑hosting mi yoksa managed hizmet mi daha iyi?

    Bu tamamen kullanım modeline bağlı. Düşük hacim için managed hizmet hızlı ve basittir; yüksek ve öngörülebilir hacimde self‑hosting ekonomik olabilir ancak operasyonel maliyetler hesaplanmalıdır.

Anahtar Kavramlar

Batching
Birden fazla isteği tek seferde işleme alarak donanım verimliliğini artırma tekniği.
Quantization
Model ağırlıklarının düşük hassasiyete indirilmesi (ör. FP16, INT8), performans ve bellek kullanımında azalma sağlar.
Model sharding
Model parametrelerini birden çok donanım birimine dağıtma. Büyük modeller için gereklidir.
Dynamic batching
Gelen istekleri kısa bir zaman penceresinde toplayıp tek batch olarak işleme alma stratejisi.

Öğrenme Yol Haritası

  1. Temel: Python, linear algebra ve ML temelleri.
  2. Derin Öğrenme: PyTorch/TensorFlow, model optimizasyon teknikleri.
  3. Model Optimizasyon: ONNX, TensorRT, quantization, pruning.
  4. Serving / Infra: Docker, Kubernetes, Triton, GPU provisioning ve autoscaling.
  5. Observability: Prometheus, Grafana, detaylı latency profiling.
  6. Pratik Projeler: Image classification pipeline (GPU), mikroservis tabanlı NLP servisi (CPU).