Publié le

Sécurisez Vos Données, Libérez l'IA : Déployez Open WebUI Localement avec un GPU Ollama à Distance

8 min read
Auteurs
  • Profile picture of aithemes.net
    Nom
    aithemes.net
    Twitter
Post image placeholder

Introduction

Open WebUI (anciennement Ollama WebUI) est une interface utilisateur extensible et auto-hébergée conçue pour fonctionner entièrement hors ligne. Elle prend en charge divers exécuteurs de LLM, y compris Ollama et les API compatibles avec OpenAI, offrant une expérience de type ChatGPT avec des capacités intégrées de RAG (Génération Augmentée par Récupération). Son architecture permet de séparer l'interface (frontend) du moteur d'inférence (backend), ce qui optimise l'allocation des ressources.

Dans cet article, nous mettons en œuvre un déploiement à architecture divisée. Nous exécuterons le frontend d'Open WebUI dans un conteneur Docker via WSL (Ubuntu), tout en le connectant à un ordinateur personnel externe sur le réseau local dédié à l'inférence, équipé d'un NVIDIA GeForce RTX 3060 exécutant Ollama. Pour cette configuration, nous avons utilisé le LLM mistral-nemo:latest et le modèle d'intégration embeddinggemma:latest sur le serveur Ollama.

Environnement d'Exécution

L'évaluation utilise une configuration de calcul distribué pour maximiser le débit d'inférence tout en maintenant un frontend léger :

  1. Hôte Frontend: Un hôte exécutant Ubuntu 22.04 via WSL 2. C'est lui qui héberge le conteneur Docker d'Open WebUI.
  2. Serveur d'Inférence: Poste de travail externe sur le réseau local (LAN) équipé d'un NVIDIA GeForce RTX 3060, exécutant le service Ollama.
  3. Réseau: LAN Gigabit reliant les deux machines.

Configuration du Serveur : Instance Ollama Externe

