Primeros Pasos con Ollama

Introducción

Ollama es la forma más simple de ejecutar Modelos de Lenguaje Grandes (LLM) localmente. Piénsalo como "Docker para LLMs" — maneja la descarga de modelos, el almacenamiento y la inferencia con una interfaz de línea de comandos limpia. Sin configuraciones complejas, sin dolores de cabeza por dependencias — un comando para instalar y un comando para empezar a chatear.

En este módulo, aprenderás a:

  • Instalar Ollama en tu dispositivo Jetson
  • Descargar y ejecutar tu primer LLM
  • Explorar diferentes modelos y sus capacidades
  • Configurar una interfaz de chat basada en web usando Open WebUI

ollama-banner

ollama-prompt

¿Por qué Ollama?

CaracterísticaDescripción
Instalación en una líneaComando único para comenzar
Gestión automática de modelosDescarga y gestiona automáticamente archivos de modelos
Comandos simplesollama run nombremodelo para comenzar a chatear
REST APIServidor HTTP integrado para integración
Múltiples modelosEjecutar diferentes modelos en paralelo
Compatible con OpenAIAPI compatible con la interfaz de OpenAI

Requisitos del Sistema

Antes de instalar Ollama, asegúrate de que tu dispositivo Jetson cumpla estos requisitos:

RequisitoMínimoRecomendado
JetPack5.1+6.0+
RAM8GB16GB+
Almacenamiento10GB libre50GB+ (para múltiples modelos)
Swap8GB16GB

Usuarios por primera vez: Si aún no has configurado espacio swap en tu Jetson, consulta Capítulo 3: Configuración de Swap

Instalando Ollama

Método 1: Instalación Directa (Recomendado)

Abre una terminal en tu dispositivo Jetson y ejecuta:

bash
# Descargar e instalar Ollama
curl -fsSL https://ollama.com/install.sh | sh

El script de instalación:

  1. Detectará tu arquitectura de sistema (ARM64)
  2. Descargará el binario apropiado de Ollama
  3. Configurará el servicio systemd
  4. Verificará la instalación

Verificar la Instalación

bash
# Verificar versión de Ollama
ollama --version

# Verificar si el servicio está ejecutándose
systemctl status ollama

Tu Primera Interacción con LLM

Ahora ejecutemos tu primer LLM. Ollama descargará automáticamente el modelo en la primera ejecución.

Puedes encontrar los modelos soportados por Ollama aquí. Selecciona el modelo que deseas desplegar en tu dispositivo.

Ejecutar un Modelo

bash
# Por ejemplo
ollama run qwen3.5:2b

Una vez descargado, verás un prompt de chat:

bash
What is NVIDIA Jetson?

Comandos de Chat Útiles

ComandoDescripción
/?Mostrar ayuda
/byeSalir de la conversación
Ctrl+DSalir de la conversación
/clearLimpiar historial de conversación
/historyMostrar historial de conversación

Explorando Diferentes Modelos

Modelos de Lenguaje de Visión (Multimodal)

bash
# Qwen3.5 - Entender imágenes y texto
ollama run qwen3.5:2b
#Puedes especificar una imagen y dejar que describa el contenido dentro de la imagen.
What can you see in /home/seeed/test.jpg

qwen_v

Usando la REST API

Ollama ejecuta un servidor HTTP local en el puerto 11434, facilitando la integración con otras aplicaciones.

Enviar una Solicitud de Chat

bash
# Generación de texto simple
curl http://localhost:11434/api/generate -d '{
  "model": "qwen3.5:2b",
  "prompt": "What is edge computing?",
  "stream": false
}'

curl_test

Integración con Python

python
import requests

def chat_with_ollama(prompt, model="qwen3.5:2b"):
    """Enviar un prompt a Ollama y obtener una respuesta."""
    response = requests.post(
        "http://localhost:11434/api/generate",
        json={
            "model": model,
            "prompt": prompt,
            "stream": False
        }
    )
    return response.json()["response"]

# Ejemplo de uso
response = chat_with_ollama("Write a simple Python function to calculate factorial")
print(response)

API Compatible con OpenAI

bash
# instalar sdk de openai
pip install openai

Ollama proporciona un endpoint compatible con OpenAI, permitiéndote usar bibliotecas de cliente OpenAI existentes:

python
from openai import OpenAI

# Conectar a Ollama local
client = OpenAI(
    base_url="http://localhost:11434/v1",
    api_key="not-needed"  # Ollama no requiere una clave API
)

response = client.chat.completions.create(
    model="qwen3.5:4b",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Explain quantum computing in simple terms."}
    ]
)

