Publicado el

Asegura Tus Datos, Desbloquea la IA: Despliega Open WebUI Localmente con GPU Remota para Ollama

9 min read
Autores
  • Profile picture of aithemes.net
    Nombre
    aithemes.net
    Twitter
Post image placeholder

Introducción

Open WebUI (anteriormente Ollama WebUI) es una interfaz de usuario extensible y autoalojada diseñada para operar completamente sin conexión. Soporta varios ejecutores de LLM, incluyendo Ollama y APIs compatibles con OpenAI, proporcionando una experiencia al estilo de ChatGPT con capacidades incorporadas de RAG (Generación Aumentada por Recuperación). Su arquitectura permite la separación de la interfaz (frontend) y el motor de inferencia (backend), lo que permite una asignación optimizada de recursos.

En este post, ejecutamos un despliegue de arquitectura dividida. Ejecutaremos el frontend de Open WebUI dentro de un contenedor de Docker a través de WSL (Ubuntu), mientras lo conectamos a un ordenador personal externo en la red local dedicado a la inferencia, equipado con una NVIDIA GeForce RTX 3060 que ejecuta Ollama. Para esta configuración, utilizamos el LLM mistral-nemo:latest y el modelo de incrustación embeddinggemma:latest en el servidor Ollama.

Entorno de Ejecución

La evaluación utiliza una configuración de computación distribuida para maximizar el rendimiento de la inferencia mientras se mantiene un frontend ligero:

  1. Host Frontend: Un host que ejecuta Ubuntu 22.04 a través de WSL 2. Este aloja el contenedor de Docker de Open WebUI.
  2. Servidor de Inferencia: Estación de trabajo externa en la red local (LAN) equipada con una NVIDIA GeForce RTX 3060, que ejecuta el servicio Ollama.
  3. Red: LAN Gigabit que conecta ambas máquinas.

Configuración del Servidor: Instancia Externa de Ollama

Antes de desplegar el frontend, la instancia externa de Ollama debe configurarse para aceptar conexiones remotas. Por defecto, Ollama se vincula a 127.0.0.1.

  1. Establecer Variable de Entorno: En la máquina externa (Servidor), configura la variable OLLAMA_HOST para escuchar en todas las interfaces.

    • Linux: export OLLAMA_HOST=0.0.0.0
  2. Configuración del Firewall: Asegúrate de que el puerto 11434 (puerto predeterminado de Ollama) esté abierto en el firewall del Servidor para permitir el tráfico TCP entrante desde el Host Frontend.

  3. Reiniciar Servicio: Reinicia la aplicación Ollama para aplicar los cambios.

Instrucciones de Instalación: Open WebUI

En el Host Frontend (WSL), sigue estos pasos para desplegar Open WebUI:

  1. Verificar Instalación de Docker: Asegúrate de que Docker se esté ejecutando dentro de tu distribución de WSL.

    docker --version
    
  2. Ejecutar Comando Run: Despliega el contenedor usando la variable de entorno específica OLLAMA_BASE_URL para apuntar a tu servidor externo. Reemplaza <REMOTE_GPU_IP> con la dirección IP estática de tu máquina externa que aloja el servidor Ollama.

    docker run -d -p 3000:8080 \
      -e OLLAMA_BASE_URL=http://<REMOTE_GPU_IP>:11434 \
      -v open-webui:/app/backend/data \
      --name open-webui \
      --restart always \
      ghcr.io/open-webui/open-webui:main
    
    • -p 3000:8080: Mapea el puerto 3000 del host al puerto 8080 del contenedor.
    • OLLAMA_BASE_URL: Dirige las llamadas de la API a la instancia de GPU remota.
    • -v open-webui:/app/backend/data: Persiste los datos de usuario y el historial de chat.

Acceder a Open WebUI desde el Navegador

Una vez que el contenedor esté activo, accede a la interfaz a través del navegador en tu host. Navega a http://localhost:3000.

El primer usuario que se registra recibe automáticamente privilegios de Administrador. Crea una cuenta con un correo electrónico y una contraseña para continuar. La interfaz actúa como una puerta de enlace, enrutando todas las tareas de generación intensivas en cómputo a la NVIDIA GeForce RTX 3060 remota.

Post image placeholder

Ejecución de Consulta de Ejemplo

Probamos la latencia y la integración de la respuesta con la siguiente consulta:

Consulta: "Resume en una tabla de máximo 5 filas las diferencias de arquitectura de los núcleos CUDA entre Ampere y Hopper."

Proceso:

  1. Entrada: El usuario escribe la consulta en Open WebUI (WSL).
  2. Enrutamiento: El contenedor de Docker reenvía la solicitud a través de HTTP a <REMOTE_GPU_IP>:11434.
  3. Inferencia: La NVIDIA GeForce RTX 3060 remota procesa el prompt.
  4. Salida: El flujo de tokens se devuelve a la interfaz de usuario.

La respuesta se generó a ~45 tokens/segundo (dependiendo de la VRAM de la GPU y el número de parámetros del modelo), sin carga en el host local de WSL.

Post image placeholder

Verificación y Conexión de Ollama

