Pila de Producción vLLM: Implementación y Configuración Básica para Entornos de Producción
La Pila de Producción vLLM simplifica el despliegue de inferencia de LLM de alto rendimiento en Kubernetes. Consiste en un grupo de instancias vLLM emparejadas con un router para gestionar el enrutamiento de solicitudes. Soporta APIs compatibles con OpenAI: chat/completions, embeddings, tokenización, transcripción de audio y traducción. Entorno de prueba: 2 servidores con 8× NVIDIA H200 (141 GB), Astra Linux SE 8, Kubernetes 1.30, vLLM 0.17.0, Pila de Producción 0.1.10.
Los ejemplos de configuración se muestran como fragmentos YAML. Los manifiestos completos incluyen campos estándar de Kubernetes, omitidos aquí por brevedad. Los conflictos de parámetros se indican por separado.
Modelos Soportados y Carga
vLLM soporta la mayoría de los LLM actuales. Usa versiones nocturnas para modelos nuevos. Por defecto, los modelos se descargan desde Hugging Face. En entornos sin conexión, monta mediante PVC:
extraVolumeMounts:
- mountPath: /models/Qwen3-8B
name: model
readOnly: true
extraVolumes:
- name: model
persistentVolumeClaim:
claimName: pvc-qwen3-8b
Despliegue Básico de Qwen3-8B
Despliega Qwen3-8B con montaje local y soporte API OpenAI:
servingEngineSpec:
enableEngine: true
modelSpec:
- name: qwen3-8b
repository: vllm-openai
tag: v0.17.0
env:
- name: HF_HUB_OFFLINE
value: "1"
modelURL: /models/Qwen3-8B
extraVolumeMounts:
- mountPath: /models/Qwen3-8B
name: model
readOnly: true
extraVolumes:
- name: model
persistentVolumeClaim:
claimName: pvc-qwen3-8b
replicaCount: 1
requestCPU: 8
requestGPU: 1
requestMemory: 16Gi
vllmConfig:
extraArgs:
- --served-model-name
- Qwen/Qwen3-8B
gpuMemoryUtilization: 0.98
Establecer HF_HUB_OFFLINE=1 desactiva todas las llamadas al Hub de Hugging Face. Redirección de puertos: kubectl port-forward svc/... 9191:9191. Prueba de solicitud:
curl -N http://localhost:9191/v1/chat/completions \
-H "Content-Type: application/json" \
--data-raw '{
"model": "Qwen/Qwen3-8B",
"messages": [
{ "role": "user", "content": "Escribe: ¡Hola!" }
]
}'
Los modelos en modo pensamiento devuelven un bloque <think>...</think>.
Llamadas a Herramientas y Modos de Pensamiento
Habilita opciones del lado servidor para llamadas a herramientas:
extraArgs:
- --enable-auto-tool-choice
- --tool-call-parser
- qwen3_coder
Sin estas opciones, los flujos de trabajo de agente fallan. Activa o desactiva el modo pensamiento mediante --default-chat-template-kwargs:
extraArgs:
- --default-chat-template-kwargs
- '{"enable_thinking": false}'
chat_template_kwargs del lado cliente anula la configuración del servidor. Para DeepSeek: {"thinking": false}.
Modelos Multimodales y Backend de CPU
Modelos multimodales requieren una imagen personalizada:
FROM vllm/vllm-openai:v0.17.0
RUN uv pip install --system "vllm[audio]==0.17.0" && \
uv pip install --system "vllm[video]==0.17.0"
Aumenta shmSize: "32Gi" para mm_processor_cache. Establece tensorParallelSize: 1. Para Qwen3-Omni-30B: usa --limit-mm-per-prompt.
Inferencia solo en CPU para modelos de embedding (Qwen3-Embedding-0.6B):
env:
- name: VLLM_CPU_KVCACHE_SPACE
value: "48"
vllmConfig:
extraArgs:
- --served-model-name
- Qwen3-Embedding-0.6B
VLLM_CPU_KVCACHE_SPACE debe establecerse con espacio de buffer.
Parámetros Clave en Tiempo de Ejecución
| Parámetro | Propósito | Cuándo es Crítico |
|----------|---------|-------------------|
| enablePrefixCaching | Cachear el KV-cache compartido | Inicios repetidos de prompt |
| enableChunkedPrefill | Dividir etapas largas de prefill | Entradas largas, cargas mixtas |
| maxModelLen | Longitud máxima de contexto | Ahorro de memoria, contextos largos |
| dtype | Tipo de datos de pesos | Control de precisión |
| tensorParallelSize | Partición de GPU | Modelos grandes |
| maxNumSeqs | Secuencias máximas por lote | Paralelismo, latencia |
| gpuMemoryUtilization | Uso de memoria GPU | Optimización OOM |
gpuMemoryUtilization=0.98 reserva espacio para el KV-cache. maxModelLen limita el contexto para ahorrar memoria. enablePrefixCaching acelera prefijos repetidos.
Conclusiones Clave
- La Pila de Producción vLLM es una capa lista para usar en Kubernetes con router integrado y observabilidad.
- Para uso offline, monta modelos mediante PVC y establece HF_HUB_OFFLINE=1.
- Las llamadas a herramientas requieren --enable-auto-tool-choice y parser específico del modelo.
- Modelos multimodales: imagen personalizada + shmSize 32Gi + tensorParallelSize.
- Modo CPU: VLLM_CPU_KVCACHE_SPACE con buffer.
— Editorial Team
Aún no hay comentarios.