Calculadora del tamaño de la caché KV
Datos de entrada
| Capas | 32 |
|---|---|
| Cabezas clave/valor | 32 |
| Dimensión de cabeza | 128 |
| Longitud de contexto | 4.096 |
| Tamaño de lote | 1 |
| Precisión | FP16 / BF16 (2 bytes) |
Calculadora del tamaño de la caché KV
Estima la memoria de caché clave-valor que retiene un transformer durante la inferencia, a partir del número de capas, las cabezas clave/valor, la dimensión de cabeza, la longitud de contexto, el tamaño de lote y los bytes por elemento.
Datos de entrada
Modelo
Carga de trabajo
Resultados
Introduce un valor para ver los resultados.
Tamaño de la caché KV
Durante la inferencia de un transformer, el modelo atiende a todos los tokens vistos hasta el momento. Para evitar recalcular los vectores de clave y valor de todo el contexto en cada paso de generación, los almacena y los reutiliza —la caché clave-valor. Esa caché es a menudo el mayor consumidor de memoria del acelerador en el servicio de contexto largo, a veces más grande que los propios pesos del modelo. Esta calculadora estima su tamaño a partir del número de capas, el número de cabezas clave/valor, la dimensión de cabeza, la longitud de contexto, el tamaño de lote y los bytes usados por número almacenado.
Por qué existe la caché
Generar texto un token cada vez implica que cada token nuevo debe atender a todos los tokens anteriores. Sin una caché, cada paso reprocesaría el prompt entero y toda la salida anterior, haciendo que el coste de generación creciera con el cuadrado de la longitud de secuencia. Al guardar las claves y los valores de los tokens pasados, el modelo convierte cada paso en un trabajo proporcional solo al token nuevo. El precio de esa velocidad es memoria: un par de vectores —una clave y un valor— por cada capa, cada cabeza clave/valor y cada token en contexto.
La fórmula
La caché contiene dos tensores, claves y valores, así que el tamaño en bytes es
Kbytes=2⋅L⋅H⋅d⋅s⋅B⋅edonde es el número de capas, el número de cabezas clave/valor, la dimensión de cabeza, la longitud de contexto en tokens, el tamaño de lote y los bytes por elemento almacenado. Dividir entre da gigabytes. El tamaño crece linealmente con cada factor, que es la intuición clave: duplicar el contexto, el lote o el número de capas duplica la caché.
Atención de consulta agrupada
El número de cabezas clave/valor es lo que ataca la atención de consulta agrupada (GQA). En la atención multicabeza simple, cada cabeza de consulta posee un par clave/valor. GQA permite que un grupo de cabezas de consulta comparta una única cabeza clave/valor, y la atención multiconsulta comparte solo una en toda la capa. Como la caché escala con , bajar de 32 cabezas clave/valor a 8 reduce la caché a una cuarta parte mientras las cabezas de consulta —y la mayor parte de la calidad del modelo— permanecen en su sitio. La mayoría de los modelos grandes recientes se publican con GQA por exactamente esta razón.
Ejemplo resuelto
Tomemos un modelo con 32 capas, 32 cabezas clave/valor, una dimensión de cabeza de 128, que retiene 4096 tokens de contexto y sirve una única secuencia en precisión de 16 bits:
Kbytes=2×32×32×128×4096×1×2=2147483648que son unos 2,15 GB. Servir cuatro de esas secuencias a la vez lo cuadruplica hasta aproximadamente 8,59 GB. Pasar la caché a precisión de 8 bits reduciría cualquiera de las dos cifras a la mitad.
Cómo leer el resultado
Como cada factor multiplica linealmente, el servicio de contexto largo y lote alto los apila juntos y la caché puede empequeñecer a los pesos. Por eso los motores de inferencia de producción se apoyan en la cuantización de caché a menos bytes por elemento, GQA para recortar cabezas clave/valor y la atención paginada para empaquetar la caché sin fragmentación. El lado de cómputo del mismo presupuesto de hardware aparece en la Calculadora de memoria de atención, y la porción de los pesos del modelo en la Calculadora de VRAM para inferencia de LLM.
Preguntas frecuentes (FAQ)
¿Qué es la caché KV?
Durante la generación autorregresiva, un transformer atiende a todos los tokens anteriores. En lugar de recalcular los vectores de clave y valor de todo el contexto en cada paso, los almacena y los reutiliza —ese almacén es la caché KV.
Intercambia memoria por velocidad: sin ella, generar cada token nuevo significaría reprocesar el prompt entero y toda la salida anterior. La caché contiene dos tensores, claves y valores, por cada capa y cada cabeza clave/valor, con una entrada por cada token en contexto.
¿Cómo reduce la caché la atención de consulta agrupada?
La atención multicabeza estándar mantiene un par clave/valor independiente por cada cabeza de consulta. La atención de consulta agrupada (GQA) permite que varias cabezas de consulta compartan una cabeza clave/valor, y la atención multiconsulta lleva esto al extremo de una única cabeza clave/valor compartida.
Como el tamaño de la caché es proporcional al número de cabezas clave/valor, recortarlas de, por ejemplo, 32 a 8 reduce la caché a la cuarta parte sin tocar las cabezas de consulta —ni la mayor parte de la calidad del modelo.
¿Por qué el contexto largo cuesta tanta memoria?
La caché crece linealmente con la longitud de contexto: duplicar el número de tokens en contexto duplica la caché. También crece linealmente con el tamaño de lote, así que servir muchas secuencias de contexto largo a la vez multiplica ambos factores.
Con longitudes de contexto grandes, la caché KV puede superar la memoria que ocupan los propios pesos del modelo, por lo que el servicio de contexto largo se apoya en técnicas como la cuantización de caché, GQA y la atención paginada.
Aviso legal
Esta estimación cuenta solo los tensores de clave y valor a la precisión indicada e ignora la sobrecarga de servicio como la fragmentación de memoria, los metadatos de paginación y las reservas del framework. El uso real en un motor de inferencia dado será algo mayor.