GPU'da model inference'ını nasıl optimize edersiniz? Throughput ve latency arasındaki trade-off'u açıklayın.

Cevap

GPU inference optimizasyonu, aynı donanımdan daha fazla istek (throughput) veya daha hızlı cevap (latency) almaktır. İkisi çoğu zaman çelişir: daha büyük batch GPU'yu daha verimli kullanır ve throughput'u artırır, ama her isteğin bekleme süresini uzatır.

Model seviyesi

  • Düşük hassasiyet: FP32 yerine BF16/FP16 neredeyse her zaman serbest bir kazançtır. INT8/FP8/INT4 quantization bellek ve bant genişliğini daha da azaltır.
  • Derleme ve graf optimizasyonu: torch.compile, ONNX Runtime, TensorRT. Kernel fusion ile bellek erişimlerini azaltır.
  • Optimize edilmiş kernel'ler: FlashAttention, fused LayerNorm.
  • Daha küçük model: Distillation, pruning.

Serving seviyesi

  • Dynamic batching: Kısa bir zaman penceresinde gelen istekler birleştirilip tek batch'te işlenir (Triton, TorchServe).
  • Continuous (in-flight) batching: LLM'ler için. Bir istek bitince yerine hemen yenisi alınır, batch'in en uzun isteği beklemesi gerekmez. Static batching'e göre throughput'u kat kat artırabilir.
  • PagedAttention ve prefix caching: KV cache belleğini verimli kullanarak daha fazla eşzamanlı istek.
  • Speculative decoding: Küçük bir draft model birkaç token önerir, büyük model bunları tek forward pass'te doğrular. Çıktı dağılımı değişmeden decode gecikmesi düşer.
  • Tensor / pipeline parallelism: Tek GPU'ya sığmayan modeller için. Ekstra iletişim maliyeti vardır.

LLM serving metrikleri

MetrikAnlamı
TTFTİlk token'a kadar süre, prefill ağırlıklı
TPOT / ITLToken başı süre, decode ağırlıklı
ThroughputSaniyede toplam token veya istek
GoodputSLA'i karşılayan isteklerin throughput'u

Darboğazı bulmak

  1. Profiling: nvidia-smi, PyTorch Profiler, Nsight. GPU kullanımı düşükse sorun genelde CPU tarafındadır (preprocessing, tokenization, veri aktarımı).
  2. Compute-bound mu (büyük batch, prefill) memory-bound mu (küçük batch, decode)? Çözümler farklıdır.
  3. Gerçekçi trafikle (istek boyutu dağılımı, eşzamanlılık) load test yapılmalıdır.
vllm serve meta-llama/Llama-3.1-8B-Instruct --dtype bfloat16 \
  --max-model-len 8192 --gpu-memory-utilization 0.90 --enable-prefix-caching

Popüler araçlar: vLLM, SGLang, TensorRT-LLM, NVIDIA Triton, Hugging Face TGI.

  1. ML sistemleri için CI/CD nasıl kurulur? Klasik yazılım CI/CD'sinden farkı nedir?OrtaMLOpsYapay Zeka
  2. Yeni bir modeli production'a güvenli şekilde nasıl çıkarırsınız? Shadow deployment, canary ve A/B testi karşılaştırın.ZorMLOpsYapay Zeka
  3. Bir ML modelini tekrarlanabilir (reproducible) hale getirmek ve versiyonlamak için neler yaparsınız?OrtaMLOpsYapay Zeka
  4. Feature store nedir? Training-serving skew problemini nasıl çözer?OrtaMLOpsYapay Zeka
  5. Experiment tracking neden önemlidir? MLflow ile neleri takip edersiniz?KolayMLOpsYapay Zeka
  6. Data drift ve concept drift arasındaki fark nedir? Production'da nasıl tespit edersiniz?OrtaMLOpsYapay Zeka

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle