Veröffentlicht am
OpenWebUI

Sichern Sie Ihre Daten, entfesseln Sie die KI: Open WebUI lokal mit externer Ollama-GPU bereitstellen

Post image placeholder

Einführung

Open WebUI (ehemals Ollama WebUI) ist eine erweiterbare, selbst gehostete Benutzeroberfläche, die vollständig offline betrieben werden kann. Sie unterstützt verschiedene LLM-Runner, einschließlich Ollama und OpenAI-kompatible APIs, und bietet eine ChatGPT-ähnliche Erfahrung mit integrierten RAG-Funktionen (Retrieval-Augmented Generation). Ihre Architektur ermöglicht die Trennung der Benutzeroberfläche (Frontend) und der Inferenz-Engine (Backend), was eine optimierte Ressourcenzuweisung ermöglicht.

In diesem Beitrag führen wir eine Split-Architektur-Bereitstellung durch. Wir werden das Open WebUI-Frontend in einem Docker-Container über WSL (Ubuntu) ausführen und es mit einem externen PC im lokalen Netzwerk verbinden, der für die Inferenz vorgesehen ist und mit einer NVIDIA GeForce RTX 3060 ausgestattet ist, auf der Ollama läuft. Für dieses Setup haben wir das mistral-nemo:latest LLM und das embeddinggemma:latest Einbettungsmodell auf dem Ollama-Server verwendet.

Laufzeitumgebung

Die Evaluierung nutzt ein verteiltes Computing-Setup, um den Inferenzdurchsatz zu maximieren und gleichzeitig ein leichtes Frontend beizubehalten:

  1. Frontend-Host: Ein Host, auf dem Ubuntu 22.04 über WSL 2 ausgeführt wird. Dieser hostet den Open WebUI-Docker-Container.
  2. Inferenz-Server: Externe Workstation im lokalen Netzwerk (LAN), ausgestattet mit einer NVIDIA GeForce RTX 3060, auf der der Ollama-Dienst ausgeführt wird.
  3. Netzwerk: Gigabit-LAN, das beide Maschinen verbindet.

Serverkonfiguration: Externe Ollama-Instanz

Vor der Bereitstellung des Frontends muss die externe Ollama-Instanz so konfiguriert werden, dass sie entfernte Verbindungen akzeptiert. Standardmäßig bindet sich Ollama an 127.0.0.1.

  1. Umgebungsvariable festlegen: Konfigurieren Sie auf der externen Maschine (Server) die Variable OLLAMA_HOST, um auf allen Schnittstellen zu lauschen.

    • Linux: export OLLAMA_HOST=0.0.0.0
  2. Firewall-Konfiguration: Stellen Sie sicher, dass der Port 11434 (Standard-Ollama-Port) auf der Firewall des Servers geöffnet ist, um eingehenden TCP-Verkehr vom Frontend-Host zuzulassen.

  3. Dienst neu starten: Starten Sie die Ollama-Anwendung neu, um die Änderungen zu übernehmen.

Installationsanweisungen: Open WebUI

Führen Sie auf dem Frontend-Host (WSL) die folgenden Schritte aus, um Open WebUI bereitzustellen:

  1. Docker-Installation überprüfen: Stellen Sie sicher, dass Docker in Ihrer WSL-Distribution ausgeführt wird.

    docker --version
    
  2. Run-Befehl ausführen: Stellen Sie den Container mit der spezifischen Umgebungsvariable OLLAMA_BASE_URL bereit, um auf Ihren externen Server zu verweisen. Ersetzen Sie <REMOTE_GPU_IP> durch die statische IP-Adresse Ihrer externen Maschine, die den Ollama-Server hostet.

    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: Mappt den Host-Port 3000 auf den Container-Port 8080.
    • OLLAMA_BASE_URL: Leitet API-Aufrufe an die entfernte GPU-Instanz weiter.
    • -v open-webui:/app/backend/data: Speichert Benutzerdaten und Chatverlauf dauerhaft.

Zugriff auf Open WebUI über den Browser

Sobald der Container aktiv ist, greifen Sie über den Browser auf Ihrem Host auf die Benutzeroberfläche zu. Navigieren Sie zu http://localhost:3000.

Der erste Benutzer, der sich anmeldet, erhält automatisch Admin-Rechte. Erstellen Sie ein Konto mit einer E-Mail-Adresse und einem Passwort, um fortzufahren. Die Benutzeroberfläche fungiert als Gateway und leitet alle rechenintensiven Generierungsaufgaben an die entfernte NVIDIA GeForce RTX 3060 weiter.

