- DeepSeek-V3 gibi bazı yapay zeka modelleri, büyük ölçekte sunulduğunda ucuz ve hızlıdır; ancak yerelde çalıştırıldığında yavaş ve pahalıdır
- Bunun nedeni, GPU kullanım verimliliği ile ilişkili throughput (iş hacmi) ve latency (gecikme) arasındaki temel ödünleşimdir
- Batch boyutu büyütüldüğünde GPU daha verimli çalışır, ancak kullanıcı tokenların birikmesini beklemek zorunda kaldığı için gecikme artar
- Mixture-of-Experts yapısı ve derin pipeline kullanan modeller, yüksek batch ve yüksek gecikme gerektirir
- Yerelde tek kullanıcılı ortamlarda yeterince büyük batch oluşturmak zor olduğundan performans düşer ve maliyet artar
- OpenAI, Anthropic vb. şirketler, mimarinin kendisini daha verimli hale getirerek, gelişmiş batch stratejileri kullanarak veya aşırı miktarda GPU ayırarak hızlı yanıt sunar
Batch inference ve GPU verimliliği
- GPU, büyük ölçekli matris çarpımı (GEMM) için optimize edilmiş bir donanımdır
- Birden çok kullanıcının tokenları tek seferde büyük bir matris halinde batch olarak çalıştırıldığında, düşük round-trip overhead ve bellek verimliliği sayesinde iş hacmi keskin biçimde artar
- Inference sunucusu, birden fazla isteğin tokenlarını kuyrukta toplar ve uygun boyutta bir batch seçerek büyük ölçekli GEMM işlemleri yürütür
- Bu süreçte sunucu, batch boyutu (throughput artışı) ile bekleme süresi (latency artışı) arasındaki ödünleşimi seçmek zorunda kalır
Neden bazı modeller büyük batch için optimize edilmiştir?
Mixture of Experts (MoE) ve batch
- MoE yapısı (DeepSeek-V3, GPT-4 olduğu tahmin ediliyor), düşük GPU verimliliğinin başlıca nedenidir
- Yüzlerce “uzman” bloğun her biri ayrı matris çarpımları gerektirdiğinden, küçük batch'lerde her uzmana düşen iş az olur ve verim düşer
- Tüm uzmanları yeterince kullanabilmek için çok sayıda eşzamanlı istek gerekir; bu nedenle servis düzeyinde büyük batch zorunludur
- Kısa beklemede (5 ms pencere) uzmanlar sık sık boşta kalırken, uzun beklemede (200 ms pencere) yüksek verimlilik en üst düzeye çıkarılabilir
Derin pipeline modellerde batch sorunu
- Yüzlerce katmandan oluşan büyük transformer'lar, katmanlara göre birden fazla GPU'ya bölünerek (pipeline) çalıştırılır
- Tek bir batch içindeki token sayısı pipeline adımı sayısından az olduğunda, pipeline bubble denen durum oluşur ve bu da iş hacminin düşmesine yol açar
- Bunu önlemek için büyük batch'ler (yani uzun bekleme) gerekir; bunun sonucu olarak modelin yanıt süresi uzar
Neden kuyruk her zaman tam doldurulamıyor?
- Teoride yüksek eşzamanlı trafik varsa kuyruğu sürekli dolu tutarak bubble etkisinden kaçınılabileceği düşünülebilir
- Ancak pratikte transformer Attention aşamasında matris boyutlarının (uzunluklarının) aynı olması gerektiği için ancak o zaman batch yapılabilir; bu yüzden tek bir kuyrukla kusursuz çalışma zordur
- Ayrıca FFN ile attention aşamalarını ayırmak, bellek overhead'inin keskin biçimde artmasına ve veri taşımada verimsizliğe yol açar
Özet ve sonuç
- Büyük batch işleme, GPU maliyetini düşürmek ve iş hacmini artırmak için gereklidir; ancak kullanıcı daha uzun bekler
- Mixture-of-Experts ve büyük pipeline yapısına sahip modeller, doğaları gereği beklemeye dayalı yüksek verimli batch ortamlarına optimize edilmiştir
- Yerel gibi trafiğin az olduğu ortamlarda, optimize edilmiş büyük batch yapılandırması mümkün olmadığından GPU verimliliği keskin biçimde düşer ve çalıştırma maliyeti yükselir
- OpenAI, Anthropic vb. şirketler hızlı yanıt verebiliyorsa bunun nedeni şunlar olabilir:
- (1) MoE olmayan, daha verimli bir mimari kullanıyor olabilirler
- (2) Batch/pipeline optimizasyonu ve gelişmiş çıkarım hileleri uyguluyor olabilirler
- (3) Gerekenden daha fazla GPU ayırarak hızı satın alıyor olabilirler
Ek: prefill batch ile asıl gövde batch'i arasındaki fark
- Transformer'lar, tek bir kullanıcının prompt'undaki prefill (uzun giriş) aşamasını da batch halinde çalıştırarak ilk inference'ı hızlandırabilir
- Ancak bu yazıda tartışılan batch, birden fazla kullanıcının isteğinde asıl token üretim aşamasında ortaya çıkan iş hacmi-gecikme ödünleşimiyle ilgili batch'tir
- Prefill batch'i, yazıda sözü edilen eşzamanlı büyük batch ile doğrudan ilişkili değildir
Notlar
- Gerçek inference sistemleri, batch dolduğu anda çalıştırmak için continuous batching yöntemini de birlikte kullanır
- Ancak temel throughput-latency ödünleşimi yine aynı şekilde geçerlidir
1 yorum
Hacker News görüşleri