Sobes.tech
Senior

როგორ შევამციროთ KV-კეშის ზომა (GQA, MQA, სლაიდერი ფანჯარა)?

sobes.tech AI

პასუხი AI-სგან

GKV-კეში (Key-Value cache) GQA (Grouped Query Attention), MQA (Multi-Query Attention) და სლაიდინგ ვინდოს კონტექსტში გამოიყენება დროებითი გასაღებების და მნიშვნელობების შენახვისთვის, რათა გაადვილდეს ტექსტის გენერაცია. GKV-კეშის ზომის შემცირების მიზნით, შეიძლება გამოიყენოს შემდეგი მიდგომები:

  • სლაიდინგ ვინდო: შეინახეთ კეშში მხოლოდ ბოლო N ტოკენი, მთელი ისტორიის ნაცვლად. ეს შეზღუდავს კეშის ზომას და ამცირებს მეხსიერების მოხმარებას.
  • MQA GQA-ს ნაცვლად: MQA იყენებს ერთ გასაღებს და მნიშვნელობას ყველა ყურადღების თავებისთვის, რაც მნიშვნელოვნად ამცირებს კეშის ზომას შედარებით GQA-ს, სადაც თითოეულ თავზე შენახულია ცალკე გასაღები და მნიშვნელობა.
  • KV-კეშის კვანტიზაცია: შეინახეთ გასაღებები და მნიშვნელობები კომპრესირებულ ფორმატში, მაგალითად, დაბალი სიზუსტით (float16, int8), რათა შემცირდეს მეხსიერების მოცულობა.
  • არასაჭირო ელემენტების ამოღება: პერიოდულად გაწმინდეთ ან შეკუმშეთ კეში, წაშალეთ მოძველებული ან ნაკლებად მნიშვნელოვანი ელემენტები.

სლაიდინგ ვინდოს გამოყენების მაგალითი:

window_size = 512  # ტოკენების რაოდენობა კეშში
kv_cache = kv_cache[-window_size:]

ამ მეთოდების კომბინაციით, შესაძლებელია ეფექტურად შემცირდეს GKV-კეშის ზომა, არ ზიანს აყენებს გენერირებული ტექსტის ხარისხს.