SON DAKİKA

Nvdia

NVIDIA’nın FlashInfer ile Yüksek Performanslı LLM Çıktı Çekirdeklerini Çalıştırma

En iyi LLM Çıkarım performansı için iki temel unsur gerekiyor: hız ve geliştirici hızı. Hız, altındaki donanımın verimliliğini en üst düzeye çıkararak yüksek optimize edilmiş hesaplama çekirdeklerinin algoritmalarını kullanmayı ifade eder. Geliştirici hızı ise bu yeni çekirdekleri hızlı bir şekilde benimseme ve yeni modeller, algoritmalar ve donanımlar geliştirme yeteneğini belirtir. Sonuç olarak, bu hız, yeni hesaplama çekirdeklerinin hızlı bir şekilde dağıtılması ve bu çekirdeklerin çerçevelere entegrasyonunu kolaylaştırır.

FlashInfer architecture diagram shows an inference-engine-agnostic library with a unified API and flexible sparse KV-cache primitives.
Şekil 1. FlashInfer teknik mimarisi

FlashInfer, verimli LLM hizmet motorları oluşturmak için özelleştirilebilir ve etkili bir kütüphanedir. KV-cache depolamasını blok-seyrek ve birleşilebilir formatlar kullanarak optimize eder, bu sayede bellek erişimini iyileştirir ve tekrarı azaltır. Farklı ayarlarla uyumlu bir özelleştirilebilir dikkat şablonu sunar; bu şablon, anlık derleme (JIT) ile uyum sağlamaktadır. Dinamik kullanıcı taleplerine göre ayarlanan yük dengeli planlama algoritması, NVIDIA CUDA Grafik statik yapılandırmasıyla uyumlu kalır. FlashInfer, MLC Engine, SGLang ve vLLM gibi önde gelen LLM hizmet çerçeveleri ve çeşitli özel motorlarla entegre edilmiştir.

FlashInfer, Carnegie Mellon Üniversitesi Paul G. Allen Bilgisayar Bilimleri ve Mühendislik Okulu ile OctoAI (NVIDIA tarafından satın alındı) arasındaki işbirlikçi bir araştırma projesi olarak başladı. Ekip, motor bağımsız, yüksek optimize edilmiş ve yeni tekniklere kolayca genişletilebilen bir LLM çıkarım çekirdekleri kütüphanesi yaratmayı hedefledi. Şimdi, üretim dağıtımları ve AI sistemleri topluluğundaki araştırma ve geliştirme ekiplerinin katkılarıyla büyüyen bir açık kaynak projesidir.

Teknik makale FlashInfer: Verimli ve Özelleştirilebilir Dikkat Motoru LLM Çıkarım Hizmeti için, MLSys 2025’te en iyi makale ödülü almıştır.

NVIDIA, şimdi FlashInfer’de en performanslı LLM çıkarım çekirdeklerini yayımlamaktadır. Bu çekirdekler, NVIDIA TensorRT-LLM gibi yerlerden gelir ve vLLM, SGLang ve özel çıkarım motorlarına kolay entegrasyon sağlar.

FlashInfer Mimari Genel Görünümü

FlashInfer, LLM hizmeti için özel olarak yapılandırılmış bir NVIDIA GPU operatör yığını olarak, en yeni çekirdekler için hız ve geliştirici hızı hedeflemektedir. Çıkarım platformları, yeni kütüphanelerin beklenmesine gerek kalmadan veya CUDA C++’da çekirdekleri yeniden yazmadan yenilikçi fikirleri benimseyebilir. Bu çekirdekler, DLPack API’si aracılığıyla tüm çerçevelere sunulacak ve birçok çıkarım motoruna kolay entegrasyon sağlamak için PyTorch operatörleri olarak kaydedilecektir. JIT yeteneği, kullanıcıların hedef model tarafından kullanılan çekirdekleri gerçekleştirmesine olanak tanır; bu sayede FlashInfer, bağımlılık olarak minimal bir ayak izine sahiptir.

FlashInfer, LLM iş yüklerini Dikkat, GEMM, İletişim ve Örnekleme olmak üzere dört operatör ailesine böler ve her bir aileyi minimal kod değişiklikleri ile herhangi bir hizmet motoruna entegre edilebilen hafif, yüksek performanslı toplu işlemler aracılığıyla sunar.

Dikkat

Modern çıkarım talepleri, olağanüstü farklı sıra uzunlukları, KV tampon blok boyutları, maskeleme kuralları ve konum kodlama şemaları ile gelir. FlashInfer, bu dinamizmi hassas bir şekilde yönetir:

  • Birleşik depolama: her tamponu blok/vektör seyrek matris olarak temsil eder.
  • Şablon ve JIT çekirdekleri: CUDA/CUTLASS kod tabanı, özelleştirme düğmeleri, logits/anahtar/soru, gruplandırılmış, MLA ve gelecekteki varyantlar ile.
  • İnceleme–uygulayıcı arayüzü: önce istek şekillerini ve ön paylaşım modellerini inceleyen, ardından hafif bir planlayıcı aracılığıyla optimize edilmiş çekirdekleri başlatan PyTorch dostu bir API.
A workflow showing modern inference requests with different sequence lengths, KV cache block sizes, masking rules, and positional-encoding schemes handled by FlashInfer.
Şekil 2. FlashInfer mimarisi

