ExLlama
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?
Instalación:
- Clonar el repositorio:
git clone https://github.com/turboderp/exllama - Navegar al directorio:
cd exllama - Instalar dependencias:
pip install -r requirements.txt
- Clonar el repositorio:
Ejecutar el Benchmark:
python test_benchmark_inference.py -d <path_to_model_files> -p -ppl
Ejecutar el Ejemplo de Chatbot:
python example_chatbot.py -d <path_to_model_files> -un "Jeff" -p prompt_chatbort.txt
Web UI:
- Instalar dependencias adicionales:
pip install -r requirements-web.txt - Ejecutar la Web UI:
python webui/app.py -d <path_to_model_files>
- Instalar dependencias adicionales:
¿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"
Float16.cloud ofrece GPUs sin servidor para el desarrollo de IA. Implementa modelos instantáneamente en GPUs H100 con precios de pago por uso. Ideal para LLM, ajuste fino y entrenamiento.
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.
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.
Construye un motor de respuestas de IA inspirado en Perplexity utilizando Next.js, Groq, Llama-3 y Langchain. Obtén fuentes, respuestas, imágenes y preguntas de seguimiento de manera eficiente.
vLLM es un motor de inferencia y servicio de alto rendimiento y eficiencia de memoria para LLM, que presenta PagedAttention y procesamiento por lotes continuo para un rendimiento optimizado.
Plataforma de IA ultrarrápida para desarrolladores. Implementa, ajusta y ejecuta más de 200 LLMs y modelos multimodales optimizados con APIs simples - SiliconFlow.
El servicio de inferencia de Nebius AI Studio ofrece modelos de código abierto alojados para resultados más rápidos, baratos y precisos que las APIs propietarias. Escala sin problemas sin MLOps, ideal para RAG y cargas de trabajo de producción.
ChatLLaMA es un asistente de IA entrenado con LoRA basado en modelos LLaMA, que permite conversaciones personalizadas en tu GPU local. Incluye GUI de escritorio, entrenado en el conjunto de datos HH de Anthropic, disponible para modelos de 7B, 13B y 30B.
Inweave es una plataforma impulsada por IA diseñada para startups y scaleups para automatizar flujos de trabajo de manera eficiente. Despliega asistentes IA personalizables usando modelos líderes como GPT y Llama a través de chat o API para ganancias de productividad sin interrupciones.
Sagify es una herramienta Python de código abierto que simplifica los pipelines de ML en AWS SageMaker, con una Gateway LLM unificada para integrar modelos de lenguaje grandes propietarios y de código abierto sin problemas.
LlamaChat es una aplicación de macOS que te permite chatear con modelos LLaMA, Alpaca y GPT4All localmente en tu Mac. ¡Descárgala ahora y experimenta el chat LLM local!
Ejecute instantáneamente cualquier modelo Llama desde HuggingFace sin configurar ningún servidor. Más de 11,900 modelos disponibles. A partir de $10/mes para acceso ilimitado.
Venice.ai: IA privada y sin censura para texto, imágenes, personajes y código. Acceda a modelos de código abierto líderes de forma privada.
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.