Despliegue de VLM Cosmos en Jetson con vLLM | Keryc
Los Vision-Language Models (VLM) combinan percepción visual con razonamiento en lenguaje natural. ¿Por qué importa esto en el borde? Porque ahora puedes tener una IA que mira, interpreta y razona en tiempo real junto a tus robots o dispositivos embebidos, sin depender de la nube.
Qué vas a encontrar en este tutorial
Te muestro cómo desplegar el modelo NVIDIA Cosmos Reasoning 2B (FP8) en la familia Jetson usando el runtime vLLM. Veremos desde requisitos de hardware y software, hasta los comandos para descargar el modelo, lanzar el contenedor y conectar la interfaz Live VLM WebUI para análisis por webcam en tiempo real.
Dispositivos y requisitos mínimos
Dispositivos soportados:
Jetson AGX Thor
Jetson AGX Orin (64GB / 32GB)
Jetson Orin Super Nano
JetPack:
JetPack 6 (L4T r36.x) para Orin
JetPack 7 (L4T r38.x) para Thor
Almacenamiento NVMe SSD recomendado:
~5 GB para los pesos en FP8
~8 GB para la imagen del contenedor vLLM
Cuenta: crea una cuenta gratuita en NVIDIA NGC para descargar el modelo y el contenedor.
Preparación: descarga del NGC CLI y del modelo FP8
Crea un directorio de trabajo y descarga la herramienta NGC CLI para ARM64. Ejemplo rápido:
mkdir -p ~/Projects/CosmosReasoning
cd ~/Projects/CosmosReasoning
# Descargar el instalador ARM64 (ajusta la URL si cambia la versión)
wget -O ngccli_arm64.zip https://api.ngc.nvidia.com/v2/resources/nvidia/ngc-apps/ngc_cli/versions/4.13.0/files/ngccli_arm64.zip
unzip ngccli_arm64.zip
chmod u+x ngc-cli/ngc
export PATH="$PATH:$(pwd)/ngc-cli"
ngc config set
Durante ngc config set te pedirá tu API Key (genera una desde el portal NGC). Luego descarga el checkpoint cuantizado en FP8:
cd ~/Projects/CosmosReasoning
ngc registry model download-version "nim/nvidia/cosmos-reason2-2b:1208-fp8-static-kv8"
Esto crea una carpeta tipo cosmos-reason2-2b_v1208-fp8-static-kv8/. Guarda la ruta completa, la montarás en el contenedor.
Contenedores vLLM por dispositivo
Jetson AGX Thor:
Imagen: ghcr.io/nvidia-ai-iot/vllm:r36.4-tegra-aarch64-cu126-22.04 (Thor usa la imagen optimizada para su entorno)
Jetson AGX Orin y Orin Super Nano:
Imagen: nvcr.io/nvidia/vllm:26.01-py3
Flujo general:
Descargar checkpoint FP8 desde NGC
Pull del contenedor vLLM apropiado
Lanzar el contenedor montando la carpeta del modelo
Iniciar vllm serve y validar la API
Lanzar vLLM en Jetson AGX Thor (ejemplo)
Montar el modelo y lanzar el contenedor (Thor tiene memoria amplia, usamos contexto largo):
git clone https://github.com/nvidia-ai-iot/live-vlm-webui.git
cd live-vlm-webui
./scripts/start_container.sh
En el navegador abre https://localhost:8090 y acepta el certificado. En la sección VLM API Config coloca http://localhost:8000/v1 y refresca para detectar el modelo.
Ajustes útiles en WebUI para Orin:
Max Tokens: 100-150 para respuestas rápidas
Frame Processing Interval: 60+ para dar tiempo entre frames
Problemas comunes y soluciones
vLLM falla por OOM:
Ejecuta sudo sysctl -w vm.drop_caches=3 antes de arrancar.
Baja --gpu-memory-utilization a 0.55 o 0.50.
Reduce --max-model-len a 128 o menos.
Asegúrate de que no hay procesos GPU intensivos corriendo.
Modelo no aparece en WebUI:
Verifica curl http://localhost:8000/v1/models.
Asegúrate de usar http:// y no https:// en la URL base.
Si WebUI y vLLM están en distintos contenedores, usa http://<jetson-ip>:8000/v1.
Respuestas muy lentas:
Es normal en configuraciones con memoria ajustada, prioriza estabilidad sobre velocidad.
Reduce max_tokens y aumenta el interval de frames.
Ruta del modelo no encontrada:
Verifica que la descarga de NGC completó y que la carpeta existe.
Revisa el -v del comando docker run y que la ruta dentro del contenedor coincida con la pasada a vllm serve.
¿Para qué sirve esto en la práctica?
Piensa en robots que describen lo que ven y justifican sus decisiones, cámaras industriales que detectan anomalías y explican por qué, o prototipos de asistencia visual que razonan sobre escenas complejas. Con Cosmos Reasoning 2B en FP8 y vLLM en Jetson puedes llevar prototipos razonadores al borde, con latencia y privacidad local.
La clave es equilibrar contexto y memoria: Thor y Orin permiten contextos largos; el Orin Super Nano requiere ajustes para caber, pero sigue siendo útil para pruebas y demos.