print(response.choices[0].message.content)

VLM encuentra objetos en imagen

bash
pip install ollama
git clone https://github.com/Seeed-Projects/reComputer-Jetson-for-Beginners
cd reComputer-Jetson-for-Beginners/5-Offline-Large-Model-Development/code
python vlm_object_detector.py

espera un minuto y puedes ver el resultado en la carpeta img

vlm_find_obj

Configurando Open WebUI

Open WebUI (anteriormente Ollama WebUI) proporciona una interfaz similar a ChatGPT para interactuar con tus modelos locales.

Instalación via Docker

bash
# Descargar la imagen de Open WebUI
docker pull ghcr.io/open-webui/open-webui:main

# Crear directorio de datos
sudo mkdir -p /opt/seeed/open-webui/data

# Ejecutar el contenedor
docker run -d \
  --restart always \
  --name open-webui \
  --network host \
  -v /opt/seeed/open-webui/data:/app/backend/data \
  -e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
  ghcr.io/open-webui/open-webui:main

# Verificar estado del contenedor
docker logs -f open-webui

Accediendo a Open WebUI

Una vez que el contenedor esté ejecutándose:

  1. Abre un navegador en tu Jetson (u otro dispositivo en la misma red)
  2. Navega a http://localhost:8080 (o http://<jetson-ip>:8080)
  3. Crea una cuenta de administrador en el primer acceso
  4. ¡Selecciona tu modelo del menú desplegable y comienza a chatear!

web_ui

Características de Open WebUI

  • Gestión de Modelos: Cambiar entre diferentes modelos de Ollama
  • Historial de Conversación: Guardar y buscar en historiales de chat
  • Soporte Multi-usuario: Crear cuentas para diferentes usuarios
  • Soporte RAG: Subir y chatear con documentos
  • Generación de Imágenes: Integrar con modelos de generación de imágenes
  • Sistema de Plugins: Ampliar funcionalidad con plugins de la comunidad

Consejos para Mejor Rendimiento

  1. Usa tamaños de modelo apropiados: Comienza con modelos 1B-3B en Jetson Orin Nano
  2. Aumenta el espacio swap: Añade más swap para modelos más grandes
  3. Cierra aplicaciones innecesarias: Libera memoria GPU
  4. Usa modelos cuantizados: Los modelos GGUF cuantizados (Q4_K_M) ofrecen el mejor equilibrio velocidad/calidad
  5. Monitorea la temperatura: Jetson puede regular térmicamente bajo carga sostenida — asegúrate de tener refrigeración adecuada

Problemas Comunes y Soluciones

Problema 1: Fallo en la Descarga del Modelo

Problema: Error: pull model manifest: Get https://registry.ollama.ai/...

Solución:

bash
# Verificar conexión a internet
ping google.com

# Reintentar con salida detallada
OLLAMA_DEBUG=1 ollama pull llama3.2:3b

Problema 2: Sin Memoria

Problema: Error: model requires more system memory (8.0 GiB) than is available (6.0 GiB)

Solución:

bash
# Verificar memoria disponible
free -h

# Aumentar swap (si aún no está configurado)
sudo fallocate -l 16G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# Usar un modelo más pequeño
ollama run qwen3.5:2b

Problema 3: Tiempos de Respuesta Lentos

Problema: Generación de tokens muy lenta (< 5 tokens/segundo)

Solución:

bash
# Usar un modelo más pequeño
ollama run qwen3.5:0.8b

# Reducir ventana de contexto
ollama run qwen3.5:0.8b --num-ctx 2048

# Asegurarse de que la GPU está siendo usada (verificar nvidia-smi durante inferencia)

Problema 4: El Servicio de Ollama No Inicia

Problema: System has not been booted with systemd as init system

Solución (para entornos Docker):

bash
# Iniciar Ollama manualmente
ollama serve &

# O ejecutar en segundo plano
nohup ollama serve > ollama.log 2>&1 &

Ejercicio de Práctica

Completa estos pasos para verificar tu configuración:

  1. Instalar Ollama y verificar la instalación
  2. Ejecutar un modelo: ollama run qwen3.5:2b
  3. Tener una conversación: Pregúntale sobre plataformas Jetson
  4. Probar un modelo diferente: Cambiar a qwen3:4b
  5. Usar la API: Enviar una solicitud via curl
  6. Opcional: Configurar Open WebUI y acceder desde un navegador

Referencias


Siguiente: Continúa a Módulo 5.3: Ejecutando LLMs con llama.cpp para explorar inferencia de LLM ligera!