Sobes.tech
Middle — Senior

Ինչպես է իրականացվում KV-քեշը ավտորեգրեսիվ տրանսֆորմատորի ինֆերենցիայում?

sobes.tech AI

Պատասխան AI-ից

Ավտոռեգրեսիվ փոխակերպիչներում, ինֆերենցիայի ժամանակ, կարևոր է արդյունավետ կերպով օգտագործել հաշվարկները, որպեսզի ամբողջ հաջորդականությունը նորից հաշվարկելու կարիք չլինի։ Դրա համար օգտագործվում է KV-քեշ, որը պահպանում է ինքնագնահատման շերտերից (self-attention) բանալի (Key) և արժեք (Value)։

Իդեան այն է, որ հաջորդ տոքենի ստեղծման ժամանակ մենք արդեն հաշվարկել ենք բոլոր նախորդ տոքենների համար բանալիները և արժեքները։ Փոխարենը, մենք դրանք պահպանում ենք հիշողության մեջ (քեշ) և նոր տոքենի համար ուշադրության հաշվարկի ժամանակ օգտագործում ենք այդ քեշը։

Սա մոտավորապես աշխատում է այսպես՝

  • Յուրաքանչյուր փոխակերպիչ շերտում, տոքենի մշակման ժամանակ, բանալիները և արժեքները պահվում են առանձին բաֆերներում։
  • Երբ ստեղծում ենք հաջորդ տոքենը, հաշվում ենք միայն դրա համար բանալիները և արժեքները, և դրանք միավորում ենք արդեն պահածների հետ։
  • Աշխատանքի մեխանիզմը օգտագործում է միացյալ բանալիների և արժեքների հավաքածուն՝ կոնտեքստը հաշվարկելու համար։

Այսպիսով, դա զգալիորեն արագացնում է ինֆերենցիան՝ նվազեցնելով հաշվարկային բարդությունը քառակուսայինից դեպի գծային երկարության վրա։

Մեկ շերտի համար псեվդոկոդի օրինակ՝

# kv_cache պահպանում է նախորդ տոքենների բանալիները և արժեքները
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)

Այսպիսով, KV-cache-ը մեխանիզմ է՝ միջանկյալ բանալիներ և արժեքներ պահելու համար՝ արագացնելու հաջորդական արտադրությունը փոխակերպիչներում։