vLLM
Sirva un LLM de pesos abiertos con vLLM en una máquina Node Lodge. Instálelo con uv, inicie el servidor compatible con OpenAI y consúltelo por un túnel SSH.
Sirva un modelo de pesos abiertos detrás de una API compatible con OpenAI.
GPU: 24 GB de VRAM o más para el modelo 7B de abajo. Consulte Inferencia de LLM para el dimensionamiento.
1. Verifique la GPU
nvidia-smi
El encabezado muestra el driver y la versión de CUDA más alta que admite.
2. Instale
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
uv venv --python 3.12 --seed
source .venv/bin/activate
uv pip install vllm --torch-backend=auto
--torch-backend=auto selecciona la compilación de PyTorch que corresponde al driver instalado.
3. Sirva
Inicie el servidor dentro de tmux para que sobreviva a las desconexiones:
tmux new -s vllm
source .venv/bin/activate
vllm serve Qwen/Qwen2.5-7B-Instruct --max-model-len 8192
Separe la sesión de tmux con Ctrl+b d. El primer inicio descarga los pesos en ~/.cache/huggingface. El servidor está listo cuando registra que escucha en el puerto 8000.
Opciones útiles:
| Flag | Uso |
|---|---|
--tensor-parallel-size 2 |
Reparte el modelo entre 2 GPU en las ofertas multi-GPU |
--max-model-len 8192 |
Limita la longitud de contexto para que la caché KV quepa en la VRAM |
--gpu-memory-utilization 0.90 |
Proporción de VRAM que puede usar vLLM |
--api-key <secret> |
Exige un token Bearer en cada solicitud |
Los modelos con acceso restringido (Llama, Gemma) necesitan un token de Hugging Face:
export HF_TOKEN=hf_...
4. Consulte desde la máquina
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen2.5-7B-Instruct",
"messages": [{"role": "user", "content": "Say hello in five words."}],
"max_tokens": 32
}'
5. Consulte desde su computadora
Solo SSH está abierto en entrada. Redirija el puerto 8000:
ssh -N -L 8000:localhost:8000 ubuntu@203.0.113.42
Luego apunte cualquier cliente compatible con OpenAI a http://localhost:8000/v1:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="unused")
reply = client.chat.completions.create(
model="Qwen/Qwen2.5-7B-Instruct",
messages=[{"role": "user", "content": "Say hello in five words."}],
)
print(reply.choices[0].message.content)
Asigne su secreto a api_key si inició el servidor con --api-key.
6. Termine
Copie lo que necesite y seleccione End session. Los pesos descargados se eliminan con la máquina.
Referencia: documentación de vLLM.
Forma parte de un caso de uso: Inferencia de LLM, con lo que garantiza una sesión.