Inicio rápido de ejemplos de Jetson

Introducción

El repositorio jetson-examples de Seeed Studios proporciona ejemplos de IA preconstruidos y listos para ejecutar en dispositivos NVIDIA Jetson. En lugar de pasar horas configurando entornos y dependencias, puedes implementar modelos de IA complejos con un solo comando usando contenedores Docker.

Este módulo te muestra cómo usar la herramienta CLI jetson-examples para implementar rápidamente LLMs y otros modelos de IA en tu dispositivo Jetson.

jetson-examples

¿Qué es jetson-examples?

jetson-examples es una herramienta de línea de comandos que:

  • Proporciona implementación en una línea para modelos de IA populares
  • Usa contenedores Docker para entornos aislados y reproducibles
  • Incluye configuraciones preoptimizadas para hardware Jetson
  • Soporta múltiples frameworks: PyTorch, TensorRT, Ollama y más
FunciónDescripción
Instalación fácilInstalar con pip3 install jetson-examples
Ejecución con un comandoreComputer run para implementar
Basado en DockerEntornos consistentes en todos los dispositivos
Auto-configuraciónPreajustado para el rendimiento de Jetson
Actualizaciones regularesNuevos ejemplos agregados regularmente

Instalación

Instalar la herramienta CLI

bash
# Instalar jetson-examples vía pip
pip3 install jetson-examples

# Verificar instalación
reComputer --help

Alternativa: Configuración manual de Docker

Si prefieres control manual:

bash
# Instalar Docker (si no está instalado)
sudo apt-get update
sudo apt-get install -y docker.io

# Agregar usuario al grupo docker (requiere cerrar/abrir sesión)
sudo usermod -aG docker $USER

# Verificar Docker
docker --version

jetson-examples-install

Ejemplos de LLM disponibles

Aquí están los ejemplos relacionados con LLM disponibles en el repositorio jetson-examples:

LLMs solo texto

EjemploTipoTamaño del modeloComando
llama3Texto (LLM)Modelo de 4.9GBreComputer run llama3
gemma4Texto (LLM)Modelo de 2.5GBreComputer run gemma4
qwen3.5-4bTexto (LLM)Modelo de 2.5GBreComputer run qwen3.5-4b
qwen3.6-35bTexto (LLM)Modelo de 28GBreComputer run qwen3.6-35b
nemotron-3-nanoTexto (LLM)Modelo de 24.5GBreComputer run nemotron-3-nano
text-generation-webuiTexto (LLM)Modelo de 3.9GBreComputer run text-generation-webui

Modelos visión-lenguaje (VLM)

EjemploTipoTamaño del modeloComando
llava-v1.5VLMModelo de 13GBreComputer run llava-v1.5-7b
llava-v1.6VLMModelo de 13GBreComputer run llava-v1.6-vicuna-7b
live-vlm-webuiVLMModelo de 13GBreComputer run live-vlm-webui
gemma4VLMModelo de 2.5GBreComputer run gemma4

Audio y voz

EjemploTipoTamaño del modeloComando
whisperASR (Voz a texto)Modelo de 1.5GBreComputer run whisper
parler-ttsTTS (Texto a voz)Imagen de 6.9GBreComputer run parler-tts

Servidor de inferencia

EjemploTipoTamaño del modeloComando
ollamaServidor de inferenciaImagen de 10.5GBreComputer run ollama

Primeros pasos

Ejemplo 1: Ejecutar Ollama

La forma más rápida de comenzar con LLMs en Jetson:

bash
# Implementar Ollama con Docker
reComputer run ollama

Una vez en ejecución, puedes descargar y ejecutar modelos:

bash
# Entrar al contenedor Docker
docker exec -it ollama bash

# Descargar y ejecutar un modelo
ollama run llama3.2:3b

Ejemplo 2: Ejecutar un modelo visión-lenguaje

bash
# Implementar LLaVA para comprensión de imágenes
reComputer run llava-v1.5-7b

Esto configura un modelo que puede entender y describir imágenes.

Ejemplo 3: Implementar Text Generation WebUI

Para una interfaz web completa para interactuar con LLMs:

bash
# Implementar text-generation-webui (Oobabooga)
reComputer run text-generation-webui

Accede a la interfaz web en http://localhost:5000.

Ejemplo 4: Implementar Whisper para reconocimiento de voz

bash
# Implementar OpenAI Whisper para voz a texto
reComputer run whisper

Ejemplo práctico: Construir un chatbot

Juntemos todo para crear un chatbot simple usando jetson-examples:

Paso 1: Implementar Ollama

bash
reComputer run ollama

Paso 2: Descargar un modelo

bash
# Ver contenedores en ejecución
docker ps

