🚀 Setup-Guide: Lokales 72GB Offline KI-Cluster Diese Dokumentation beschreibt die Einrichtung eines vollständig lokalen, offline-fähigen KI-Clusters mit llama.cpp. Das System bündelt den VRAM von bis zu 5 Rechnern (dynamisch zuschaltbar) und stellt eine OpenAI-kompatible API für KI-Agenten zur Verfügung.
🏗 Architektur-Übersicht Master-Node (Linux, RX 7900 - 24GB): Steuert das Cluster, lädt das Modell und stellt den API-Endpunkt für die Agenten bereit. (IP-Beispiel: 10.0.0.1) Worker 1 (Windows, RTX 5070 Ti - 16GB): Tag & Nacht verfügbar. (IP: 10.0.0.2) Worker 2 (Linux, RTX 3080 - 8GB): Tag & Nacht verfügbar. (IP: 10.0.0.3) Nacht-Worker 3 (z.B. User1 - 8GB): Nur nachts verfügbar. (IP: 10.0.0.4) Nacht-Worker 4 (z.B. User2 - 16GB): Nur nachts verfügbar. (IP: 10.0.0.5) 🛠 Phase 1: Vorbereitungen im Netzwerk Statische IPs: Vergib im Router (z. B. FritzBox) für alle 5 PCs eine feste IPv4-Adresse, damit die Skripte immer funktionieren. Llama.cpp herunterladen: Lade für jeden PC die passende kompilierte Release-Version von llama.cpp (CUDA für Nvidia, ROCm/Vulkan für AMD) herunter und entpacke sie. Netcat installieren (Nur Master): Führe auf dem Master-Linux-PC sudo apt-get install netcat aus. Dies wird für den dynamischen Netzwerk-Scan benötigt. 💻 Phase 2: Einrichtung der Worker-Knoten Auf den 4 Helfer-PCs muss lediglich ein Skript gestartet werden, das die Grafikkarte im Netzwerk zur Verfügung stellt.
Für Windows-Worker (PowerShell) Erstelle auf den Windows-Rechnern eine Datei namens start_worker.ps1. Passe den Pfad und den jeweiligen Port (z.B. 50052) an.
''' powershell Get-ChildItem -Path C:\ -Filter "rpc-server.exe" -Recurse -ErrorAction SilentlyContinue | Select-Object DirectoryName ''' powershell $LlamaPath = "C:\Path\To\llama-b8871-bin-win-cuda-13.1-x64" $Port = 50052 # Für jeden PC einen eigenen Port wählen (50052, 50054, etc.)
Write-Host "Starte Llama RPC Worker auf Port $Port..." -ForegroundColor Cyan Set-Location -Path $LlamaPath
$RpcFile = Get-ChildItem -Filter "rpc-server.exe*" -File -ErrorAction SilentlyContinue | Select-Object -First 1
if ($RpcFile) { Write-Host "Datei gefunden: $($RpcFile.Name) - Starte Server..." -ForegroundColor Green & ".$($RpcFile.Name)" -H 0.0.0.0 -p $Port } else { Write-Host "Fehler: llama-rpc-server nicht gefunden im Ordner $LlamaPath!" -ForegroundColor Red Write-Host "=============================================" -ForegroundColor Yellow Write-Host "Das ist der tatsächliche Inhalt dieses Ordners:" -ForegroundColor Yellow Get-ChildItem | Select-Object Name exit 1 } ´´´ pwsh .\start_worker.ps1
Tipp: Ggf. musst du Skripte in Windows erlauben, indem du einmalig Set-ExecutionPolicy RemoteSigned -Scope CurrentUser in einer als Administrator geöffneten PowerShell ausführst.
Für Linux-Worker (Bash)
Erstelle auf dem Linux-Rechner eine Datei namens start_worker.sh und mache sie ausführbar (chmod +x start_worker.sh).
cd /path/to/your/llama.cpp
cmake -B build -DGGML_RPC=ON
cmake --build --config Release
bash start_worker.sh
bash
#!/bin/bash
# start_worker.sh
LLAMA_DIR="/path/to/your/llama.cpp/build/bin"
PORT=50053
echo "Starte Llama RPC Worker auf Port $PORT..."
cd "$LLAMA_DIR" || exit 1
./llama-rpc-server -H 0.0.0.0 -p $PORT
🧠 Phase 3: Der Master-Knoten (Auto-Discovery)
Dieses Skript läuft auf dem Master (RX 7900). Es prüft dynamisch, ob die Nacht-PCs erreichbar sind, und baut das Cluster entsprechend auf.
Erstelle start_master.sh und mache es ausführbar (chmod +x start_master.sh):
cd /path/to/your/llama.cpp
cmake -B build -DGGML_RPC=ON
cmake --build --config Release
cd /build/bin/rpc-server
bash start_master.sh
bash
#!/bin/bash
# start_master.sh
LLAMA_DIR="/path/to/your/llama.cpp/build/bin"
MODEL_PATH="/path/to/your/modelle/dein-70b-modell.gguf"
# 1. Definieren der verfügbaren Rechner (IPs anpassen!)
WORKER_1="10.0.0.2:50052" # RTX 5070 Ti (Tag)
WORKER_2="10.0.0.3:50053" # RTX 3080 (Tag)
WORKER_NIGHT_1="10.0.0.4:50054" # User1 PC (Nacht)
WORKER_NIGHT_2="10.0.0.5:50055" # User2 PC (Nacht)
RPC_NODES=""
# Hilfsfunktion zum sauberen Anfügen an den String
add_node() {
if [ -z "$RPC_NODES" ]; then
RPC_NODES="$1"
else
RPC_NODES="$RPC_NODES,$1"
fi
}
echo "🔍 Prüfe verfügbare Worker im Netzwerk..."
# Tag-PCs sind immer an
add_node "$WORKER_1"
add_node "$WORKER_2"
# Prüfe Nacht-PC 1 (Timeout 1 Sekunde)
if nc -z -w 1 10.0.0.4 50054 >/dev/null 2>&1; then
echo "[+] Nacht-Worker 1 gefunden! Füge 16GB VRAM hinzu."
add_node "$WORKER_NIGHT_1"
fi
# Prüfe Nacht-PC 2
if nc -z -w 1 10.0.0.5 50055 >/dev/null 2>&1; then
echo "[+] Nacht-Worker 2 gefunden! Füge 8GB VRAM hinzu."
add_node "$WORKER_NIGHT_2"
fi
echo "========================================="
echo "🚀 Starte Master Server"
echo "Eingebundene Knoten: $RPC_NODES"
echo "========================================="
cd "$LLAMA_DIR" || exit 1
./llama-server \
-m "/path/to/your/model/Astraeus.gguf" \
-c 32768 \
-ngl 99 \
--rpc "$RPC_NODES" \
--host 0.0.0.0 \
--port 8081
🤖 Phase 4: Agenten-Anbindung
Da der `llama-server` eine vollständig OpenAI-kompatible API bereitstellt, kannst du nun jeden beliebigen Agenten (z. B. OpenClaw, OpenDevin, AutoGPT) direkt mit deinem lokalen Cluster verbinden.
Konfiguriere deinen Agenten einfach mit folgenden Parametern:
* **API Base URL / Endpoint:** `http://10.0.0.1:8081/v1` (IP deines Master-PCs)
* **API Key:** `sk-irrelevant` (Kann ein beliebiger Text sein, llama.cpp ignoriert ihn)
* **Model Name:** `llama-3.3-70b` (Je nachdem, was du geladen hast)
🕹 Phase 5: Täglicher Workflow
Der Start deines Systems ist nun extrem strukturiert und einfach:
Worker einschalten: Starte die start_worker-Skripte auf den Helfer-PCs (abends inkl. User1s/User2s PC).
Master hochfahren: Führe start_master.sh auf dem Haupt-Linux-PC aus. Es erkennt sofort, wer wach ist, und spannt das KI-Netzwerk auf.
Agenten starten: Starte dein bevorzugtes Agenten-Framework (Docker, Python-Skript etc.).
Genießen: Lass deinen Agenten autonom und komplett offline mit der Power von bis zu 72 GB VRAM arbeiten!
Den 3070 Ti reparieren
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
git checkout 3003c82f
mkdir build && cd build
cmake .. -DGGML_CUDA=ON -DGGML_RPC=ON -DCMAKE_BUILD_TYPE=Release
make -j$(nproc) llama-rpc-server