Avant de déployer le frontend, l'instance Ollama externe doit être configurée pour accepter les connexions à distance. Par défaut, Ollama se lie à 127.0.0.1.

  1. Définir la Variable d'Environnement: Sur la machine externe (Serveur), configurez la variable OLLAMA_HOST pour écouter sur toutes les interfaces.

    • Linux: export OLLAMA_HOST=0.0.0.0
  2. Configuration du Pare-feu: Assurez-vous que le port 11434 (port par défaut d'Ollama) est ouvert sur le pare-feu du serveur pour autoriser le trafic TCP entrant depuis l'hôte frontend.

  3. Redémarrer le Service: Redémarrez l'application Ollama pour appliquer les modifications.

Instructions d'Installation : Open WebUI

Sur l'Hôte Frontend (WSL), suivez ces étapes pour déployer Open WebUI :

  1. Vérifier l'Installation de Docker: Assurez-vous que Docker est en cours d'exécution dans votre distribution WSL.

    docker --version
    
  2. Exécuter la Commande Run: Déployez le conteneur en utilisant la variable d'environnement spécifique OLLAMA_BASE_URL pour pointer vers votre serveur externe. Remplacez <REMOTE_GPU_IP> par l'adresse IP statique de votre machine externe hébergeant le serveur 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: Mappe le port 3000 de l'hôte au port 8080 du conteneur.
    • OLLAMA_BASE_URL: Dirige les appels d'API vers l'instance GPU distante.
    • -v open-webui:/app/backend/data: Persiste les données utilisateur et l'historique des conversations.

Accéder à Open WebUI depuis le Navigateur

Une fois le conteneur actif, accédez à l'interface via le navigateur sur votre hôte. Naviguez vers http://localhost:3000.

Le premier utilisateur à s'inscrire se voit automatiquement attribuer les privilèges d'Administrateur. Créez un compte avec un e-mail et un mot de passe pour continuer. L'interface sert de passerelle, acheminant toutes les tâches de génération gourmandes en calcul vers le NVIDIA GeForce RTX 3060 distant.

Post image placeholder

Exécution d'une Requête d'Exemple

Nous avons testé la latence et l'intégration de la réponse avec la requête suivante :

Requête: "Résumez dans un tableau de 5 lignes maximum les différences d'architecture des cœurs CUDA entre Ampere et Hopper."

Processus:

  1. Entrée: L'utilisateur saisit la requête dans Open WebUI (WSL).
  2. Routage: Le conteneur Docker transmet la requête via HTTP à <REMOTE_GPU_IP>:11434.
  3. Inférence: Le NVIDIA GeForce RTX 3060 distant traite la requête.
  4. Sortie: Le flux de jetons est renvoyé à l'interface utilisateur.

La réponse a été générée à environ 45 jetons/seconde (en fonction de la VRAM du GPU et du nombre de paramètres du modèle), sans aucune charge sur l'hôte WSL local.

Post image placeholder

Vérification et Connexion d'Ollama

Selon la documentation d'Open WebUI, l'application se connectera automatiquement à Ollama si elle peut l'atteindre. Pour vérifier et gérer la connexion :

  1. Naviguer vers les Paramètres de Connexion: Allez dans Paramètres d'Administration → Connexions → Ollama et cliquez sur l'icône Gérer (clé à molette).
  2. Confirmer le Point de Terminaison: Dans l'écran de gestion, assurez-vous que l'URL de Base pointe vers votre hôte Ollama (par ex., http://<REMOTE_GPU_IP>:11434).
  3. Tirer et Vérifier les Modèles:
    • Depuis le Panneau de Gestion: Vous pouvez télécharger des modèles directement depuis cet écran.
    • Depuis le Chat: Un moyen plus rapide est de taper un nom de modèle (par ex., mistral-nemo:latest) dans le sélecteur de modèles du chat. Si le modèle n'est pas disponible localement, Open WebUI vous invitera à le télécharger via Ollama.
  4. Valider: Après un test de connexion réussi, le sélecteur de modèles dans la barre latérale du chat devrait se remplir avec les modèles disponibles sur votre serveur Ollama distant. Sinon, revérifiez l'URL de base et les paramètres du pare-feu.
Post image placeholder

RAG : Ajout de Documents

Open WebUI offre un support RAG intégré. Nous l'avons évalué en téléchargeant de la documentation technique :

  1. Télécharger des Documents:

    • Cliquez sur l'onglet Workspace (ou sur l'icône + dans la barre de discussion).
    • Sélectionnez Documents.
    • Téléchargez des fichiers PDF ou texte. Le système vectorise automatiquement le contenu.
  2. Gestion des Collections:

    • Regroupez les documents dans une Collection (par ex., "Manuels-GPU").
    • Dans une nouvelle discussion, activez la collection en tapant # et en sélectionnant le nom de la collection.
    Post image placeholder
    Post image placeholder
    Post image placeholder

Configuration des Intégrations RAG

Pour un RAG efficace, Open WebUI vous permet de spécifier le modèle d'intégration. Lorsque vous utilisez un serveur Ollama distant, le processus d'intégration s'exécute également sur ce serveur, ce qui évite toute surcharge de calcul sur la machine cliente.

  1. Naviguer vers les Paramètres d'Administration: Accédez au panneau d'administration en cliquant sur votre profil en haut à gauche et en sélectionnant "Paramètres".
  2. Sélectionner les Paramètres des Documents: Dans le panneau d'administration, allez à l'onglet "Documents".
  3. Configurer le Modèle d'Intégration:
    • Définissez le Moteur de Modèle d'Intégration sur "Ollama".
    • Choisissez le modèle d'intégration souhaité dans le menu déroulant Modèle d'Intégration. Un modèle recommandé est embeddinggemma:latest. Si vous ne l'avez pas, vous pouvez le télécharger via Ollama.
  4. Ajuster les Paramètres RAG (Optionnel): Vous pouvez également affiner le processus RAG avec les paramètres suivants :
    • Taille du Morceau: La taille des morceaux de texte dans lesquels les documents sont divisés.
    • Chevauchement des Morceaux: Le nombre de jetons à superposer entre les morceaux.
    • Top K: Le nombre de morceaux récupérés à inclure dans le contexte.

En configurant ces paramètres, vous vous assurez que le serveur Ollama distant gère l'ensemble du flux de travail RAG, de l'intégration à la génération.

Post image placeholder

Extension des Capacités avec les Outils et les Fonctions

Open WebUI offre des mécanismes robustes pour étendre ses capacités grâce aux Outils et aux Fonctions, permettant des interactions d'IA hautement personnalisées et puissantes.

  • Outils: Ce sont des scripts Python qui permettent aux Grands Modèles de Langage (LLM) d'effectuer des actions externes. Cela peut inclure des recherches sur le web, la génération d'images ou la récupération de données en temps réel (par ex., la météo, les cours de la bourse). Les outils agissent essentiellement comme des plugins pour le LLM, lui permettant de dépasser ses connaissances pré-entraînées en interagissant avec des services externes. Ils sont gérés dans les onglets Workspace de l'interface d'Open WebUI.
  • Fonctions: Ce sont également des scripts Python, mais ils sont conçus pour étendre la plateforme Open WebUI elle-même. Les fonctions peuvent ajouter la prise en charge de nouveaux fournisseurs de modèles d'IA, personnaliser le traitement des messages ou introduire de nouveaux éléments d'interface utilisateur. Elles fonctionnent dans l'environnement d'Open WebUI, offrant des améliorations modulaires et rapides au comportement de la plateforme. Les administrateurs configurent et gèrent généralement les fonctions via le Panneau d'Administration.

Les Outils et les Fonctions peuvent être facilement installés et activés dans l'interface d'Open WebUI, avec une communauté dynamique qui contribue à une variété d'options d'importation.

Post image placeholder
Post image placeholder

Conclusion

Cette configuration distribuée offre des avantages distincts pour des flux de travail d'IA efficaces :

  1. Isolation du Réseau Local: L'ensemble de l'écosystème du serveur Open WebUI et Ollama fonctionne au sein de votre réseau local privé, garantissant qu'il n'y a pas de transmission ou de fuite de données externes, assurant ainsi la confidentialité et la sécurité des données.
  2. Solution Open-Source: Open WebUI et Ollama sont tous deux des projets open-source. Ollama est sous licence MIT, tandis qu'Open WebUI utilise une licence personnalisée avec une clause de protection de la marque. Cela offre une alternative transparente et communautaire aux solutions propriétaires.
  3. Inférence Centralisée: Plusieurs clients Open WebUI pueden conectarse a la misma instancia central de Ollama.
  4. Capacités Améliorées: Open WebUI offre un support intégré pour la Génération Augmentée par Récupération (RAG) et des Outils personnalisables, permettant des fonctionnalités LLM étendues et une interaction dynamique avec des sources de données et des services externes.

Open WebUI combiné à un backend Ollama distant offre une interface robuste et de qualité professionnelle pour le déploiement local de LLM.

Références


Avez-vous apprécié cet article ? L'avez-vous trouvé perspicace ? N'hésitez pas à laisser un commentaire ci-dessous pour partager vos réflexions ou poser des questions. Un compte GitHub est requis pour participer à la discussion.