GEMM ve İletişim

LLM blokları hala yoğun bir şekilde matris çarpımına dayanıyor. Geleneksel GEMV/GEMM hesaplamalarının yanı sıra, karışım uzmanları ve LoRA katmanları gibi son gelişmeler, gruplandırılmış GEMM gibi yeni gereksinimleri de beraberinde getiriyor—birden fazla küçük matris çarpımını tek bir çağrıda gerçekleştiriyor—ve her yere iletişim sağlamaktadır. FlashInfer, en hızlı açık kaynak veya NVIDIA çekirdeklerini (fp4 / fp8 tensor-core yollarını da içeren) seçer ve bunları tek bir tutarlı API’nin arkasında sunarak, hizmet yığını uygulama mantığını değiştirmeden GPU’ları veya çekirdekleri değiştirebilir.

Token Örnekleme

Bir sonraki token’ı üretmek genellikle Top-K/Top-P filtrelemesine takılmaktadır. Geleneksel uygulamalar, yalnızca birkaç logits’in önemli olduğu durumlarda tüm kelime dağarcığını sıralamakta, bu da gereksiz bir iş yükü yaratmaktadır. FlashInfer, küresel sıralamaları, olasılığı düşük olan token’ları anında elemek için bir red-esaslı ve sıralama-free örnekleyici ile değiştirir, böylece büyük kelime hazinelerinde gecikmeyi azaltıyor ve sayısal olarak doğru kalıyor.

Geleceği Garantileme

Tüm bu katmanlar ile birlikte, hizmet çerçeveleri KV-cache düzenlerini değiştirme, yeni dikkat tasarımlarını tanıtma, rastgele uzunlukları gruplama veya daha sıkı gecikme hedeflerini takip etme imkanına sahip olur; bu da çekirdekleri yeniden yazmayı veya CPU’ya dönmeyi gerektirmez. İlk sorgudan son token’a, FlashInfer kritik çıkarım yolunu GPU üzerinde tutarak esnek, geleceği garantileyen ve hızlı olmayı başarır.

FlashInfer Kullanımı

Flashinfer paketi PyPI üzerinde mevcuttur. Denemek için:

pip install flashinfer-python

FlashInfer, plan/uygula tasarımı ile çekirdek derleme/seçim/ayarları ve çekirdek çalıştırmayı ayrıştıran Torch-yerli API’lar sunar. Dikkat için API şöyle görünmektedir:

from flashinfer.attention import BatchAttention
attention = BatchAttention(backend="cutlass") # Birden fazla arka uç uygulaması sağlıyoruz
attention.plan(
  qo_offsets, # değişken uzunluklu sorgu/çıkışta her talep için offsetler
  kv_lens, # sayfa tablosundaki her talep için kv uzunluğu
  kv_block_table, # sayfa tablosundaki blok indekslerini belirten blok tablosu, paketlenebilir/doldurulabilir
  num_qo_heads, # sorgu/çıkış başlarının sayısı
  num_kv_heads, # anahtar/değer başlarının sayısı
  head_dim_qk, # anahtar/sorgu baş boyutu
  head_dim_vo, # değer/çıkış baş boyutu
  dtype_q=torch.bfloat16, # sorgu veri türü
  dtype_kv=torch.bfloat16, # kv veri türü
  dtype_o=torch.bfloat16, # çıkış veri türü
  **variant_kwargs, # dikkat varyantlarını belirtme gibi diğer argümanlar
)
O, lse = attention.run(q, (k, v)) # çıktı/lse döndür

Çekirdek seçimi ve ayarı, plan aşamasında gerçekleştirilir; bu aşama gerek duyulan meta verileri toplar. Aynı plan bilgileri, aynı meta verilere sahip sonraki çalıştırmalar için yeniden kullanılabilir (LLM üretim adımındaki tüm katmanlar için).

Kullanıcılar, kullanım durumları için en iyi performansı elde etmek amacıyla birden fazla dikkat arka ucu arasından seçim yapabilir. Tüm çekirdekler CUDAGraph güvenliği sağlar; bu da düşük gecikmeli LLM çıkarım hizmetine olanak tanır.

Logits işleme için modüler bir arayüz, farklı logits işlemcilerini bir araya getirirken, flashinfer etkili bir şekilde reddetme örnekleme tabanlı bir uygulama üretir. Sonunda, blog yazımız flashinfer reddetme örnekleme algoritmasının nasıl çalıştığını açıklamaktadır.

import flashinfer
from flashinfer.logits_processor import LogitsPipe, Temperature, Softmax, TopP, Sample

# Bir boru hattı oluştur
pipe = LogitsPipe([
    Temperature(),      # Logit'leri sıcaklık ile ölçeklendir
    Softmax(),          # Logit'leri olasılıklara dönüştür
    TopP(),             # Top-p filtrelemesi uygula
    Sample()            # Dağılım üzerinden örnek al
])

# Boru hattını uygula
logits = torch.randn(batch_size, vocab_size, device="cuda")
output_ids = pipe(logits, temperature=0.7, top_p=0.9)

FlashInfer ile başlamanız için GitHub reposu ve belgelere göz atabilirsiniz.

Kaynak

Nvdia Blog

Düşüncenizi Paylaşın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgili Teknoloji Haberleri