Según la documentación de Open WebUI, la aplicación se conectará automáticamente a Ollama si puede alcanzarla. Para verificar y gestionar la conexión:

  1. Navegar a la Configuración de Conexión: Ve a Configuración de Administrador → Conexiones → Ollama y haz clic en el icono de Gestionar (llave inglesa).
  2. Confirmar el Endpoint: En la pantalla de gestión, asegúrate de que la URL Base apunte a tu host de Ollama (p. ej., http://<REMOTE_GPU_IP>:11434).
  3. Descargar y Verificar Modelos:
    • Desde el Panel de Gestión: Puedes descargar modelos directamente desde esta pantalla.
    • Desde el Chat: Una forma más rápida es escribir un nombre de modelo (p. ej., mistral-nemo:latest) en el selector de modelos del chat. Si el modelo no está disponible localmente, Open WebUI te pedirá que lo descargues a través de Ollama.
  4. Validar: Después de una prueba de conexión exitosa, el selector de modelos en la barra lateral del chat debería poblarse con los modelos disponibles en tu servidor remoto de Ollama. Si no es así, vuelve a verificar la URL Base y la configuración del firewall.
Post image placeholder

RAG: Añadir Documentos

Open WebUI proporciona soporte RAG incorporado. Evaluamos esto subiendo documentación técnica:

  1. Subir Documentos:

    • Haz clic en la pestaña Workspace (o en el icono + en la barra de chat).
    • Selecciona Documentos.
    • Sube archivos PDF o de texto. El sistema vectoriza automáticamente el contenido.
  2. Gestión de Colecciones:

    • Agrupa documentos en una Colección (p. ej., "Manuales-GPU").
    • En un nuevo chat, habilita la colección escribiendo # y seleccionando el nombre de la colección.
    Post image placeholder
    Post image placeholder
    Post image placeholder

Configuración de Incrustaciones RAG

Para un RAG efectivo, Open WebUI te permite especificar el modelo de incrustación. Cuando se utiliza un servidor Ollama remoto, el proceso de incrustación también se ejecuta en ese servidor, manteniendo toda la computación intensiva fuera de la máquina cliente.

  1. Navegar a la Configuración de Administrador: Accede al panel de administración haciendo clic en tu perfil en la esquina superior izquierda y seleccionando "Configuración".
  2. Seleccionar Configuración de Documentos: En el panel de administración, ve a la pestaña "Documentos".
  3. Configurar Modelo de Incrustación:
    • Establece el Motor del Modelo de Incrustación en "Ollama".
    • Elige el modelo de incrustación deseado del menú desplegable Modelo de Incrustación. Un modelo recomendado es embeddinggemma:latest. Si no lo tienes, puedes descargarlo a través de Ollama.
  4. Ajustar Parámetros de RAG (Opcional): También puedes ajustar el proceso de RAG con las siguientes configuraciones:
    • Tamaño del Fragmento: El tamaño de los fragmentos de texto en los que se dividen los documentos.
    • Superposición de Fragmentos: El número de tokens que se superponen entre fragmentos.
    • Top K: El número de fragmentos recuperados que se incluirán en el contexto.

Al configurar estos ajustes, te aseguras de que el servidor remoto de Ollama maneje todo el flujo de trabajo de RAG, desde la incrustación hasta la generación.

Post image placeholder

Ampliando Capacidades con Herramientas y Funciones

Open WebUI ofrece mecanismos robustos para ampliar sus capacidades a través de Herramientas y Funciones, lo que permite interacciones de IA altamente personalizadas y potentes.

  • Herramientas: Son scripts de Python que capacitan a los Modelos de Lenguaje Grandes (LLMs) para realizar acciones externas. Esto puede incluir búsquedas web, generación de imágenes o la obtención de datos en tiempo real (p. ej., clima, precios de acciones). Las herramientas actúan esencialmente como plugins para el LLM, permitiéndole ir más allá de su conocimiento preentrenado al interactuar con servicios externos. Se gestionan dentro de las pestañas de Workspace de la interfaz de Open WebUI.
  • Funciones: También son scripts de Python, pero están diseñados para ampliar la propia plataforma Open WebUI. Las funciones pueden añadir soporte para nuevos proveedores de modelos de IA, personalizar el procesamiento de mensajes o introducir nuevos elementos de interfaz de usuario. Operan dentro del entorno de Open WebUI, ofreciendo mejoras modulares y rápidas al comportamiento de la plataforma. Los administradores suelen configurar y gestionar las funciones a través del Panel de Administración.

Tanto las Herramientas como las Funciones se pueden instalar y habilitar fácilmente dentro de la interfaz de Open WebUI, con una comunidad vibrante que aporta una variedad de opciones para importar.

Post image placeholder
Post image placeholder

Conclusión

Esta configuración distribuida ofrece ventajas distintivas para flujos de trabajo de IA eficientes:

  1. Aislamiento de la Red Local: Todo el ecosistema del servidor Open WebUI y Ollama opera dentro de tu red local privada, garantizando que no haya transmisión o fuga de datos externos, asegurando así la privacidad y seguridad de los datos.
  2. Solución de Código Abierto: Tanto Open WebUI como Ollama son proyectos de código abierto. Ollama tiene licencia MIT, mientras que Open WebUI utiliza una licencia personalizada con una cláusula de protección de marca. Esto proporciona una alternativa transparente y impulsada por la comunidad a las soluciones propietarias.
  3. Inferencia Centralizada: Múltiples clientes de Open WebUI pueden conectarse a la misma instancia central de Ollama.
  4. Capacidades Mejoradas: Open WebUI ofrece soporte incorporado para Generación Aumentada por Recuperación (RAG) y Herramientas personalizables, lo que permite funcionalidades de LLM extendidas y una interacción dinámica con fuentes de datos y servicios externos.

Open WebUI combinado con un backend remoto de Ollama proporciona una interfaz robusta y de grado de producción para el despliegue local de LLM.

Referencias


¿Disfrutaste este post? ¿Lo encontraste perspicaz? Siéntete libre de dejar un comentario a continuación para compartir tus pensamientos o hacer preguntas. Se requiere una cuenta de GitHub para unirse a la discusión.