KI-Server

KI-Server

Ich habe verwende meinem Mac Mini M1 als KI-Server. Die GPU des M1 Chips hat Zugriff auf die kompletten 16 GB RAM, wodurch sich auch etwas größere Modelle effektiv bereitstellen lassen.

Verwendete Software:

  • Homebrew, zur Softwareverwaltung.
  • Ollama, zur Verwaltung von LLMs und Bereitstellung einer API, über welche auf die LLMs zugegriffen werden kann.
  • Colima, zur Bereitstellung einer schlanken VM für Docker.
  • Docker, zur Bereitstellung von Openwebui

Headless-Betrieb einrichten

  • Energieeinstellungen anpassen: Um den Mac Mini effektiv als Server ohne Monitor betreiben zu können, müssen die Energieeinstellungen so angepasst werden, dass er nicht automatisch in den Ruhezustand wechselt.
  • Automatischen Login aktivieren: Außerdem muss der automatische Login aktiviert werden, damit bei einem Neustart alle Dienste gestartet werden.
  • Zugriff über SSH aktivieren: SSH versteckt sich in den MacOS-Einstellungen unter Allgemein -> entfernte Verwaltung.

Softwareinstallation

Die Installation von Homebrew habe ich entsprechend der Dokumentation durchgeführt.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install colima docker docker-compose ollama

Damit Colima und Ollama beim Neustart des Rechners gestartet werden:

brew services start colima
brew services start ollama

Ollama

Damit Ollama die Modelle im Arbeitsspeicher behält und nicht nur auf Anfragen von localhost, sondern aus dem Netzwerk reagiert, müssen in der Konfigurationsdatei ~/Library/LaunchAgents/homebrew.mxcl.ollama.plist zwei Keys hinzugefügt werden:

...
<dict>
	<key>EnvironmentVariables</key>
	<dict>
        ...
        <key>OLLAMA_HOST</key>
        <string>0.0.0.0</string>
        <key>OLLAMA_KEEP_ALIVE</key>
        <string>-1</string>
	</dict>
	<key>KeepAlive</key>
	<true/>
	...
</dict>

Openwebui

Ich verwende docker-compose zur Konfiguration von openwebui. Meine docker-compose.yml:

services:
  openwebui:
    container_name: openwebui
    image: ghcr.io/open-webui/open-webui:main-slim
    volumes:
      - openwebui:/app/backend/data
    ports:
      - "8080:8080"
    extra_hosts:
      - "host.docker.internal:host-gateway"
    restart: unless-stopped

volumes:
  openwebui:
    name: openwebui

Openwebui ist nun auf Port 8080 erreichbar. Unter Connections muss nun die Ollama Api aktiviert und als URL http://host.docker.internal:11434 angegeben werden.

Zuletzt aktualisiert am