Üretken AI modelleri hızla gelişiyor. Her yeni model nesli, daha fazla parametre ve daha uzun bağlam pencereleri ile karşımıza çıkıyor. Temmuz 2023’te tanıtılan Llama 2 serisi modellerin bağlam uzunluğu 4K token iken, yalnızca bir yıl sonra tanıtılan Llama 3.1 modelleri bu ölçüyü 128K token’a şahane bir şekilde artırdı.
Uzun bağlam uzunlukları, modellerin daha büyük bir bilgi tabanında bilişsel görevleri yerine getirebilmesine olanak tanırken, AI çıkarım (inference) üretim ortamlarında benzersiz zorluklar da yaratmaktadır. Bu yazıda, uzun giriş dizisi uzunlukları ve düşük gecikmeli batch boyutları ile ilgili optimizasyon tekniklerini detaylı bir şekilde ele alacağız.
Decode aşamasının AI çıkarımında GPU kaynaklarını kullanımı
NVIDIA GPU mimarilerinin merkezinde streaming multiprocessor (SM) yer almaktadır. Bu yapı, bir GPU’nun temel hesaplama kaynaklarını içerir ve bunlar arasında NVIDIA Tensor Cores da bulunmaktadır. Kullanıcı bir model için bir talep gönderdiğinde, bu işlem iki ayrı hesaplama aşamasından geçer: ön doldurma (prefill) ve decode. Her iki aşama da GPU’nun SM’lerini farklı şekillerde kullanmaktadır. Ön doldurma aşamasında, GPU’nun tüm SM’leri paralel olarak KV cache’i hesaplamak ve ilk token’ı oluşturmak için çalışırken, decode aşamasında ise sistem, her yeni token ile birlikte ön doldurma aşamasındaki ara durumları ekleyerek çıktı token’larını otoregresif bir şekilde üretir. Bu aşama genellikle bir GPU’nun SM’lerinin sınırlı bir alt kümesi üzerinde gerçekleştirilir.
Decode aşamasında etkinleştirilen SM sayısı, hem batch boyutu hem de modelin dikkat başlıklarının sayısı ile belirlenir. Geleneksel dağıtım yöntemlerinde, bir batch içindeki her talep için her dikkat başlığı için ayrı bir SM’ye zamanlama yapılır.
AI çıkarımında decoding zorlukları
Inference decode aşamasında etkinleştirilen SM sayısı, üretim ortamlarında throughput (verimlilik) ve latency (gecikme) üzerinde etkili olabilecek birden fazla zorluk oluşturur.
Öncelikle, düşük gecikmeli senaryolarda batch boyutları genellikle bir talep ile sınırlı olabilir. Bu durumda, decode sırasında token üretimi yalnızca birkaç SM üzerinde gerçekleşirken diğer SM’ler idle (boş) kalmaktadır. Bu sınırlı iş dağılımı, genel sistem throughput’unu önemli ölçüde azaltabilir. NVIDIA Hopper GPU’ları, yüzlerce SM’ye sahip olduğundan, throughput üzerindeki etkisi oldukça büyük olabilir.
İkinci olarak, genellikle uzun dizi uzunluklarının söz konusu olduğu durumlarda daha küçük batch boyutları kullanılır. Bu, ön doldurma aşamasında üretilen büyük KV Cache boyutları nedeniyle ortaya çıkar. Küçük batch boyutları, decode aşamasında token üretiminin sadece birkaç SM’de gerçekleşmesini sağlayarak sistem throughput’unu azaltır.
Son olarak, model paralelliğinden faydalanan üretim senaryolarında modelin dikkat başlıkları birden fazla GPU arasında paylaştırıldığında, decode aşamasında her GPU üzerinde etkinleştirilen SM sayısı daha da azalır ve bu durum sistem throughput’unu olumsuz etkiler.
TensorRT-LLM çerçevesi ile düşük gecikme ve uzun bağlam çıkarım zorluklarının aşılması
TensorRT-LLM, çıkış aşamasında daha fazla SM’nin etkinleştirilmesini sağlayan multiblock attention özelliğini desteklemektedir. Bu özellik, decode aşamasındaki hesaplama görevlerini daha küçük bloklara ayırmak ve bunları GPU’nun tüm SM’leri arasında akıllıca dağıtmak için tasarlanmıştır. SM’ler belirli bölümlerini işledikten sonra, çıktılar, nihai sonucu üretmek üzere kaynak SM’lere geri toplanmaktadır.
TensorRT-LLM multiblock attention’ı etkinleştirmek, sistemlerin çıkarım sırasında daha uzun bağlam uzunluklarını daha verimli bir şekilde yönetmesine olanak tanır. Decode aşamasının, yalnızca bir alt kümesiyle kısıtlı kalmak yerine bir GPU’nun tüm SM’lerinin belleğine erişebilmesini sağlayarak, multiblock attention, büyük bağlamlar için büyük KV cache boyutlarıyla çalışmanın bellek bant genişliği kısıtlaması sorununu çözer.
Ayrıca, küçük batch boyutları ile düşük gecikme sağlayan dağıtım senaryolarında, multiblock attention, decode aşamasındaki hesaplama yükünü GPU’nun tüm kaynakları arasında daha verimli bir şekilde dağıtarak throughput’u artırır ve daha yüksek genel performans sağlar.
Multiblock attention, NVIDIA HGX H200’de throughput’u %35 artırıyor
Multiblock attention ile bir NVIDIA HGX H200, çok uzun dizilerle düşük gecikmeli senaryolar için %350 daha fazla token üretme kapasitesine ulaşabiliyor. Hatta, model yarım sayıda NVIDIA HGX H200 GPU üzerinde paralel hale getirildiğinde bile, token başına %300’lük bir performans artışı elde etmek mümkündür. Dahası, bu throughput artışı, ilk token alma süresinde herhangi bir değişiklik olmadan gerçekleşmektedir.
TensorRT-LLM Multiblock Attention ile Başlamak
GPU’nun tüm SM’lerini decode aşamasında devreye alarak, TensorRT-LLM Multiblock Attention, çıkarım sırasındaki sistem throughput’unu önemli ölçüde iyileştirir ve mevcut sistemlerin daha büyük bağlam uzunluklarını desteklemesini sağlar. TensorRT-LLM Multiblock Attention, otomatik olarak etkinleştirilmiş bir çalışma zamanı özelliğidir. TensorRT-LLM hakkında daha fazla bilgi edinmek için, TensorRT-LLM GitHub dökümantasyonuna göz atabilirsiniz.
Daha fazla bilgi için NVIDIA AI Çıkarım çözümleri hakkında bilgi edinebilir ve en son AI çıkarım performans güncellemelerinden haberdar olabilirsiniz.