Post image placeholder

Beispiel-Abfrageausführung

Wir haben die Latenz und die Reaktionsintegration mit der folgenden Abfrage getestet:

Abfrage: "Fassen Sie die Unterschiede in der CUDA-Kernarchitektur zwischen Ampere und Hopper in einer Tabelle mit maximal 5 Zeilen zusammen."

Prozess:

  1. Eingabe: Der Benutzer gibt die Abfrage in Open WebUI (WSL) ein.
  2. Weiterleitung: Der Docker-Container leitet die Anfrage über HTTP an <REMOTE_GPU_IP>:11434 weiter.
  3. Inferenz: Die entfernte NVIDIA GeForce RTX 3060 verarbeitet die Eingabeaufforderung.
  4. Ausgabe: Der Token-Stream wird an die Benutzeroberfläche zurückgegeben.

Die Antwort wurde mit ~45 Token/Sekunde generiert (abhängig vom GPU-VRAM und der Anzahl der Modellparameter), ohne Last auf dem lokalen WSL-Host.

Post image placeholder

Überprüfung und Verkabelung der Ollama-Verbindung

Gemäß den Open WebUI-Dokumenten verbindet sich die App automatisch mit Ollama, wenn sie es erreichen kann. So überprüfen und verwalten Sie die Verbindung:

  1. Zu den Verbindungseinstellungen navigieren: Gehen Sie zu Admin-Einstellungen → Verbindungen → Ollama und klicken Sie auf das Verwalten-Symbol (Schraubenschlüssel).
  2. Endpunkt bestätigen: Stellen Sie im Verwaltungsbildschirm sicher, dass die Basis-URL auf Ihren Ollama-Host verweist (z. B. http://<REMOTE_GPU_IP>:11434).
  3. Modelle ziehen und überprüfen:
    • Vom Verwaltungs-Panel: Sie können Modelle direkt von diesem Bildschirm herunterladen.
    • Aus dem Chat: Eine schnellere Möglichkeit besteht darin, einen Modellnamen (z. B. mistral-nemo:latest) in den Modellauswähler des Chats einzugeben. Wenn das Modell nicht lokal verfügbar ist, fordert Open WebUI Sie auf, es über Ollama herunterzuladen.
  4. Validieren: Nach einem erfolgreichen Verbindungstest sollte der Modellauswähler in der Chat-Seitenleiste mit den auf Ihrem entfernten Ollama-Server verfügbaren Modellen gefüllt sein. Wenn nicht, überprüfen Sie die Basis-URL und die Firewall-Einstellungen erneut.
Post image placeholder

RAG: Dokumente hinzufügen

Open WebUI bietet integrierte RAG-Unterstützung. Wir haben dies durch das Hochladen von technischer Dokumentation evaluiert:

  1. Dokumente hochladen:

    • Klicken Sie auf den Tab Workspace (oder auf das +-Symbol in der Chat-Leiste).
    • Wählen Sie Dokumente.
    • Laden Sie PDF- oder Textdateien hoch. Das System vektorisiert den Inhalt automatisch.
  2. Sammlungsverwaltung:

    • Gruppieren Sie Dokumente in einer Sammlung (z. B. "GPU-Handbücher").
    • Aktivieren Sie in einem neuen Chat die Sammlung, indem Sie # eingeben und den Sammlungsnamen auswählen.
    Post image placeholder
    Post image placeholder
    Post image placeholder

Konfigurieren von RAG-Einbettungen

Für effektives RAG ermöglicht Open WebUI die Angabe des Einbettungsmodells. Bei Verwendung eines entfernten Ollama-Servers wird der Einbettungsprozess ebenfalls auf diesem Server ausgeführt, wodurch die gesamte rechenintensive Verarbeitung vom Client-Rechner ferngehalten wird.

  1. Zu den Admin-Einstellungen navigieren: Greifen Sie auf das Admin-Panel zu, indem Sie auf Ihr Profil oben links klicken und "Einstellungen" auswählen.
  2. Dokumenteinstellungen auswählen: Gehen Sie im Admin-Panel zum Tab "Dokumente".
  3. Einbettungsmodell konfigurieren:
    • Stellen Sie die Einbettungsmodell-Engine auf "Ollama" ein.
    • Wählen Sie Ihr gewünschtes Einbettungsmodell aus dem Dropdown-Menü Einbettungsmodell. Ein empfohlenes Modell ist embeddinggemma:latest. Wenn Sie es nicht haben, können Sie es über Ollama ziehen.
  4. RAG-Parameter anpassen (optional): Sie können den RAG-Prozess auch mit den folgenden Einstellungen feinabstimmen:
    • Chunk-Größe: Die Größe der Textblöcke, in die Dokumente aufgeteilt werden.
    • Chunk-Überlappung: Die Anzahl der Token, die sich zwischen den Blöcken überschneiden.
    • Top K: Die Anzahl der abgerufenen Blöcke, die in den Kontext aufgenommen werden sollen.

Durch die Konfiguration dieser Einstellungen stellen Sie sicher, dass der entfernte Ollama-Server den gesamten RAG-Workflow von der Einbettung bis zur Generierung übernimmt.

Post image placeholder

Erweiterung der Funktionen mit Tools und Functions

Open WebUI bietet robuste Mechanismen zur Erweiterung seiner Funktionen durch Tools und Functions, die hochgradig angepasste und leistungsstarke KI-Interaktionen ermöglichen.

  • Tools: Dies sind Python-Skripte, die große Sprachmodelle (LLMs) befähigen, externe Aktionen durchzuführen. Dies kann Websuchen, Bilderzeugung oder das Abrufen von Echtzeitdaten (z. B. Wetter, Aktienkurse) umfassen. Tools fungieren im Wesentlichen als Plugins für das LLM und ermöglichen es ihm, über sein vortrainiertes Wissen hinauszugehen, indem es mit externen Diensten interagiert. Sie werden in den Workspace-Tabs der Open WebUI-Oberfläche verwaltet.
  • Functions: Dies sind ebenfalls Python-Skripte, die jedoch dazu dienen, die Open WebUI-Plattform selbst zu erweitern. Functions können Unterstützung für neue KI-Modellanbieter hinzufügen, die Nachrichtenverarbeitung anpassen oder neue Benutzeroberflächenelemente einführen. Sie arbeiten in der Open WebUI-Umgebung und bieten modulare und schnelle Erweiterungen des Plattformverhaltens. Administratoren konfigurieren und verwalten Funktionen normalerweise über das Admin-Panel.

Sowohl Tools als auch Functions können einfach in der Open WebUI-Oberfläche installiert und aktiviert werden, wobei eine lebendige Community eine Vielzahl von Importoptionen beisteuert.

Post image placeholder
Post image placeholder

Fazit

Dieses verteilte Setup bietet deutliche Vorteile für effiziente KI-Workflows:

  1. Lokale Netzwerkisolation: Das gesamte Ökosystem des Open WebUI- und Ollama-Servers arbeitet in Ihrem privaten lokalen Netzwerk, was garantiert, dass keine externen Datenübertragungen oder -lecks auftreten, und somit die Privatsphäre und Sicherheit der Daten gewährleistet.
  2. Open-Source-Lösung: Sowohl Open WebUI als auch Ollama sind Open-Source-Projekte. Ollama ist unter der MIT-Lizenz lizenziert, während Open WebUI eine benutzerdefinierte Lizenz mit einer Markenschutzklausel verwendet. Dies bietet eine transparente und von der Community getragene Alternative zu proprietären Lösungen.
  3. Zentralisierte Inferenz: Mehrere Open WebUI-Clients können sich mit derselben zentralen Ollama-Instanz verbinden.
  4. Erweiterte Funktionen: Open WebUI bietet integrierte Unterstützung für Retrieval-Augmented Generation (RAG) und anpassbare Tools, was erweiterte LLM-Funktionen und eine dynamische Interaktion mit externen Datenquellen und Diensten ermöglicht.

Open WebUI in Kombination mit einem entfernten Ollama-Backend bietet eine robuste, produktionsreife Schnittstelle für die lokale LLM-Bereitstellung.

Referenzen


Hat Ihnen dieser Beitrag gefallen? Fanden Sie ihn aufschlussreich? Hinterlassen Sie gerne einen Kommentar, um Ihre Gedanken zu teilen oder Fragen zu stellen. Ein GitHub-Konto ist erforderlich, um an der Diskussion teilzunehmen.

Weiterlesen

Ähnliche Beiträge