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-кэш — бул трансформаторлордо үзгүлтүксүз генерацияны тездетүү үчүн аралык ачкычтар жана маанилер сакталуучу механизм.