ExLlama: Implementación de Llama de eficiencia de memoria para pesos cuantificados

ExLlama

3.5 | 260 | 0
Tipo:
Proyectos de Código Abierto
Última actualización:
2025/10/18
Descripción:
ExLlama es una implementación independiente de Python/C++/CUDA de Llama con eficiencia de memoria para una inferencia rápida con pesos cuantificados GPTQ de 4 bits en GPU modernas.
Compartir:
Inferencia Llama
cuantificación GPTQ
CUDA
eficiencia de memoria
modelos de lenguaje grandes

Descripción general de ExLlama

ExLlama: Implementación de Llama con Eficiencia de Memoria para Pesos Cuantificados

ExLlama es una implementación independiente en Python/C++/CUDA de Llama diseñada para la velocidad y la eficiencia de la memoria al usar pesos GPTQ de 4 bits en GPUs modernas. Este proyecto tiene como objetivo proporcionar una alternativa más rápida y con mayor eficiencia de memoria a la implementación de Hugging Face Transformers, particularmente para usuarios que trabajan con modelos cuantificados.

¿Qué es ExLlama?

ExLlama está diseñado para ser un motor de inferencia de alto rendimiento para la familia de modelos de lenguaje Llama. Aprovecha CUDA para la aceleración de la GPU y está optimizado para pesos cuantificados GPTQ de 4 bits, lo que permite a los usuarios ejecutar modelos de lenguaje grandes en GPUs con memoria limitada.

¿Cómo funciona ExLlama?

ExLlama optimiza el uso de la memoria y la velocidad de inferencia a través de varias técnicas:

  • Implementación CUDA: Utiliza CUDA para una computación eficiente en la GPU.
  • Soporte de Cuantificación: Diseñado específicamente para pesos cuantificados GPTQ de 4 bits.
  • Eficiencia de Memoria: Reduce el espacio de memoria en comparación con las implementaciones estándar.

Características y Beneficios Clave:

  • Alto Rendimiento: Optimizado para una inferencia rápida.
  • Eficiencia de Memoria: Permite ejecutar modelos grandes en GPUs menos potentes.
  • Implementación Independiente: No necesita la biblioteca Hugging Face Transformers.
  • Web UI: Incluye una interfaz de usuario web simple para una fácil interacción con el modelo (JavaScript escrito por ChatGPT, ¡así que ten cuidado!).
  • Soporte de Docker: Se puede ejecutar en un contenedor Docker para facilitar la implementación y la seguridad.

¿Cómo usar ExLlama?

  1. Instalación:

    • Clonar el repositorio: git clone https://github.com/turboderp/exllama
    • Navegar al directorio: cd exllama
    • Instalar dependencias: pip install -r requirements.txt
  2. Ejecutar el Benchmark:

    • python test_benchmark_inference.py -d <path_to_model_files> -p -ppl
  3. Ejecutar el Ejemplo de Chatbot:

    • python example_chatbot.py -d <path_to_model_files> -un "Jeff" -p prompt_chatbort.txt
  4. Web UI:

    • Instalar dependencias adicionales: pip install -r requirements-web.txt
    • Ejecutar la Web UI: python webui/app.py -d <path_to_model_files>

¿Por qué elegir ExLlama?

ExLlama ofrece varias ventajas:

  • Rendimiento: Ofrece velocidades de inferencia más rápidas en comparación con otras implementaciones.
  • Accesibilidad: Permite a los usuarios con memoria GPU limitada ejecutar modelos de lenguaje grandes.
  • Flexibilidad: Se puede integrar en otros proyectos a través del módulo Python.
  • Facilidad de Uso: Proporciona una interfaz de usuario web simple para interactuar con el modelo.

¿Para quién es ExLlama?

