laptop_mac macOS Sonoma
Intermediate
schedule 8 min read
by Alex Rivera • May 14, 2024
Si estás construyendo una aplicación con múltiples usuarios concurrentes, Ollama y LM Studio no serán suficientes. Necesitas un motor de inferencia de nivel empresarial. Necesitas vLLM.
Step 1 Introducción
vLLM es un motor de servicio de LLM de alto rendimiento y memoria eficiente. Utiliza una técnica denominada PagedAttention para gestionar eficazmente las claves y valores de atención, lo que produce un rendimiento entre 2 y 4 veces superior al de los Transformers estándar de HuggingFace.
Esta guía asume que estás ejecutando un servidor Linux con al menos una GPU NVIDIA de gama alta (p. ej., RTX 3090, 4090 o A100).
Step 2 Requisitos Previos
vLLM requiere Python y CUDA. Recomendamos encarecidamente el uso de un entorno virtual como conda o el estándar venv.
Terminal
sudo apt update
sudo apt install python3-pip python3-venv
# Create and activate environment
python3 -m venv vllm-env
source vllm-env/bin/activate
Step 3 Instalación de vLLM
Instala vLLM directamente desde PyPI. Esto descargará automáticamente PyTorch y las dependencias CUDA necesarias.
Step 4 Ejecución de un Servidor Compatible con OpenAI
vLLM soporta de forma nativa el protocolo de la API de OpenAI. Puedes servir un modelo directamente desde la línea de comandos. Utilizaremos Llama 3 8B como ejemplo.
Terminal
python3 -m vllm.entrypoints.openai.api_server --model meta-llama/Meta-Llama-3-8B-Instruct --dtype auto --api-key your-secret-key --port 8000
Parámetros Clave Explicados:
- --model: El ID del repositorio de HuggingFace. vLLM lo descargará automáticamente.
- --dtype auto: Utiliza automáticamente bfloat16 o float16 para el máximo rendimiento.
- --api-key: Protege tu endpoint para que usuarios aleatorios de internet no puedan saturar tu GPU.
Step 5 Conexión a la API
Ahora puedes conectarte a este servidor utilizando el SDK estándar de Python de OpenAI, simplemente intercambiando el base_url.
Terminal
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="your-secret-key"
)
response = client.chat.completions.create(
model="meta-llama/Meta-Llama-3-8B-Instruct",
messages=[
{"role": "user", "content": "Explain PagedAttention."}
],
)
print(response.choices[0].message.content)
Step 6 Optimización para Producción
Si dispones de múltiples GPUs (p. ej., dos RTX 3090), puedes distribuir un modelo grande de 70B entre ellas mediante paralelismo tensorial. Simplemente añade el flag --tensor-parallel-size:
Terminal
python3 -m vllm.entrypoints.openai.api_server --model meta-llama/Meta-Llama-3-70B-Instruct --tensor-parallel-size 2
Con vLLM en ejecución, tu servidor Linux es ahora capaz de gestionar decenas de solicitudes concurrentes de forma simultánea sin ninguna degradación en la latencia.