Chunked Prefill
Parçalı ön doldurmanın, uzun istemleri eşzamanlı iş yükleri altında daha akıcı sunum için belirteç parçalarına bölerek LLM çıkarım gecikmesini ve aktarım hızını nasıl iyileştirdiğini öğren.
Parçalı prefill, uzun bir istemi kesintisiz tek bir işlemde işlemek yerine daha küçük token gruplarına bölen bir çıkarım zamanlama tekniğidir. Bir çıkarım motoru, bu parçaları diğer istekler için token üretimiyle dönüşümlü olarak çalıştırarak tek bir uzun istemin GPU'yu tek başına meşgul etmesini önleyebilir. Bunun sonucunda genellikle eşzamanlı iş yüklerinde daha akıcı gecikme, daha iyi donanım kullanımı ve etkileşimli büyük dil modeli uygulamaları için daha öngörülebilir hizmet elde edilir.
Parçalı Prefill Nasıl Çalışır?#
Otok regresif Transformer çıkarımının iki ana aşaması vardır:
- Prefill: Model tüm giriş token'larını işler, bunların dikkat durumlarını hesaplar ve KV cache'i doldurur. Prefill birçok token'ı paralel olarak değerlendirir ve genellikle hesaplama sınırlıdır.
- Decode: Model, önceden önbelleğe alınmış durumları okurken çıktıyı her seferinde bir token olacak şekilde üretir. Decode, ham hesaplama gücünden ziyade çoğunlukla bellek bant genişliğiyle sınırlıdır.
Parçalama olmadan 20.000 token'lık bir istek, kısa bir isteğe kıyasla bir çıkarım adımını çok daha uzun süre meşgul edebilir. Bunun sonucunda etkin üretim işlemleri duraklayabilir ve kendi istemleri küçük olsa bile token'lar arası gecikme artabilir.
Parçalı prefill ile zamanlayıcı her yinelemeye bir token bütçesi atar. Önce etkin decode işlemlerini zamanlar, ardından kalan bütçeyi bir veya daha fazla istem parçası için kullanır. Bir istem sığmazsa kalan token'ları sonraki bir yinelemeyi bekler. Güncel vLLM optimizasyon kılavuzu, bu yaklaşımı hesaplama ağırlıklı prefill işini bellek ağırlıklı decode işlemiyle birleştirmenin bir yolu olarak açıklar.
Parçalama, istem token'larının işlenme zamanını değiştirir; sırasını veya anlamını değiştirmez. Tam istem hazır olup decode başlayana kadar tamamlanan her parça, isteğin önbelleğe alınmış dikkat durumunu genişletir.
Parçalı Prefill Neden Önemlidir?#
Parçalı prefill, üretim ortamındaki model sunumu için birbiriyle rekabet eden performans hedeflerini ele alır:
- Token'lar arası gecikme: Mevcut decode isteklerine öncelik vermek, akışla gönderilen yanıtların uzun duraklamalar olmadan devam etmesine yardımcı olur.
- İlk token'a kadar geçen süre: Büyük parçalar yeni bir istemi daha kısa sürede tamamlar; çok küçük parçalar ise üretilen ilk token'ı geciktirebilir.
- Verim: Prefill ve decode işlerini birleştirmek, GPU hesaplama gücünün ve bellek bant genişliğinin daha etkili kullanılmasını sağlayabilir.
- Adillik: Uzun istemlerin çok sayıda kısa ve etkileşimli isteği engelleme olasılığı azalır.
Bu nedenle parça veya token bütçesi ayarı bir ödünleşimdir. vLLM zamanlayıcı yapılandırması, toplu token sınırları, kısmi prefill işlemleri ve uzun istem eşikleri için denetimler sunar. Daha küçük bütçeler genellikle duyarlı decode işlemlerini, daha büyük bütçeler ise istemlerin daha hızlı alınmasını destekler.
Parçalama her darboğazı ortadan kaldırmaz. Uzun bağlamlar hâlâ önbellek belleği tüketir ve aşırı agresif kabul, önbellek baskısına, isteklerin önceliklendirilmesinin kaldırılmasına veya işlerin tekrarlanmasına neden olabilir. Operatörler gerçekçi istem dağılımları altında medyan ve kuyruk çıkarım gecikmesini, ilk token'a kadar geçen süreyi, token'lar arası gecikmeyi, verimi ve GPU bellek kullanımını ölçmelidir.
İlgili Çıkarım Kavramları#
Parçalı prefill, çeşitli optimizasyonlarla yakından ilişkilidir; ancak farklı bir amaca hizmet eder:
- Sürekli toplu işleme: Üretim sırasında istekleri dinamik olarak ekler ve kaldırır. Parçalı prefill ise uzun istem işlemenin token düzeyindeki sınırlar üzerinden zamanlanabilmesini sağlayarak bunu tamamlar.
- İstem önbelleğe alma: Tekrarlanan bir istem öneki için daha önce hesaplanmış durumları yeniden kullanır. Parçalı prefill yeni hesaplamayı zamanlar; bu hesaplamayı atlamaz.
- Sayfalanmış KV-cache yönetimi: Önbelleğe alınmış dikkat durumlarını bellek blokları halinde düzenler. NVIDIA'nın TensorRT-LLM genel bakışı, istem işleme optimizasyonlarının yanı sıra sayfalanmış önbelleğe alma ve uçuş hâlindeki toplu işlemeyi de içerir.
- Dinamik toplu işleme: NVIDIA Triton dinamik toplu işleme kılavuzunda açıklandığı gibi ayrı istekleri toplu işlemler hâlinde birleştirir. Tek bir uzun istemi kısmi prefill işlemlerine bölmesi gerekmez.
- Ayrıştırılmış prefill ve decode: Aşamaları ayrı çalışanlar üzerinde yürütür. NVIDIA'nın prefill ve decode dağıtım kılavuzu, bunun yerine aşamaların bağımsız olarak nasıl ölçeklendirilebileceğini gösterir.
Ultralytics YOLO26 Triton dağıtım iş akışı, ölçeklenebilir bilgisayarlı görü çıkarımını ve otomatik toplu işlemeyi desteklese de standart YOLO nesne algılama, otoregresif bir metin-prefill aşamasına sahip değildir. Parçalı prefill öncelikle üretken dil ve çok modlu modellere uygulanır.
Gerçek Dünya Uygulamaları#
-
Belge asistanları: Geri getirmeyle zenginleştirilmiş bir asistan, aynı anda kısa soruları olan kullanıcılara hizmet verirken uzun bir rapor alabilir. Raporun prefill işlemini parçalara bölmek, tüm bağlam işlenene kadar donmak yerine devam eden sohbetlerin decode işlemine sürmesini sağlar.
-
Çok modlu video analizi: Bir görüntü-dil modeli, görüntü özellikleri, nesne açıklamaları ve uzun bir metin talimatı alabilir. Bir görü işleme hattı önce Ultralytics YOLO tahmini kullanarak algılamalar üretebilir, ardından yapılandırılmış görsel bağlamı üretken modele gönderebilir. Parçalı prefill, ortaya çıkan görsel ve metinsel token'ların diğer isteklerle birlikte zamanlanmasına yardımcı olur. NVIDIA'nın çok modlu encode-prefill-decode iş akışı, bu aşamaların bağımsız olarak yönetilmesinin ölçeklenebilirliği neden artırabileceğini gösterir.
Pratik Dağıtım Kılavuzu#
Parçalı prefili yalnızca hedef mimariyi resmen destekleyen bir sunum motoru aracılığıyla etkinleştir. Örneğin TensorRT-LLM arka uç yapılandırması, desteklenen dağıtımlar için parçalı bağlam denetimlerini belgeler.
Tek bir isteğe güvenmek yerine gerçekçi eşzamanlılık, giriş uzunlukları ve çıkış uzunluklarıyla kıyaslama yap. Çalışma zamanının önerdiği token bütçesiyle başla, ardından ilk token'a kadar geçen süreyi ve token'lar arası gecikmeyi izleyerek ayarlama yap. Son olarak hem çok uzun hem de çok kısa istemler içeren karma iş yüklerini test et; parçalı prefill en belirgin operasyonel değerini burada sağlar.