ExLlama es adecuado para:

  • Investigadores y desarrolladores que trabajan con modelos de lenguaje grandes.
  • Usuarios con GPUs NVIDIA (se recomienda la serie 30 y posteriores).
  • Aquellos que buscan una solución de inferencia de alto rendimiento y con eficiencia de memoria.
  • Cualquiera interesado en ejecutar modelos Llama con cuantificación GPTQ de 4 bits.

Requisitos de Hardware:

  • GPUs NVIDIA (se recomienda RTX serie 30 o posterior)
  • El soporte de ROCm es teórico pero no probado

Dependencias:

  • Python 3.9+
  • PyTorch (probado en 2.0.1 y 2.1.0 nightly) con CUDA 11.8
  • safetensors 0.3.2
  • sentencepiece
  • ninja
  • flask y waitress (para la Web UI)

Soporte de Docker:

ExLlama se puede ejecutar en un contenedor Docker para facilitar la implementación y la seguridad. La imagen de Docker es compatible con las GPU de NVIDIA.

Resultados y Benchmarks:

ExLlama demuestra mejoras significativas en el rendimiento en comparación con otras implementaciones, especialmente en términos de tokens por segundo (t/s) durante la inferencia. Se proporcionan benchmarks para varios tamaños de modelo Llama (7B, 13B, 33B, 65B, 70B) en diferentes configuraciones de GPU.

Ejemplo de uso

import torch
from exllama.model import ExLlama, ExLlamaCache, ExLlamaConfig
from exllama.tokenizer import ExLlamaTokenizer

## Inicializar modelo y tokenizer
model_directory = "/path/to/your/model"
tokenizer_path = os.path.join(model_directory, "tokenizer.model")
model_config_path = os.path.join(model_directory, "config.json")

config = ExLlamaConfig(model_config_path)
config.model_path = os.path.join(model_directory, "model.safetensors")

tokenizer = ExLlamaTokenizer(tokenizer_path)
model = ExLlama(config)
cache = ExLlamaCache(model)

## Preparar entrada
prompt = "The quick brown fox jumps over the lazy"
input_ids = tokenizer.encode(prompt)

## Generar salida
model.forward(input_ids, cache)
token = model.sample(temperature = 0.7, top_k = 50, top_p = 0.7)

output = tokenizer.decode([token])
print(prompt + output)

Compatibilidad y Soporte de Modelos:

ExLlama es compatible con una variedad de modelos Llama, incluyendo Llama 1 y Llama 2. El proyecto se actualiza continuamente para admitir nuevos modelos y características.

ExLlama es una herramienta poderosa para cualquiera que busque ejecutar modelos Llama de manera eficiente. Su enfoque en la optimización de la memoria y la velocidad la convierte en una excelente opción tanto para la investigación como para las aplicaciones prácticas.

Mejores herramientas alternativas a "ExLlama"

llama.cpp
Imagen no disponible
329 0

Habilite la inferencia LLM eficiente con llama.cpp, una biblioteca C/C++ optimizada para diversos hardware, que admite cuantificación, CUDA y modelos GGUF. Ideal para implementación local y en la nube.

Inferencia LLM
biblioteca C/C++
Fireworks AI
Imagen no disponible
539 0

Fireworks AI ofrece una inferencia increíblemente rápida para la IA generativa utilizando modelos de código abierto de última generación. Ajuste y despliegue sus propios modelos sin costo adicional. Escale las cargas de trabajo de IA globalmente.

motor de inferencia
Friendli Inference
Imagen no disponible
337 0

Friendli Inference es el motor de inferencia LLM más rápido, optimizado para la velocidad y la rentabilidad, reduciendo los costos de GPU en un 50-90% al tiempo que ofrece un alto rendimiento y baja latencia.

Servicio LLM
optimización de GPU
Private LLM
Imagen no disponible
245 0

Private LLM es un chatbot de IA local para iOS y macOS que funciona sin conexión, manteniendo su información completamente en el dispositivo, segura y privada. Disfrute de un chat sin censura en su iPhone, iPad y Mac.

chatbot de IA local
IA sin conexión