Yolo Vision Shenzhen
Shenzhen
Únete ahora
Glosario

Caché KV

Descubra cómo KV Cache optimiza modelos Transformer como los LLM. Descubra cómo esta técnica reduce la latencia de inferencia y aumenta la eficiencia de Ultralytics .

La caché KV (caché clave-valor) es una técnica de optimización fundamental que se utiliza principalmente en modelos de lenguaje grandes (LLM) y otras arquitecturas basadas en transformadores para acelerar la latencia de inferencia y reducir los costes computacionales. En esencia, la caché KV almacena las matrices de claves y valores generadas por el mecanismo de atención para los tokens anteriores en una secuencia. Al guardar estos cálculos intermedios, el modelo evita volver a calcular los estados de atención para todo el historial de la conversación cada vez que genera un nuevo token. Este proceso transforma la flujo de trabajo de generación de texto de generación de texto de una operación de complejidad cuadrática a una lineal, lo que permite interacciones en tiempo real con chatbots y agentes de IA .

Mecanismo y beneficios

En un transformador estándar Transformer , generar la siguiente palabra requiere prestar atención a todas las palabras anteriores para comprender el contexto. Sin almacenamiento en caché, el modelo tendría que recalcular las relaciones matemáticas para toda la secuencia en cada paso. La caché KV resuelve esto actuando como un banco de memoria.

  • Mejora de la velocidad: Al recuperar claves y valores precalculados de la memoria, el sistema acelera drásticamente el motor de inferencia. Esto es esencial para aplicaciones que requieren baja latencia, como la la inferencia en tiempo real en los bots de atención al cliente.
  • Eficiencia de recursos: Aunque aumenta el uso de memoria (VRAM), reduce significativamente la capacidad de cálculo (FLOP) necesaria por token. Esta compensación se gestiona a menudo mediante técnicas como la cuantificación de modelos o paginación, de forma similar a como los sistemas operativos gestionan la RAM.
  • Contexto ampliado: la gestión eficiente de la caché KV permite a los modelos manejar un contexto más amplio. ventana de contexto, lo que les permite procesar documentos largos o mantener conversaciones coherentes durante períodos prolongados.

Aplicaciones en el mundo real

La caché KV es un componente fundamental en la implementación de la IA generativa moderna, pero sus principios también se extienden a la visión artificial (CV).

  1. Chatbots generativos: servicios como ChatGPT o Claude dependen en gran medida del almacenamiento en caché de KV. Cuando un usuario formula una pregunta de seguimiento, el modelo no vuelve a leer todo el historial de chat desde cero. En su lugar, añade la nueva entrada a los estados almacenados en caché del turno anterior, lo que permite respuestas casi instantáneas.
  2. Comprensión de vídeos: En comprensión de vídeo , los modelos procesan los fotogramas de forma secuencial. Al igual que con los tokens de texto, las características visuales de fotogramas anteriores pueden almacenarse en caché para ayudar al modelo track o reconocer acciones sin tener que volver a procesar todo el historial del vídeo. Esto es especialmente relevante para el el reconocimiento de acciones en las que el contexto temporal es crucial.

Gestión eficiente de la memoria

A medida que los modelos crecen, el tamaño de la caché KV puede convertirse en un cuello de botella, consumiendo gigabytes de GPU . Los avances recientes se centran en optimizar este almacenamiento.

  • PagedAttention: Inspirado en la memoria virtual de los sistemas operativos, PagedAttention (introducido por vLLM) permite que la caché KV se almacene en bloques de memoria no contiguos. Esto reduce la fragmentación y permite tamaños de lote más grandes durante el servicio del modelo.
  • Cuantificación de caché KV: Para ahorrar espacio, los desarrolladores suelen aplicar cuantización de precisión mixta o int8 específicamente a los valores almacenados en caché. Esto reduce el espacio ocupado en memoria, lo que permite los dispositivos de IA con RAM limitada ejecutar modelos capaces.
  • Almacenamiento en caché de indicaciones: técnica relacionada en la que los estados KV de una indicación de sistema estático (por ejemplo, «Eres un asistente de codificación muy útil») se calculan una vez y se reutilizan en muchas sesiones de usuario diferentes. Esta es una característica fundamental para optimizar la ingeniería de indicaciones a gran escala .

Distinguir conceptos relacionados

Es útil diferenciar KV Cache de otros términos relacionados con el almacenamiento en caché y la optimización:

  • Caché KV frente a caché de comandos: La caché KV normalmente se refiere a la memoria dinámica, token por token, utilizada durante una única secuencia de generación. La caché de comandos se refiere específicamente al almacenamiento del estado procesado de una instrucción de entrada fija para su reutilización en múltiples llamadas de inferencia independientes.
  • Caché KV frente a incrustaciones: Las incrustaciones son representaciones vectoriales de datos de entrada (texto o imágenes) que capturan el significado semántico. La caché KV almacena las activaciones (claves y valores) derivadas de estas incrustaciones dentro de las capas de atención, específicamente con el propósito de generar secuencias.
  • Caché KV frente a pesos del modelo: Los pesos del modelo son los parámetros estáticos y aprendidos de la red neuronal. La caché KV consiste en datos dinámicos y temporales generados durante el paso hacia adelante de una secuencia de entrada específica.

Ejemplo: Contexto en modelos de visión

Aunque el almacenamiento en caché KV es más conocido en el ámbito del procesamiento del lenguaje natural (NLP), el concepto de mantener el estado se aplica a los modelos de visión avanzados. En el ejemplo siguiente, simulamos la idea de pasar el estado (contexto) en un escenario de seguimiento de vídeo utilizando Ultralytics . Aquí, el rastreador mantiene la identidad de los objetos a lo largo de los fotogramas, de forma conceptualmente similar a como una caché mantiene el contexto a lo largo de los tokens.

from ultralytics import YOLO

# Load the Ultralytics YOLO26 model
model = YOLO("yolo26n.pt")

# Track objects in a video, maintaining identity state across frames
# The 'track' mode effectively caches object features to link detections
results = model.track(source="https://ultralytics.com/images/bus.jpg", show=False)

# Print the ID of the tracked objects
if results[0].boxes.id is not None:
    print(f"Tracked IDs: {results[0].boxes.id.numpy()}")

Los desarrolladores que deseen gestionar conjuntos de datos e implementar modelos optimizados pueden utilizar la Ultralytics , que simplifica el proceso desde la anotación de datos hasta la implementación eficiente de implementación de modelos. Para aquellos interesados en los mecanismos más profundos de la atención, bibliotecas como PyTorch proporcionan los bloques fundamentales donde se implementan estos mecanismos de almacenamiento en caché.

Únase a la comunidad Ultralytics

Únete al futuro de la IA. Conecta, colabora y crece con innovadores de todo el mundo

Únete ahora