Autoregressiv transformatorning inference jarayonida KV-Cache qanday amalga oshiriladi?
sobes.tech AI
AIdan javob
Autoregressiv transformatorlarda, inference vaqtida, hisoblashlarni samarali qilish muhimdir, shunda butun ketma-ketlikni qayta hisoblash shart emas. Buning uchun KV cache ishlatiladi, bu kalitlar (Key) va qiymatlar (Value) ni o'z ichiga olgan o'ziga xos qatlamlar (self-attention) uchun saqlash vositasidir.
G'oyasi shundaki, keyingi tokenni ishlab chiqarishda, biz allaqachon barcha avvalgi tokenlar uchun kalitlar va qiymatlarni hisoblaganmiz. Ularni qayta hisoblash o'rniga, biz ularni xotirada (cache) saqlaymiz va yangi token uchun diqqatni hisoblashda bu cache'dan foydalanamiz.
Bu taxminan shunday ishlaydi:
- Har bir transformator qatlamida, tokenni ishlash paytida, kalitlar va qiymatlar alohida bufferlarda saqlanadi.
- Keyingi tokenni ishlab chiqarishda, faqat uning uchun kalit va qiymat hisoblanadi va avvalgi bilan birlashtiriladi.
- Diqqat mexanizmi, kalitlar va qiymatlarning birlashtirilgan to'plamini ishlatib, kontekstni hisoblaydi.
Bu inference jarayonini sezilarli darajada tezlashtiradi, uzunlik bo'yicha kvadrat bo'lakdan chiziqli bo'lakka o'tishni ta'minlaydi.
Bir qatlam uchun pseudokod misoli:
# kv_cache, avvalgi tokenlar uchun kalitlar va qiymatlarni saqlaydi
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)
Shu tarzda, KV cache, transformatorlarda ketma-ket ishlab chiqarishni tezlashtirish uchun o'rta kalitlar va qiymatlarni saqlash mexanizmidir.