Sobes.tech
Middle — Senior

Oto REGRAS: KV önbelleği, oto-regresif dönüştürücünün çıkarımında nasıl uygulanır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Otoğrafik dönüştürücülerde, çıkarım sırasında, hesaplamaları verimli kullanmak, tüm diziyi yeniden hesaplamadan önemlidir. Bunun için KV önbelleği kullanılır; bu, dikkat (self-attention) katmanlarından anahtarlar (Key) ve değerler (Value) önbelleğe alınır.

Fikir, bir sonraki token'ı üretirken, tüm önceki token'lar için anahtarlar ve değerler zaten hesaplanmış olmasıdır. Bunları yeniden hesaplamak yerine, bellekte (önbellekte) saklarız ve yeni token için dikkat hesaplamasında bu önbelleği kullanırız.

Yaklaşık olarak şu şekilde çalışır:

  • Her dönüştürücü katmanında, bir token işlenirken, anahtarlar ve değerler ayrı tamponlara kaydedilir.
  • Bir sonraki token üretilirken, sadece onun için anahtar ve değer hesaplanır ve önceden saklananlarla birleştirilir.
  • Dikkat mekanizması, anahtarlar ve değerlerin birleşik kümesini kullanarak bağlamı hesaplar.

Bu, dizinin uzunluğuna göre hesaplama karmaşıklığını kareden doğrusa indirerek, çıkarımı önemli ölçüde hızlandırır.

Bir katman için pseudokod örneği:

# kv_cache, önceki token'ların anahtarları ve değerlerini tutar
new_key, new_value = compute_kv(new_token)
kv_cache.keys = concatenate(kv_cache.keys, new_key)
kv_cache.values = concatenate(kv_cache.values, new_value)
output = attention(query=new_key, keys=kv_cache.keys, values=kv_cache.values)

Bu şekilde, KV önbelleği, dönüştürücülerde ardışık üretimi hızlandırmak için ara anahtarlar ve değerleri saklayan bir mekanizmadır.