Repolode
mit-han-lab

mit-han-lab/streaming-llm

Código de investigación de StreamingLLM, un método que permite a los LLM preentrenados procesar flujos de texto prácticamente ilimitados conservando tokens sumidero de atención y una ventana de tokens recientes.

Estrellas
7,276
Forks
402
Issues abiertos
50
Último commit
hace 2 años

¿Qué es?

StreamingLLM es un proyecto de investigación de MIT Han Lab que acompaña al artículo de ICLR 2024 sobre modelos de lenguaje eficientes para flujos continuos con sumideros de atención. Aborda dos problemas del uso prolongado de LLM en varias rondas: el costo de memoria de almacenar en caché los estados Key y Value de todo el historial durante la decodificación, y el deterioro de las respuestas cuando las entradas superan la longitud de secuencia usada durante el entrenamiento.

El método observa que conservar los estados KV de los primeros tokens, que actúan como sumideros de atención, junto con una ventana deslizante de tokens recientes, recupera en gran medida el rendimiento de la atención por ventana convencional. La ventana de contexto del modelo no aumenta: los tokens intermedios simplemente se descartan, por lo que el modelo trabaja con texto reciente sin reiniciar la caché. El repositorio incluye una demo de chatbot con Llama para flujos continuos y código para evaluar la perplejidad; actualmente abarca Llama-2, MPT, Falcon y Pythia.

El proyecto es una publicación de código que acompaña al artículo, no una biblioteca de propósito general. La configuración se realiza con conda, una versión fijada de transformers y una instalación local en modo develop.

Funciones clave

  • 01Conserva en la caché KV los tokens iniciales que actúan como sumideros de atención junto con una ventana de tokens recientes.
  • 02Permite que los modelos procesen entradas mucho más largas que su longitud de entrenamiento, sin ajuste fino.
  • 03Incluye un script de demo de chatbot con Llama para flujos continuos.
  • 04Ofrece código para evaluar la perplejidad.
  • 05Es compatible con Llama-2, MPT, Falcon y Pythia.

Casos de uso

  • Ejecutar un chatbot de larga duración o un asistente diario que deba seguir respondiendo durante muchas rondas de conversación.
  • Estudiar el comportamiento de los sumideros de atención y la gestión de la caché KV en la investigación con LLM.
  • Reproducir los resultados de perplejidad del artículo de StreamingLLM.

Inicio rápido

  1. 1

    Crea y activa un entorno conda con Python 3.8

    conda create -yn streaming python=3.8
  2. 2

    Activa el entorno

    conda activate streaming
  3. 3

    Instala PyTorch y las dependencias de Python con versiones fijadas

    pip install torch torchvision torchaudio
  4. 4

    Ejecuta la demostración del chatbot Llama en streaming en la GPU 0

    CUDA_VISIBLE_DEVICES=0 python examples/run_streaming_llama.py --enable_streaming

Antes de usarlo

  • La configuración requiere una versión antigua específica de Python (3.8) y una versión fijada de transformers (4.33.0).
  • La demostración requiere una GPU y utiliza modelos preentrenados, como Llama-2, que debes obtener por separado.
  • El modelo solo presta atención a los tokens recientes y a los attention sinks, por lo que no amplía el contexto ni ofrece memoria a largo plazo.
  • El último push del repositorio fue en julio de 2024, por lo que el mantenimiento es limitado.

En colecciones

Temas

Preguntas frecuentes

¿Qué es streaming-llm?
Código de investigación de StreamingLLM, un método que permite a los LLM preentrenados procesar flujos de texto prácticamente ilimitados conservando tokens sumidero de atención y una ventana de tokens recientes. StreamingLLM es un proyecto de investigación de MIT Han Lab que acompaña al artículo de ICLR 2024 sobre modelos de lenguaje eficientes para flujos continuos con sumideros de atención. Aborda dos problemas del uso prolongado de LLM en varias rondas: el costo de memoria de almacenar en caché los estados Key y Value de todo el historial durante la decodificación, y el deterioro de las respuestas cuando las entradas superan la longitud de secuencia usada durante el entrenamiento.
¿streaming-llm es gratuito? ¿Qué licencia tiene?
streaming-llm es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿streaming-llm sigue mantenido?
Sin commits en más de 6 meses. El último commit de streaming-llm fue el 11 jul 2024.
¿Para qué puedo usar streaming-llm?
Ejecutar un chatbot de larga duración o un asistente diario que deba seguir respondiendo durante muchas rondas de conversación. Estudiar el comportamiento de los sumideros de atención y la gestión de la caché KV en la investigación con LLM. Reproducir los resultados de perplejidad del artículo de StreamingLLM.
¿Cómo se instala streaming-llm?
Crea y activa un entorno conda con Python 3.8: conda create -yn streaming python=3.8 Activa el entorno: conda activate streaming Instala PyTorch y las dependencias de Python con versiones fijadas: pip install torch torchvision torchaudio Ejecuta la demostración del chatbot Llama en streaming en la GPU 0: CUDA_VISIBLE_DEVICES=0 python examples/run_streaming_llama.py --enable_streaming
¿Dónde consigo streaming-llm?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/mit-han-lab/streaming-llm

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados