ChatPaper.aiChatPaper

ChunkAttention: Effiziente Selbstaufmerksamkeit mit präfixbewusstem KV-Cache und zweiphasiger Partitionierung

ChunkAttention: Efficient Self-Attention with Prefix-Aware KV Cache and Two-Phase Partition

February 23, 2024
Autoren: Lu Ye, Ze Tao, Yong Huang, Yang Li
cs.AI

Zusammenfassung

Self-Attention ist eine wesentliche Komponente großer Sprachmodelle (LLMs), aber gleichzeitig eine bedeutende Quelle für Inferenzlatenz bei langen Sequenzen. In Multi-Tenant-LLM-Szenarien können die Rechen- und Speicheroperationskosten der Self-Attention optimiert werden, indem die Wahrscheinlichkeit genutzt wird, dass mehrere LLM-Anfragen gemeinsame Systemprompts in ihren Präfixen aufweisen. In diesem Artikel stellen wir ChunkAttention vor, ein präfixbewusstes Self-Attention-Modul, das übereinstimmende Prompt-Präfixe über mehrere Anfragen hinweg erkennen und ihre Schlüssel/Wert-Tensoren im Speicher zur Laufzeit teilen kann, um die Speichernutzung des KV-Caches zu verbessern. Dies wird erreicht, indem monolithische Schlüssel/Wert-Tensoren in kleinere Chunks unterteilt und in einen zusätzlichen Präfixbaum strukturiert werden. Folglich entwerfen wir auf Basis des präfixbaumbasierten KV-Caches einen effizienten Self-Attention-Kernel, in dem ein zweiphasiges Partitionierungsalgorithmus implementiert ist, um die Datenlokalität während der Self-Attention-Berechnung bei vorhandenen gemeinsamen Systemprompts zu verbessern. Experimente zeigen, dass ChunkAttention den Self-Attention-Kernel im Vergleich zur state-of-the-art-Implementierung um das 3,2- bis 4,8-fache beschleunigen kann, wobei die Länge des Systemprompts zwischen 1024 und 4096 liegt.
English
Self-attention is an essential component of large language models(LLMs) but a significant source of inference latency for long sequences. In multi-tenant LLMs serving scenarios, the compute and memory operation cost of self-attention can be optimized by using the probability that multiple LLM requests have shared system prompts in prefixes. In this paper, we introduce ChunkAttention, a prefix-aware self-attention module that can detect matching prompt prefixes across multiple requests and share their key/value tensors in memory at runtime to improve the memory utilization of KV cache. This is achieved by breaking monolithic key/value tensors into smaller chunks and structuring them into the auxiliary prefix tree. Consequently, on top of the prefix-tree based KV cache, we design an efficient self-attention kernel, where a two-phase partition algorithm is implemented to improve the data locality during self-attention computation in the presence of shared system prompts. Experiments show that ChunkAttention can speed up the self-attention kernel by 3.2-4.8times compared to the start-of-the-art implementation, with the length of the system prompt ranging from 1024 to 4096.
PDF226December 15, 2024