Experimentos · ejecutado (real)
EXP-003 — NVIDIA H200 GPU Inference
ExperimentalREAL- Status
- SESSION 001 COMPLETED
- Provider
- Nebius AI Cloud
- GPU
- NVIDIA H200 NVLink
- Model
- Qwen/Qwen3-0.6B
- VM
- STOPPED
GPU real · evidencia sanitizada · sin demo en línea
Latencia media
207,73 ms
Throughput observado
559,86 tokens/s
Solicitudes
10 secuenciales
Tokens de salida
1.163
Gasto de sesión
~USD 1,70 en ~55 min
Estado de la VM
STOPPED
Objetivo
Validar de punta a punta el camino desde una instancia Nebius con una NVIDIA H200 hasta un endpoint de inferencia compatible con OpenAI: reconocimiento de GPU, CUDA, PyTorch, DCGM, acceso a GPU desde Docker, servicio con vLLM y un benchmark HTTP secuencial pequeño, con evidencia persistida y sanitizada.
Es una validación de ingeniería sobre una sola GPU y un modelo de 0,6B. No es un benchmark de throughput máximo, ni una evaluación de calidad del modelo, ni una comparación entre proveedores.
Arquitectura
Cliente y contenedor corren en la misma VM. vLLM publica el puerto 8000 solo en 127.0.0.1; no hay endpoint público ni demo permanente. La VM quedó detenida al cierre.
Infraestructura
- GPU
- 1× NVIDIA H200 NVLink · 143.771 MiB VRAM
- CPU / RAM
- 16 vCPU · 200 GiB provisionados
- Disco
- 100 GiB SSD administrado
- OS / kernel
- Ubuntu 24.04 LTS · 6.11.0-1016-nvidia
- Driver / CUDA
- 580.173.02 · CUDA 13.0
- PyTorch / DCGM
- 2.13.0+cu130 · DCGM 4.7.0
- Docker / vLLM
- 29.8.2 · 0.32.0
- Modelo
- Qwen/Qwen3-0.6B (`max_model_len` 4096)
Validaciones GPU
| GPU | H200 reconocida; 143.771 MiB; 41 °C en baseline |
| CUDA Toolkit | nvcc 13.0; cuda-toolkit 13.0.3.0 |
| PyTorch | CUDA disponible y operación en GPU (registro de sesión) |
| DCGM | Nivel 1: PASS (software + GPU0) |
| Docker | Contenedor con acceso a GPU |
| vLLM | API OpenAI-compatible en 127.0.0.1:8000 |
La salida de la operación PyTorch y del chequeo Docker no se persistió como archivo en Session 001. Session 002 debe capturarla.
Model serving
- Motor
- vLLM 0.32.0 · FlashAttention 3 · bfloat16
- Imagen
- vllm/vllm-openai@sha256:befccf0e…5b34
- Contexto
- max_model_len 4096 · tensor parallel 1
- KV cache
- 1.176.512 tokens · concurrencia máx. 287,23× a 4.096 tokens
Metodología del benchmark
10 solicitudes HTTP secuenciales, sin concurrencia y sin warm-up. La latencia es wall-clock de extremo a extremo alrededor de cada round-trip; los tokens de salida se leen de usage.completion_tokens. El throughput agregado es la suma de tokens dividida por la suma de latencias. No se midió TTFT ni latencia inter-token.
| # | latencia (s) | tokens | tok/s e2e | finish |
|---|---|---|---|---|
| 1 | 0,2437 | 127 | 521,16 | stop |
| 2 | 0,2265 | 128 | 565,22 | length |
| 3 | 0,1935 | 108 | 558,12 | stop |
| 4 | 0,1704 | 95 | 557,64 | stop |
| 5 | 0,2253 | 128 | 568,05 | length |
| 6 | 0,2076 | 118 | 568,44 | stop |
| 7 | 0,2255 | 128 | 567,58 | length |
| 8 | 0,2265 | 128 | 565,17 | length |
| 9 | 0,1682 | 95 | 564,96 | stop |
| 10 | 0,1901 | 108 | 568,11 | stop |
Total: 1.163 tokens de salida en 2,0773 s acumulados. Media: 0,20773 s. Throughput agregado: 559,86 tokens/s. Cuatro respuestas alcanzaron max_tokens=128: son válidas a nivel HTTP pero su contenido está truncado.
Costo de la sesión
Gasto observado: ~USD 1,70 en una sesión de ~55 minutos. Promedio aritmético: ~USD 1,85/h. La política Spot de USD 2,70/GPU-hora era un precio máximo, no un presupuesto de sesión. El gasto no está conciliado con un desglose de Billing; el disco administrado puede seguir facturándose con la VM detenida.
What this proves / What this does not prove
What this proves
- La H200 es reconocida y utilizable desde CUDA, PyTorch, DCGM y Docker.
- vLLM 0.32.0 sirve Qwen3-0.6B con una API compatible con OpenAI.
- El camino completo VM → contenedor → GPU → respuesta HTTP funciona y deja evidencia.
- Un benchmark secuencial pequeño produce métricas reproducibles y auditables.
What this does not prove
- No mide el throughput máximo de una H200 ni el rendimiento en concurrencia.
- No evalúa la calidad, precisión ni utilidad real del modelo.
- No compara proveedores ni establece un SLA o precio sostenido.
- No demuestra una AI Factory en producción ni un servicio con demo permanente.
Limitaciones
- Una sola GPU, un solo nodo y un modelo pequeño (0,6B).
- Solicitudes secuenciales; sin concurrencia, batching ni medición de TTFT.
- Sin warm-up y sin semilla fija; temperatura 0,6.
- 4 de 10 respuestas alcanzaron max_tokens=128: el contenido está truncado.
- El gasto es una observación del operador, no una conciliación de Billing.
- La provisión fue por consola; no se usó Terraform ni cloud-init.
Reproducibilidad
- 01Aprovisionar una VM con 1× H200 en Nebius eu-north1 y acceso SSH por clave.
- 02Restringir el Security Group y mantener el puerto 8000 solo en loopback.
- 03Validar GPU, CUDA, PyTorch, DCGM y Docker con scripts/validate-gpu.sh.
- 04Levantar vLLM con scripts/docker-run.sh (imagen por digest, modelo Qwen3-0.6B).
- 05Validar /health, /v1/models y una completion con scripts/validate-inference.sh.
- 06Ejecutar benchmarks/benchmark_api.py y persistir el JSON.
- 07Sanitizar la evidencia, verificar el escaneo residual y detener la VM.
La provisión histórica fue por consola. Los scripts de validación y el docker-run.sh son referencia reproducible; Terraform y cloud-init no se usaron ni se validaron. La evidencia cruda está sanitizada en el repositorio del Lab.
Source / report / evidence
No hay botón de “Live Demo”: el servicio estaba desplegado en una VM que quedó STOPPED al cierre.