docs: GPU-Belegung richtiggestellt (T600 zu klein, Strata auf GPU 1+2, TTS auf GPU 2)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
5ff55dda36
commit
b097bdeed8
3 changed files with 43 additions and 25 deletions
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
42
README.md
42
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
|
||||
|
|
|
|||
Loading…
Reference in a new issue