Skip to main content

Conceptos

image.png

Arquitectura

              ┌───────────────────────────────────────────────────────────────┐
              │                        USUARIO                                │
              │───────────────────────────────────────────────────────────────│
              │  💬 Usa navegador web (Chrome, Firefox, etc.)                 │
              │  🌐 Accede a http://tu-servidor:3000                          │
              └───────────────┬───────────────────────────────────────────────┘
                              │ 1️⃣ Escribe / envía prompt
                              ▼
        ┌──────────────────────────────────────────────────────────────────────┐
        │                      🖥️  Open WebUI (contenedor Docker)              │
        │──────────────────────────────────────────────────────────────────────│
        │ - Interfaz tipo ChatGPT                                              │
        │ - Guarda historiales de chat (persistencia)                          │
        │ - Tiene “Knowledge Base” (memoria larga / aprendizaje)               │
        │ - Llama al modelo LLM a través de API local                          │
        └───────────────┬──────────────────────────────────────────────────────┘
                        │ 2️⃣ Envía prompt al motor de IA local (Ollama)
                        ▼
        ┌──────────────────────────────────────────────────────────────────────┐
        │                 🧠 Ollama (host, fuera del contenedor)               │
        │──────────────────────────────────────────────────────────────────────│
        │ - Maneja modelos LLM (Llama 3, Mistral, Phi-3, etc.)                 │
        │ - Usa GPU vía CUDA para acelerar inferencia                          │
        │ - Expone API local http://localhost:11434                            │
        │ - Compatible con múltiples modelos y embeddings                      │
        └───────────────┬──────────────────────────────────────────────────────┘
                        │ 3️⃣ Llama a la GPU para procesar el modelo
                        ▼
        ┌──────────────────────────────────────────────────────────────────────┐
        │             ⚙️ NVIDIA Container Toolkit + Drivers CUDA               │
        │──────────────────────────────────────────────────────────────────────│
        │ - “Puentea” la GPU física hacia los contenedores                     │
        │ - Permite ejecutar CUDA/Tensor ops dentro de Docker                  │
        │ - Asegura compatibilidad entre driver y librerías del contenedor     │
        └───────────────┬──────────────────────────────────────────────────────┘
                        │ 4️⃣ Acceso a la GPU física
                        ▼
        ┌──────────────────────────────────────────────────────────────────────┐
        │                 💻 GPU Física (RTX, CUDA cores, VRAM)                │
        │──────────────────────────────────────────────────────────────────────│
        │ - Ejecuta el modelo LLM en paralelo masivo                           │
        │ - Usa librerías CUDA/cuDNN/TensorRT instaladas en Ubuntu             │
        │ - Devuelve resultados procesados a Ollama                            │
        └──────────────────────────────────────────────────────────────────────┘

Requisitos

Ubuntu 24.04 o superior instalado

Drivers Nvidia instalados

  • Ollama → ejecuta el modelo LLM local (usa tu GPU NVIDIA).

  • Open WebUI → interfaz web tipo ChatGPT con historial persistente, usuarios, adjuntos y memoria/Knowledge Base.

  • (Opcional) ChromaDB → memoria vectorial para que “aprenda” de tus chats y documentos (RAG).

Instalar OLLAMA

curl -fsSL https://ollama.com/install.sh | sh

# Arranca el servicio (si no arrancó solo):
sudo systemctl enable --now ollama

Prueba el modelo (descarga automática y usa la GPU si la detecta):

ollama run llama3.1

Consejo: si el prompt responde fluido y nvidia-smi muestra uso durante la generación, está usando GPU.Ejecuta el contenedor usando CPU solo

🏡 Home | Open WebUI

Open WebUI corre dentro de Docker y usa Ollama o PyTorch como backend IA.

Instalar

crea un fichero docker-compose.yaml con el contenido:

services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    restart: unless-stopped
    network_mode: "host"
    environment:
      - OLLAMA_BASE_URL=http://127.0.0.1:11434
    volumes:
      - open-webui:/app/backend/data
    deploy:
      resources:
        reservations:
          devices:
            - capabilities: [gpu]

volumes:
  open-webui:

Levanta el contenedor:

docker compose up -d

Ahora ya puedes acceder a Open WebUI en http://IP-Host:8080


Elegir y preparar el modelo

Modelos conversacionales muy buenos y “ligeros”:

# Llama 3.1 Instruct (8B)
ollama pull llama3.1

# Mistral (7B)
ollama pull mistral

# (Opcional) Un modelo de embeddings para RAG
ollama pull nomic-embed-text

En Open WebUI → Settings → Models selecciona tu modelo por defecto (ej. llama3.1).