# Entrar al contenedor Ollama
docker exec -it ollama ollama pull llama3.2:3b

Paso 3: Probar vía API

bash
# Probar la API de chat
curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2:3b",
  "messages": [
    {"role": "user", "content": "What can you help me with?"}
  ],
  "stream": false
}'

Paso 4: Integración con Python

python
import requests

def chat_with_model(user_message, model="llama3.2:3b"):
    response = requests.post(
        "http://localhost:11434/api/chat",
        json={
            "model": model,
            "messages": [{"role": "user", "content": user_message}],
            "stream": False
        }
    )
    return response.json()["message"]["content"]

# Chat interactivo
while True:
    user_input = input("You: ")
    if user_input.lower() in ['quit', 'exit', 'q']:
        break
    response = chat_with_model(user_input)
    print(f"AI: {response}\n")

Gestionar contenedores

Comandos comunes de Docker

bash
# Listar contenedores en ejecución
docker ps

# Listar todos los contenedores (incluyendo los detenidos)
docker ps -a

# Ver logs del contenedor
docker logs <container-name>

# Detener un contenedor
docker stop <container-name>

# Reiniciar un contenedor
docker restart <container-name>

# Eliminar un contenedor
docker rm <container-name>

# Entrar a un contenedor en ejecución
docker exec -it <container-name> bash

Monitoreo de recursos

bash
# Monitorear uso de recursos del contenedor
docker stats

# Ver uso de disco
docker system df

Personalizar implementaciones

Variables de entorno

Muchos ejemplos soportan configuración vía variables de entorno:

bash
# Ejemplo: Establecer parámetros del modelo para Ollama
docker run -d \
  --name ollama \
  --gpus all \
  -e OLLAMA_HOST=0.0.0.0:11434 \
  -p 11434:11434 \
  ollama/ollama:latest

Montajes de volumen

Persistir datos entre reinicios de contenedores:

bash
# Montar un directorio local para almacenamiento de modelos
docker run -d \
  --name ollama \
  --gpus all \
  -v /path/to/models:/root/.ollama \
  -p 11434:11434 \
  ollama/ollama:latest

Configuración de red

Acceder a servicios desde otros dispositivos en tu red:

bash
# Vincular a todas las interfaces (no solo localhost)
docker run -d \
  --name ollama \
  --gpus all \
  -p 0.0.0.0:11434:11434 \
  ollama/ollama:latest

Consejos de rendimiento

1. Usar paso directo de GPU

Siempre asegurar que Docker tenga acceso a GPU:

bash
# Verificar acceso a GPU en el contenedor
docker exec -it <container-name> nvidia-smi

2. Asignar memoria apropiada

bash
# Limitar memoria del contenedor (opcional, para configuraciones multi-contenedor)
docker run -d \
  --name ollama \
  --gpus all \
  --memory=12g \
  --memory-swap=16g \
  ollama/ollama:latest

3. Usar almacenamiento SSD

Los modelos cargan más rápido desde SSD que desde SD o eMMC.

Problemas comunes y soluciones

Problema 1: Permiso de Docker denegado

Problema: Got permission denied while trying to connect to the Docker daemon socket

Solución:

bash
# Agregar usuario al grupo docker
sudo usermod -aG docker $USER

# Cerrar sesión y volver a entrar para que los cambios tomen efecto
# O ejecutar en la sesión actual:
newgrp docker

Problema 2: El contenedor no inicia

Problema: El contenedor sale inmediatamente después de iniciar

Solución:

bash
# Revisar logs del contenedor para errores
docker logs <container-name>

# Revisar recursos disponibles
free -h
df -h
nvidia-smi

Repositorios y proyectos de ejemplo

Explora estos ejemplos del repositorio jetson-examples:

llama-factory

Afinar LLMs en tu dispositivo Jetson:

bash
reComputer run llama-factory

Tamaño de modelo/datos: 13.5GB

live-vlm-webui

Interfaz de modelo visión-lenguaje en tiempo real:

bash
reComputer run live-vlm-webui

Funciones: Procesamiento de feed de cámara en vivo con comprensión de IA

deep-live-cam

Intercambio y procesamiento de rostros en tiempo real:

bash
reComputer run deep-live-cam

Ejercicio práctico

  1. Instalar la herramienta jetson-examples
  2. Implementar Ollama y ejecutar llama3.2:3b
  3. Implementar LLaVA para comprensión de imágenes
  4. Crear un script Python que interactúe con el modelo implementado
  5. Configurar Open WebUI para una interfaz gráfica
  6. Explorar otros ejemplos en el repositorio

Referencias


Siguiente: Continúa a Módulo 5.6: Construyendo pipeline ASR + LLM + TTS para crear un asistente de voz completo!