Autoregressiv transformatorun çıxarışında KV keşi necə həyata keçirilir?
sobes.tech Süni İntellekt
AI-dan cavab
Autoreqressiv transformatorlarda, inference zamanı, hesablamaları səmərəli istifadə etmək vacibdir ki, bütün ardıcıllığı yenidən hesablamaq lazım olmasın. Bunun üçün KV cache istifadə olunur; bu, diqqət (self-attention) qatlarından açarları (Key) və dəyərləri (Value) saxlamaq üçün istifadə edilir.
Fikirdir ki, növbəti tokeni yaradarkən, artıq bütün əvvəlki tokenlər üçün açarlar və dəyərlər hesablanıb. Onları yenidən hesablamaq əvəzinə, yaddaşda (cache) saxlayırıq və yeni token üçün diqqət hesablamasında bu cache-dən istifadə edirik.
Bu təxminən belə işləyir:
- Hər bir transformator qatında, token işlənərkən, açarlar və dəyərlər ayrı tamponlarda saxlanılır.
- Növbəti token yaradılarkən, yalnız onun üçün açar və dəyər hesablanır və əvvəlki ilə birləşdirilir.
- Diqqət mexanizmi, birləşdirilmiş açar və dəyərlər toplusunu istifadə edərək konteksti hesablayır.
Bu, uzunluğa görə kvadrat olan hesablama mürəkkəbliyini xətərə endirərək, inference-i əhəmiyyətli dərəcədə sürətləndirir.
Bir qat üçün pseudokod nümunəsi:
# kv_cache əvvəlki tokenlərin açarları və dəyərlərini saxlayır
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)
Beləliklə, KV-cache, transformatorlarda ardıcıl nəsil üçün açar və dəyərləri saxlamaq mexanizmidir.