“NVIDIA TensorRT-LLM ile KV Cache Erken Yeniden Kullanımı sayesinde 5 Kat Daha Hızlı İlk Token Süresi”

Önceki blog yazımızda, anahtar-değer (KV) önbelleğini CPU belleğine aktararak tekrar kullanılmasının, x86 tabanlı NVIDIA H100 Tensor Core GPU’larda ilk token için geçen zamanı (TTFT) 14 kat, NVIDIA GH200 Superchip’inde ise 28 kat hızlandırabileceğini gösterdik. Bu yazıda, KV önbelleği tekrar kullanma tekniklerini ve TTFT hız artışını daha da artırabilecek en iyi uygulamaları ele alacağız.

KV Önbelleği Nedir?

LLM (Büyük Dil Modelleri), soru yanıtlama ve kod oluşturma gibi birçok görev için hızla benimsenmektedir. Bir yanıt oluşturmak için bu modeller, kullanıcının girişini token’lara dönüştürerek başlar, ardından bu token’lar yoğun vektörlere dönüştürülür. Bu aşamada kullanıcı girişi ile token’lar arasındaki ilişkileri matematiksel olarak modellemek için geniş çapta dot-product işlemleri gerçekleştirilir. Ancak, bu süreçlerin hesaplama maliyeti, giriş dizisinin uzunluğu ile birlikte kare olarak artmaktadır.

Ulaşım gerektiren bu süreç, yeniden hesaplanan sonraki token’lar için önbelleğe alınan anahtar ve değerleri üretir. KV önbelleğinin yeniden kullanılması, ek token’lar oluşturma sürecindeki hesaplama yükünü ve zamanını azaltarak daha hızlı ve verimli bir kullanıcı deneyimi sağlar.

Erken KV Önbelleği Yeniden Kullanma

Geleneksel yeniden kullanım algoritmaları, KV önbelleği hesaplamasının tamamlanmasını bekler. Örneğin, kurumsal sohbet botları gibi senaryolarda, sistem talimatları (kullanıcı sorgularına eklenen önceden tanımlı talimatlar) LLM yanıtlarının belirli bir çerçevede yönlendirilmesi için gereklidir. Bu nedenle bu yöntem oldukça verimsiz hale gelebilir.

Birçok kullanıcının aniden aynı anda sohbete katıldığı durumlarda, her kullanıcının sistem talimatı KV önbelleği için ayrı bir hesaplama yapması gerekir. Ancak TensorRT-LLM sayesinde, sistem talimatı üretilirken gerçek zamanlı olarak yeniden kullanılabilir, bu sayede her kullanıcı için yeniden hesaplanmak yerine, sistem talimatı tüm kullanıcılar arasında paylaşılabilir. Bu durum, sistem talimatlarının gerektirdiği kullanım senaryolarında inference süresini %500 oranında hızlandırabilir.

A bar Chart showing time to first token speedup with and without TensorRT-LLM KV cache reuse.
Şekil 1. TensorRT-LLM KV önbelleği tekrar kullanma ile TTFT’yi 5 kat hızlandırabilir

Esnek KV Önbelleği Blok Boyutlandırma

Yeniden kullanım uygulamalarında, yalnızca tüm önbellek belleği blokları için yeniden kullanım tahsis edilebilir. Örneğin, önbellek bellek bloğu boyutu 64 token ise ve KV önbelleği 80 token’dan oluşuyorsa, yalnızca 64 token yeniden depolanabilir; geri kalan 16 token yeniden hesaplanmak zorundadır. Ancak, bellek blok boyutu 16 token olarak ayarlandığında, tüm 64 token beş bellek bloğu arasında dağıtılabilir ve yeniden hesaplama ihtiyacı ortadan kalkar.

Kısa giriş dizileri için bu etki özellikle belirgindir. Uzun giriş dizilerinde ise daha büyük bloklar daha faydalı olabilir. TensorRT-LLM, KV önbelleği bellek blokları üzerindeki ince ayarları geliştiricilere sunarak blokları 64 ile 2 token arasında daha küçük parçalara ayırma olanağı tanır. Bu durum, tahsis edilen belleğin kullanımını optimize eder, yeniden kullanım oranlarını artırır ve TTFT’yi geliştirir. NVIDIA H100 Tensor Core GPU’larda LLAMA70B çalıştırıldığında, KV önbelleği blok boyutunu 64 token’dan 8 token’a düşürerek çoklu kullanıcı ortamlarında TTFT’yi %7 oranında hızlandırabiliyoruz.

Şekil 2. KV önbellek blok boyutunu değiştirmenin çıkarım hız üzerindeki etkisi

Verimli KV Önbelleği İptal Protokolleri

KV önbelleğini daha küçük parçalara bölmek ve kullanılmayan blokları kaldırmak, bellek optimizasyonu için etkili olabilir; ancak bu, bağımlılık karmaşıklıkları getirebilir. Belirli bir blok, bir yanıt oluşturmak için kullanıldığında ve bu sonuç yeni bir blokta depolandığında, bağımlılıkların ağaç benzeri bir yapısı oluşabilir.

Zamanla, kaynak blokların kullanımı izleyen sayım değerleri, bağımlı düğümlerin yeniden kullanılmasıyla eski hale gelebilir. Kaynak blok iptal edildiğinde, tüm bağımlı blokların da kaldırılması gerekir ki bu durum yeni kullanıcı talepleri için KV önbelleğinin yeniden hesaplanmasını gerektirir ve TTFT’yi artırır.

Bu zorluğa yanıt olarak, TensorRT-LLM, bağımlı blokları izleyerek ekeceği akıllı algoritmalar sunar. Bu algoritmalar, bağımsız düğümleri iptal etmeyi sağlayarak, daha güncel kullanım sayacı olanları bile göz ardı edebilir. Bu işlem, daha verimli bellek yönetimi sağlar ve bağımlı blokların gereksiz kaldırılmasını önler.

Şekil 3. KV önbellek iptal algoritmasının daha az blok iptal edilmesine nasıl yardımcı olduğunu gösteren mantıksal bir temsil

TensorRT-LLM KV Önbelleği Yeniden Kullanma ile Başlarken

KV önbelleği oluşturmak, tahmin sırasında çok fazla işlem ve bellek kaynağı gerektirir. Verimli bir şekilde kullanmak, model yanıtlarının iyileştirilmesi, çıkarım sürelerinin hızlandırılması ve sistem verimliliğinin artırılması açısından kritik öneme sahiptir. TensorRT-LLM, TTFT yanıt sürelerini daha yüksek performans için optimize etmek isteyen geliştiricilere gelişmiş yeniden kullanım özellikleri sunmaktadır.

TensorRT-LLM KV önbelleği yeniden kullanma özelliklerini kullanmaya başlamak için GitHub belgelerimize göz atabilirsiniz.

Kaynak

Nvdia Blog

Exit mobile version