Sobes.tech
Senior

Πώς μειώνεται το μέγεθος της cache KV (GQA, MQA, παράθυρο κύλισης);

sobes.tech AI

Απάντηση από AI

Η cache KV (Key-Value) στο πλαίσιο μοντέλων με GQA (Grouped Query Attention), MQA (Multi-Query Attention) και παράθυρο ολίσθησης χρησιμοποιείται για την αποθήκευση ενδιάμεσων κλειδιών και τιμών προσοχής, επιταχύνοντας τη δημιουργία κειμένου. Για να μειωθεί το μέγεθος της cache KV, μπορούν να εφαρμοστούν οι ακόλουθες προσεγγίσεις:

  • Παράθυρο ολίσθησης: αποθήκευση μόνο των τελευταίων N tokens στην cache, αντί ολόκληρης της ιστορίας. Αυτό περιορίζει το μέγεθος της cache και μειώνει την κατανάλωση μνήμης.
  • MQA αντί GQA: Το MQA χρησιμοποιεί ένα μόνο κλειδί και μια μόνο τιμή για όλες τις κεφαλές προσοχής, μειώνοντας σημαντικά το μέγεθος της cache σε σύγκριση με το GQA, όπου κάθε κεφαλή αποθηκεύει ένα ξεχωριστό κλειδί και τιμή.
  • Κβαντοποίηση της cache KV: αποθήκευση των κλειδιών και τιμών σε συμπιεσμένη μορφή, π.χ., με μειωμένη ακρίβεια (float16, int8), για μείωση του όγκου μνήμης.
  • Αφαίρεση μη σχετικών στοιχείων: τακτικός καθαρισμός ή συμπίεση της cache, διαγράφοντας παρωχημένα ή λιγότερο σημαντικά στοιχεία.

Παράδειγμα χρήσης του παράθυρου ολίσθησης:

window_size = 512  # αριθμός tokens στην cache
kv_cache = kv_cache[-window_size:]

Με τον συνδυασμό αυτών των μεθόδων, μπορεί να μειωθεί αποτελεσματικά το μέγεθος της cache KV χωρίς σημαντική απώλεια στην ποιότητα της δημιουργίας κειμένου.