diff --git a/BEDIENUNGSANLEITUNG.md b/BEDIENUNGSANLEITUNG.md index 9b6998b..6e00f99 100644 --- a/BEDIENUNGSANLEITUNG.md +++ b/BEDIENUNGSANLEITUNG.md @@ -127,14 +127,16 @@ Der Server läuft standardmäßig auf **GPU 1** (überschreibbar): ```bash ./start-coding-server.sh # GPU 1 (Standard) -GPU_DEVICE=0 ./start-coding-server.sh # GPU 0 +GPU_DEVICE=2 ./start-coding-server.sh # die zweite RTX 3090 ``` -Auf einem System mit mehreren GPUs empfiehlt es sich, GPU 0 (Display) freizuhalten -und GPU 1 für den KI-Server zu verwenden. +Auf diesem Rechner ist GPU 0 eine T600 mit 4 GB (Display, Bild-Encoder von Strata) und für das Modell zu klein. +Der Container braucht eine RTX 3090 (GPU 1 oder 2) und läuft nur, solange Strata entladen oder gestoppt ist; lädt +Strata, stoppt `gpu-freigeben.sh` den Container vorher. Belegung und Freigabe: +`~/nvme2n1p7_home/strata-betrieb/BEDIENUNGSANLEITUNG.md`, „GPUs teilen“. -**Wichtig:** Andere GPU-Prozesse (z. B. TTS-Dienste, Ollama) auf der verwendeten GPU -können VRAM belegen und dazu führen, dass der Server nicht startet. Im Zweifel prüfen: +**Wichtig:** Andere GPU-Prozesse auf der verwendeten GPU (ein geladenes Strata, Ollama-Modelle, auf GPU 2 auch die +TTS/STT-Dienste) belegen VRAM und können verhindern, dass der Server startet. Im Zweifel prüfen: ```bash nvidia-smi --query-gpu=index,name,memory.used,memory.free --format=csv ``` @@ -986,7 +988,9 @@ HF_HOME=/korrekter/pfad ./start-coding-server.sh **Ursachen und Lösungen:** -1. Zu wenig VRAM — Container bricht beim Laden ab: +1. Zu wenig VRAM — Container bricht beim Laden ab. Häufigste Ursache: Strata hat das Modell geladen und belegt + GPU 1 und 2 (`~/nvme2n1p7_home/strata-betrieb/scripts/strata.sh status`; entladen mit + `curl -X POST -H "Content-Type: application/json" http://127.0.0.1:9090/unload`). Sonst: ```bash docker logs coding_model | tail -50 # Suche nach: "CUDA out of memory" oder "failed to allocate" @@ -998,8 +1002,8 @@ HF_HOME=/korrekter/pfad ./start-coding-server.sh nvidia-smi # GPU sichtbar? # GPU 1 testen: docker run --gpus '"device=1"' --rm nvidia/cuda:12.0-base nvidia-smi - # Andere GPU testen: - GPU_DEVICE=0 ./start-coding-server.sh + # Die zweite RTX 3090 testen: + GPU_DEVICE=2 ./start-coding-server.sh ``` 3. Port 8001 bereits belegt: diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a1477b..ed1e6b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ Alle wichtigen Änderungen an pi_coder. Format: [Keep a Changelog](https://keepa ## [Unreleased] +### Behoben (16.10.2026, Doku) +- README und BEDIENUNGSANLEITUNG: GPU-Belegung falsch beschrieben („nur GPU 1 für KI“, GPU 0 als Ausweich- oder + Zweit-GPU). Richtig: GPU 0 ist eine T600 mit 4 GB (Display, Bild-Encoder von Strata) und für das Modell zu klein; + Strata belegt GPU 1 und 2; die TTS/STT-Dienste liegen auf GPU 2; der llama.cpp-Container läuft nur ohne geladenes + Strata (Ausweich-GPU `GPU_DEVICE=2`, beide RTX 3090 mit `device=1,2`). + ### Hinzugefügt - `mcp.json` im Repo (MCP-Server `playwright@0.0.83` und `context7-mcp@4.1.1`, Key nur als `${CONTEXT7_API_KEY}`); `deploy-pi-config.sh` verlinkt sie nach `~/.pi/agent/mcp.json`. Tests prüfen feste Versionen diff --git a/README.md b/README.md index 90542a4..508d5e6 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,7 @@ Danach pi im Projektordner starten. Was das Skript genau tut und wie man das Mod ```bash ./start-coding-server.sh # startet den Container coding_model, wartet bis HTTP bereit (bis 5 min) -GPU_DEVICE=0 ./start-coding-server.sh +GPU_DEVICE=2 ./start-coding-server.sh # die zweite RTX 3090 statt GPU 1 ./stop-coding-server.sh ./status-coding-server.sh ``` @@ -121,24 +121,28 @@ Coder und Judge nutzen ihn mit `PI_CODER_MODEL=llama-cpp-single/coding_model pi` | `-n 16384` | 16K | Maximale Ausgabelänge. | | `--temp 0.2` | — | Deterministisch — Coder-Rolle. Der Judge-System-Prompt gleicht die etwas höhere Temperatur aus. | | `--parallel 2` | — | 2 Slots, damit pi agent Folgeanfragen schnell hintereinander stellen kann. | -| `--gpus '"device=1"'` | — | Standard: GPU 1. Überschreibbar: `GPU_DEVICE=0 ./start-coding-server.sh`. | +| `--gpus '"device=1"'` | — | Standard: GPU 1 (RTX 3090). Überschreibbar: `GPU_DEVICE=2 ./start-coding-server.sh` (zweite RTX 3090). GPU 0 (T600, 4 GB) ist für das Modell zu klein. | --- ## GPU-Konfiguration und VRAM -### Aktuelles Setup (1 GPU, 1 Server) - -Ein einzelner Container bedient beide Rollen sequenziell: +### GPU-Belegung auf diesem Rechner ``` -GPU 0 NVIDIA T600 → Display / Monitor (nicht für KI genutzt) -GPU 1 RTX 3090 (24 GB) → coding_model (Port 8001, Coder + Judge) +GPU 0 NVIDIA T600 (4 GB) → Display; Bild-Encoder von Strata (strata-vision, rund 1,1 GB) +GPU 1 RTX 3090 (24 GB) → Strata, erste Hälfte der Schichten (Standardmodell für Coder + Judge) +GPU 2 RTX 3090 (24 GB) → Strata, zweite Hälfte; ohne geladenes Strata: TTS/STT-Dienste (per UUID fest) ``` -Da Coder und Judge nicht gleichzeitig inferieren, gibt es keinen VRAM-Konflikt. -Die Umschaltung zwischen den Rollen erfolgt ausschließlich über den System-Prompt — -der Container läuft ohne Unterbrechung durch. +Strata belegt GPU 1 und 2 nur, solange das Modell geladen ist, und entlädt es nach 10 Minuten ohne Anfrage. Vor +jedem Laden stoppt `gpu-freigeben.sh` die TTS/STT-Dienste und den Container `coding_model` und entlädt die +Ollama-Modelle; nach dem Entladen startet `strata-wache` die Dienste wieder. Details: +`~/nvme2n1p7_home/strata-betrieb/BEDIENUNGSANLEITUNG.md`, „GPUs teilen“. + +**Alternative llama.cpp-Server:** Ein Container `coding_model` (Port 8001) auf GPU 1 bedient beide Rollen +nacheinander; die Umschaltung erfolgt über den System-Prompt. Er läuft nur, solange Strata entladen oder gestoppt ist, +denn Strata braucht GPU 1 und 2 fast voll; lädt Strata, stoppt `gpu-freigeben.sh` den Container. ### VRAM-Abschätzung für das 27B IQ4_XS-Modell @@ -150,8 +154,9 @@ der Container läuft ohne Unterbrechung durch. | KV-Cache bei 65 536 Tokens (q4_0) | ~2–3 GB | | **Summe (262k Kontext)** | **~22–24 GB** | -Bei einer **24-GB-GPU** ist 262k Kontext knapp kalkuliert. Keine anderen Prozesse -dürfen nennenswert VRAM belegen (z. B. TTS-Dienste, Ollama). Prüfen mit: +Bei einer **24-GB-GPU** ist 262k Kontext knapp kalkuliert. Auf der gewählten GPU darf sonst nichts nennenswert +VRAM belegen – vor allem kein geladenes Strata und keine Ollama-Modelle; auf GPU 2 liegen zusätzlich die +TTS/STT-Dienste. Prüfen mit: ```bash nvidia-smi --query-gpu=index,memory.used,memory.free --format=csv ``` @@ -161,17 +166,20 @@ Falls der VRAM nicht reicht: Kontext in `start-coding-server.sh` auf `131072` od ### Anpassung für andere GPU-Konfigurationen ```bash -# Andere GPU verwenden: -GPU_DEVICE=0 ./start-coding-server.sh +# Die zweite RTX 3090 statt GPU 1: +GPU_DEVICE=2 ./start-coding-server.sh -# 2 GPUs für einen Server (sehr großer Kontext): -# start-coding-server.sh anpassen: - --gpus '"device=0,1"' \ +# Beide RTX 3090 für einen Server (größerer Kontext oder größeres Modell) – start-coding-server.sh anpassen: + --gpus '"device=1,2"' \ --tensor-split 0.5,0.5 \ --main-gpu 0 \ -c 262144 ``` +`--main-gpu 0` meint die erste GPU, die der Container sieht, hier also GPU 1. Beide RTX 3090 sind nur frei, wenn +Strata gestoppt ist (`~/nvme2n1p7_home/strata-betrieb/scripts/strata.sh stop`). GPU 0 (T600, 4 GB) ist für das +27B-Modell zu klein und bleibt dem Display und dem Bild-Encoder von Strata vorbehalten. + --- ## Parameter-Tuning-Guide