· kaynak dev.to (home feed)
SGLang, DeepSeek'in DeepInfer'ına kendi benchmarklarında B300 ve GB300 genelinde yetişti
SGLang, DeepInfer'ın kendi benchmark iş yükünü aynı donanımda çalıştırdı ve prefill veriminde 1.04x'e kadar, decode adımlarında ise %7.4'e kadar kısalma bildirdi; ölçüm ve yapılandırma farklılıkları da açıkça paylaşıldı.
SGLang'ın entegre ettikleri
DeepSeek'in sürümü topluluğa üreticinin kernel'larını verdi ve SGLang bunları benimsedi. Motor artık FlashMLA, DeepGEMM, DeepEP, DeepSelect ve TileLang kernel'larını, ayrıca Mega serisini çalıştırıyor: MegaAttention, MegaMoE, MegaGate ve Mega-mHC. MegaMoE, token dispatch'i, uzman matris çarpımlarını ve combine adımını tek bir kernelda birleştiriyor; MegaAttention ise B300 ve GB300 donanımında hem prefill hem decode için varsayılan attention yolu.
Kernel'ların üzerinde üç mekanizma bulunuyor. DSpark spekülatif decoding, checkpoint'in draft modelini kullanarak hedef modelin birlikte doğruladığı bir token bloğu öneriyor ve hedef modelin forward geçiş sayısını azaltıyor. SWA bounded replay, geç decoder katmanlarını yalnızca son 128 prompt token'ı üzerinden çalıştırırken önceki kaynak katmanlar tam prompt'u işlemeye devam ediyor; prefix-cache isabetinde ise bir encoder replay, eksik sliding-window KV girdilerini son 128 önbelleklenmiş token'dan yeniden oluşturuyor. Engram tablo yerleşimi iki modda geliyor: her düğümde host bellekte tek kopya tutulması, bu da KV cache için daha fazla HBM bırakıyor, ya da tabloların GPU'lara dağıtılıp arama sırasında NVLink üzerinden doğrudan eş okuma yapılması ve kolektif iletişim kullanılmaması.
Karşılaştırma nasıl yapıldı
24 Ekim'de yayımlanan SGLang yazısı kurulumu anlatıyor. Prefill, DP4/EP4 ile 4 GPU'lu bir düğümde 128K token'lık bağlamlarla ve istek başına 4K yeni token ile çalıştı; batch'ler GPU başına 4K ile 64K yeni token arasında tarandı, uzman yönlendirmesi dengeli tutuldu, EPLB kapatıldı ve 32 yedek uzman kullanıldı. Decode ise 16 düğüm üzerindeki 64 GB300 GPU'da DP64/EP64 ile yine 128K token'lık bağlamlarda, paylaşımlı önbelleklenmiş prefix ile, statik doğrulama altında adım başına üç draft token ve 384 yönlendirilmiş artı 64 yedek uzmanla çalıştı.
Sonuçlar iş yüküne göre değişiyor. 4x GB300'de SGLang, GPU başına 4K, 32K ve 64K yeni token'da önde; 8K ve 16K'da ise eşit. 4x B300'de 4K, 8K ve 32K'da önde, 16K ve 64K'da eşit. Decode tarafında ise GPU başına 16 ile 256 istek arasında adımı %1.1 ile %7.4 daha kısa ve 8'de eşit.
Yazının açıkladığı farklılıklar
Ek, ölçüm yöntemleri arasındaki dört ayrışmayı listeliyor. DeepInfer GPU 0 üzerinde kabaca dokuz prefill batch'ini süreklendirirken SGLang, isteklerin %20 ile %90'ının tamamlandığı noktalar arasındaki her GPU'daki tüm tamamlanmış batch'lerin ortalamasını alıyor. DeepInfer her GPU'da istekler arasında aynı prompt'u tekrarlarken SGLang istek başına yeni token sayısını değiştiriyor. Yapılandırma da farklı: SGLang Engram tablolarını cihaz üzerinde tutarken DeepInfer bunları host belleğe yerleştiriyor ve DeepInfer'ın draft modeli 64 yedek uzman taşırken SGLang'ınki hiç taşımıyor. Her seçim bellek baskısını ve doğrulama maliyetini değiştirdiğinden yazı her iki yapılandırmayı da açıkça belirtiyor.
Performans nereden geliyor
Yazı rakamları kernel'lar kadar altyapıya bağlıyor: Mega-mHC doğrudan MegaMoE'ye besliyor, attention çıktı projeksiyonu için MXFP8 çıktı üretiyor ve prefill sıkıştırıcı ile istek-penceresi KV kopyaları füze kernel'lar kullanıyor; böylece ara bellek trafiği ve kernel başlatmaları azalıyor. Bölünebilir CUDA graph'ler, uzun bağlamlar ve data-parallel attention dahil GPU başına 8K token'a kadar prefill adımlarını kapsıyor; decoder replay ise sınırlı soneke göre boyutlandırılmış ayrı graph'ler kullanıyor.
Bir de köken notu var. Aralık 2024'teki v0.4'ten beri SGLang, GPU N adımını yürütürken CPU'da N+1 adımını hazırlıyor ve yazı, DeepInfer'ın belgelerinin bu çakışan zamanlayıcı tasarımını SGLang'a atfettiğini belirtiyor; bu da karşılaştırmayı kısmen daha eski bir tasarımın, onu miras alan daha yeni bir motorla sınanması haline getiriyor. DeepSeek'in sohbet formatı da geldi: prompt'lar deepseek-recipe paketiyle render ediliyor, çıktılar onunla ayrıştırılıyor ve dilbilgisi kısıtlamalı decoding JSON schema, regex ve EBNF'yi kapsıyor.
Verimliliğin tek başına çözmediği sorun
dev.to özetinin de işaret ettiği gibi grafikler, verim rakamının altındaki kapasite sorusunu açık bırakıyor: KV cache katmanı nerede duruyor, draft model yedek uzman taşıyor mu ve bir gateway, replikalar farklı önbelleklenmiş prefix'lere sahip olduğunda ne yapmalı. Özellikle DeepInfer'ın kendi README'si, eksiksiz bir inference servisi için bir KV cache sistemi, prefill/decode ayrıştırması ve data-parallel replikalar arasında yük dengelemeyi gereklilik olarak sayıyor ve SGLang üçünü de sunuyor.
Neden önemli
DeepInfer, kendi modelini kendi yığınında ölçen üreticiydi; bu da onu DeepSeek ağırlıklarını dağıtan herkes için hem referans hem performans tavanı yapıyordu. Bu sonuçlar, açık ve topluluk tarafından geliştirilen bir motorun artık o tavana yetiştiğini ve üreticinin kendi README'sinin talep ettiği operasyonel bileşenleri de sunduğunu gösteriyor. En az bunun kadar önemlisi, karşılaştırmanın eşitlik iddialarının nasıl yayımlanması gerektiğini modelliyor: metodoloji ve yapılandırma farklılıkları eğrilerin altına gömülmek yerine yanında açıklanıyor. Servis ekipleri için pratik uyarı geçerliliğini koruyor; çünkü verim tek bir eksen ve gerçek kapasite ile maliyeti cache yerleşimi, draft yedekliliği ve gateway yönlendirmesi belirleyecek.
- #sglang
- #deepseek
- #llm-inference
- #benchmarks
- #open-source