H_2O: Oráculo de Grandes Impactos para la Inferencia Generativa Eficiente en Modelos de Lenguaje a Gran Escala
H_2O: Heavy-Hitter Oracle for Efficient Generative Inference of Large Language Models
June 24, 2023
Autores: Zhenyu Zhang, Ying Sheng, Tianyi Zhou, Tianlong Chen, Lianmin Zheng, Ruisi Cai, Zhao Song, Yuandong Tian, Christopher Ré, Clark Barrett, Zhangyang Wang, Beidi Chen
cs.AI
Resumen
Los Modelos de Lenguaje de Gran Escala (LLMs, por sus siglas en inglés), a pesar de sus recientes logros impresionantes, son notablemente costosos de implementar, especialmente para aplicaciones que involucran la generación de contenido extenso, como sistemas de diálogo y escritura de historias. A menudo, una gran cantidad de información de estado transitorio, conocida como la caché KV, se almacena en la memoria de la GPU además de los parámetros del modelo, escalando linealmente con la longitud de la secuencia y el tamaño del lote. En este artículo, presentamos un enfoque novedoso para implementar la caché KV que reduce significativamente su huella de memoria. Nuestro enfoque se basa en la observación notable de que una pequeña porción de tokens contribuye con la mayor parte del valor al calcular las puntuaciones de atención. Llamamos a estos tokens "Heavy Hitters" (H_2). A través de una investigación exhaustiva, encontramos que (i) la aparición de H_2 es natural y está fuertemente correlacionada con la co-ocurrencia frecuente de tokens en el texto, y (ii) eliminarlos resulta en una degradación significativa del rendimiento. Basándonos en estas ideas, proponemos Heavy Hitter Oracle (H_2O), una política de expulsión de la caché KV que retiene dinámicamente un equilibrio entre tokens recientes y H_2. Formulamos la expulsión de la caché KV como un problema de submodularidad dinámica y demostramos (bajo suposiciones moderadas) una garantía teórica para nuestro novedoso algoritmo de expulsión que podría ayudar a guiar trabajos futuros. Validamos la precisión de nuestro algoritmo con OPT, LLaMA y GPT-NeoX en una amplia gama de tareas. Nuestra implementación de H_2O con un 20% de heavy hitters mejora el rendimiento sobre tres sistemas de inferencia líderes: DeepSpeed Zero-Inference, Hugging Face Accelerate y FlexGen, hasta 29 veces, 29 veces y 3 veces en OPT-6.7B y OPT-30B. Con el mismo tamaño de lote, H2O puede reducir la latencia hasta 1.9 veces. El código está disponible en https://github.com/FMInference/H2O.
English
Large Language Models (LLMs), despite their recent impressive
accomplishments, are notably cost-prohibitive to deploy, particularly for
applications involving long-content generation, such as dialogue systems and
story writing. Often, a large amount of transient state information, referred
to as the KV cache, is stored in GPU memory in addition to model parameters,
scaling linearly with the sequence length and batch size. In this paper, we
introduce a novel approach for implementing the KV cache which significantly
reduces its memory footprint. Our approach is based on the noteworthy
observation that a small portion of tokens contributes most of the value when
computing attention scores. We call these tokens Heavy Hitters (H_2). Through
a comprehensive investigation, we find that (i) the emergence of H_2 is
natural and strongly correlates with the frequent co-occurrence of tokens in
the text, and (ii) removing them results in significant performance
degradation. Based on these insights, we propose Heavy Hitter Oracle (H_2O),
a KV cache eviction policy that dynamically retains a balance of recent and
H_2 tokens. We formulate the KV cache eviction as a dynamic submodular
problem and prove (under mild assumptions) a theoretical guarantee for our
novel eviction algorithm which could help guide future work. We validate the
accuracy of our algorithm with OPT, LLaMA, and GPT-NeoX across a wide range of
tasks. Our implementation of H_2O with 20% heavy hitters improves the
throughput over three leading inference systems DeepSpeed Zero-Inference,
Hugging Face Accelerate, and FlexGen by up to 29times, 29times, and
3times on OPT-6.7B and OPT-30B. With the same batch size, H2O can reduce the
latency by up to 1.9times. The code is available at
https://github.com/FMInference/H2O.