· kaynak dev.to (home feed)
AWS'un en ucuz CUDA instance'ı LLM decode süresinin %87'sini sessiz dtype dönüşümünde kaybediyor
dev.to'daki benchmark'lar, AWS'un en ucuz tam GPU'lu CUDA instance'larının decode sürelerinin büyük kısmını sessiz dtype dönüşümünde tükettiğini gösteriyor; g5g, her health check yeşil yanmasına rağmen g6'ya göre 3,7 kat daha düşük throughput ile kalıyor.

Kurulum ve rakamlar
Dev.to'da iki bölümlük bir benchmark serisi, AWS üzerindeki en ucuz tam GPU'lu CUDA instance'larının inference throughput'larının çoğunu sessizce heba edebileceğini ve bunu hiçbir log satırı, metrik ya da health check'in söylemeyeceğini savunuyor. Yazar, bayt bayt aynı kod ve ağırlıkları iki instance ailesinde çalıştırarak g5g.2xlarge üzerinde saniyede 12,9 token, g6.2xlarge üzerinde ise 48,4 token decode ölçtü — 3,7 katlık bir fark — ve yavaş instance'ın decode süresinin %87'sini faydalı hesaplamalar yerine dtype dönüşümüne ve bir fp32 fallback'e bağladı.
Kurulum ve rakamlar
İlk yazıda, yoğun referans checkpoint'i google/gemma-4-E2B-it, PyTorch ve vLLM olmadan el yazımı saf bir JAX portu üzerinden iki spot instance'da sunuldu. g5g.2xlarge, bir Graviton2 Arm host'unu NVIDIA T4G (Turing, compute capability 7.5) ile eşleştiriyor; g6.2xlarge ise x86_64 tabanlı ve NVIDIA L4 (Ada, 8.9) taşıyor. Payload her iki tarafta birebir aynı tutuldu — aynı build id, aynı config, aynı 6.155.450.950 baytlık ağırlıklar — böylece yalnızca çip ve host farklı.
64 çıktı token'ında, eşzamanlılık 1'de, her hücre için üç tekrar ve medyanların raporlandığı bir tarama, decode throughput'unun girdi uzunluklarının 50 katlık aralığında fiilen düz kaldığını gösterdi: g5g'de yaklaşık 12,9 tok/s, g6'da ise 48,3 ile 48,5 arası. Prompt'lar büyüdükçe uçtan uca istek oranları her iki tarafta da düştü; yazar bunu, prefill'in padded bucket ile ölçeklenmesine bağlıyor — decode hızından ayrı bir etki ve ikisi karıştırılırsa sonucu çarpıtır.
Throughput nereye gitti
xprof ile 20 decode adımının profillenmesi, dtype dönüşümünü g5g'nin kernel süresinin %54,1'ine ve bir fp32 gemvx yolunu %32,8'ine yerleştirdi; g6'da dönüşüm %0,0'dı. Toplam kernel süresi 362,8 ms'e karşı 1.466 ms idi. g5g kendi bellek bant genişliği roofline'ının %26'sında çalışırken g6 kabaca tam sınırında koşuyordu.
Mekanizma mimari. Turing silikonunda bfloat16 veri yolu yok ve uyuşmayan bir compute dtype hata vermez — XLA onu fp32 üzerinden emüle eder ve maliyet yalnızca eksik throughput olarak ortaya çıkar. Checkpoint'in depolamasını float16'ya dönüştürmek yardımcı olmadı; dönüşüm %54,0'ta kaldı ki bu, diskteki dosyadan çok compute yoluna işaret ediyor. Port artık cihazın canlı compute capability'sini okuyor ve pre-Ampere kartlarda float16, diğerlerinde bfloat16 seçiyor; bu kararı başlangıçta log'luyor, böylece yanlış yapılandırılmış bir instance tek bir grep uzağınızda. g5g profili ikinci bir instance üzerinde milisaniye yakınında yeniden üretildi; g6 bir kez ölçüldü. Yazar ayrıca karşılaştırmanın tek değişkenli olmadığını — host mimarisinin ve base image'ın da farklı olduğunu — ve her iki tarafta da Tensor Core kullanımının %0,0 okunduğunu, bunun açıklamasız olduğunu kabul ediyor.
Neden hiçbir şey yakalamıyor
g5g geçerli tamamlamalar sundu, HTTP 200 döndürdü ve uçtan uca sağlıklı bir endpoint bildirdi — tüm bunlar, gerekli işin kabaca dört katını yaparken. İki ek ölçüm tuzağı daha belgelenmiş. Soğuk ilk istek 4,50 saniyelik sıcak süreye karşı 18,06 saniye sürdü — istek başına 4 katlık oran — dolayısıyla warm-up atlayan bir harness instance'ı yanlış raporlar. Ve KV cache'teki bir padding-eviction hatası, temiz bir başarı durumunun altında yozlaşmış, tekrarlayan çıktı üretti; yalnızca response body üzerindeki bir kontrolle yakalandı.
Maliyet cephesi
Bir companion dev.to yazısı, us-east-1'deki her NVIDIA instance tipini AWS Pricing API üzerinden fiyatlandırdı. g5g.xlarge — Graviton2 artı T4G — talep üzerine saatte 0,4200 dolar ve spot'ta 0,1458 dolar ile en ucuz tam CUDA GPU; buna karşılık g4dn.xlarge 0,5260 ve 0,3559 dolar ve onun T4'sü özdeş ölçüyor: aynı compute capability, VRAM, bellek saati ve veri yolu genişliği ve 329.579 token'lık özdeş bir vLLM-allocate KV cache.
Arm kutusu yine de iki gizli maliyet taşıyor. vLLM'un resmi container'ı platform başına image yayımlıyor ve linux/arm64 build'i SM 7.5 çekirdeklerini PTX fallback olmadan atlıyor; o düzenek tek bir token sunmadan önce vLLM'u kaynaktan derlemek zorunda. Ve g5g.xlarge, g4dn'ün 16 GiB'ına karşı 8 GiB host RAM ile geliyor — swap eklemeden 9,54 GiB'lik checkpoint'i mmap etmek için fazla az. Saatlik 0,2020 dolardan başlayan daha ucuz kesirli L4 dilimleri ise yaklaşık 10 GB'lık checkpoint'i hiç barındıramıyor.
Neden önemli
Saatlik fiyat, token başına fiyat değildir. Spot'ta %59 daha ucuz bir instance, decode bütçesinin çoğu emülasyona giderse token başına yine kat kat fazla mal olabilir ve bu başarısızlık her standart operasyonel sinyale görünmezdir. Pre-Ampere donanımda LLM sunan ekipler için — T4 sınıfı kartlar hâlâ en ucuz ve en yaygın CUDA GPU'lar arasında — bu yazılardan çıkan pratik kontrol listesi: decode'u prefill'den ayrı profille, ölçmeden önce warm-up yap, compute dtype'ın silikona uyduğunu doğrula ve container'ın gerçekten GPU'nun SM sürümü için çekirdek içerdiğini teyit et. Sağlıklı bir endpoint, verimli bir endpoint'in kanıtı değildir.
- #aws
- #cuda
- #gpu
- #llm-inference
- #benchmarking