Sobes.tech
Senior

Wie kann man die Größe des KV-Caches (GQA, MQA, Sliding Window) verringern?

sobes.tech KI

Antwort von AI

Der KV-Cache (Key-Value-Cache) im Kontext von Modellen mit GQA (Grouped Query Attention), MQA (Multi-Query Attention) und Sliding Window wird verwendet, um Zwischen-Schlüssel und -Werte der Aufmerksamkeit zu speichern, um die Textgenerierung zu beschleunigen. Um die Größe des KV-Caches zu verringern, können folgende Ansätze angewendet werden:

  • Sliding Window: Nur die letzten N Tokens im Cache speichern, anstatt die gesamte Historie. Dies begrenzt die Cache-Größe und reduziert den Speicherverbrauch.
  • MQA statt GQA: MQA verwendet einen einzigen Schlüssel und Wert für alle Attention-Köpfe, was die Cache-Größe im Vergleich zu GQA erheblich reduziert, bei dem für jeden Kopf ein eigener Schlüssel und Wert gespeichert werden.
  • Quantisierung des KV-Caches: Schlüssel und Werte in komprimierter Form speichern, z.B. mit reduzierter Genauigkeit (float16, int8), um den Speicherbedarf zu verringern.
  • Entfernung nicht relevanter Elemente: Den Cache regelmäßig bereinigen oder komprimieren, um veraltete oder weniger wichtige Elemente zu entfernen.

Beispiel für die Verwendung des Sliding Windows:

window_size = 512  # Anzahl der Tokens im Cache
kv_cache = kv_cache[-window_size:]

Durch die Kombination dieser Methoden kann die Größe des KV-Caches effektiv reduziert werden, ohne die Qualität der Textgenerierung wesentlich zu beeinträchtigen.