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
|
```bash
|
||||||
./start-coding-server.sh # GPU 1 (Standard)
|
./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
|
Auf diesem Rechner ist GPU 0 eine T600 mit 4 GB (Display, Bild-Encoder von Strata) und für das Modell zu klein.
|
||||||
und GPU 1 für den KI-Server zu verwenden.
|
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
|
**Wichtig:** Andere GPU-Prozesse auf der verwendeten GPU (ein geladenes Strata, Ollama-Modelle, auf GPU 2 auch die
|
||||||
können VRAM belegen und dazu führen, dass der Server nicht startet. Im Zweifel prüfen:
|
TTS/STT-Dienste) belegen VRAM und können verhindern, dass der Server startet. Im Zweifel prüfen:
|
||||||
```bash
|
```bash
|
||||||
nvidia-smi --query-gpu=index,name,memory.used,memory.free --format=csv
|
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:**
|
**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
|
```bash
|
||||||
docker logs coding_model | tail -50
|
docker logs coding_model | tail -50
|
||||||
# Suche nach: "CUDA out of memory" oder "failed to allocate"
|
# 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?
|
nvidia-smi # GPU sichtbar?
|
||||||
# GPU 1 testen:
|
# GPU 1 testen:
|
||||||
docker run --gpus '"device=1"' --rm nvidia/cuda:12.0-base nvidia-smi
|
docker run --gpus '"device=1"' --rm nvidia/cuda:12.0-base nvidia-smi
|
||||||
# Andere GPU testen:
|
# Die zweite RTX 3090 testen:
|
||||||
GPU_DEVICE=0 ./start-coding-server.sh
|
GPU_DEVICE=2 ./start-coding-server.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Port 8001 bereits belegt:
|
3. Port 8001 bereits belegt:
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,12 @@ Alle wichtigen Änderungen an pi_coder. Format: [Keep a Changelog](https://keepa
|
||||||
|
|
||||||
## [Unreleased]
|
## [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
|
### Hinzugefügt
|
||||||
- `mcp.json` im Repo (MCP-Server `playwright@0.0.83` und `context7-mcp@4.1.1`, Key nur als
|
- `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
|
`${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
|
```bash
|
||||||
./start-coding-server.sh # startet den Container coding_model, wartet bis HTTP bereit (bis 5 min)
|
./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
|
./stop-coding-server.sh
|
||||||
./status-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. |
|
| `-n 16384` | 16K | Maximale Ausgabelänge. |
|
||||||
| `--temp 0.2` | — | Deterministisch — Coder-Rolle. Der Judge-System-Prompt gleicht die etwas höhere Temperatur aus. |
|
| `--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. |
|
| `--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
|
## GPU-Konfiguration und VRAM
|
||||||
|
|
||||||
### Aktuelles Setup (1 GPU, 1 Server)
|
### GPU-Belegung auf diesem Rechner
|
||||||
|
|
||||||
Ein einzelner Container bedient beide Rollen sequenziell:
|
|
||||||
|
|
||||||
```
|
```
|
||||||
GPU 0 NVIDIA T600 → Display / Monitor (nicht für KI genutzt)
|
GPU 0 NVIDIA T600 (4 GB) → Display; Bild-Encoder von Strata (strata-vision, rund 1,1 GB)
|
||||||
GPU 1 RTX 3090 (24 GB) → coding_model (Port 8001, Coder + Judge)
|
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.
|
Strata belegt GPU 1 und 2 nur, solange das Modell geladen ist, und entlädt es nach 10 Minuten ohne Anfrage. Vor
|
||||||
Die Umschaltung zwischen den Rollen erfolgt ausschließlich über den System-Prompt —
|
jedem Laden stoppt `gpu-freigeben.sh` die TTS/STT-Dienste und den Container `coding_model` und entlädt die
|
||||||
der Container läuft ohne Unterbrechung durch.
|
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
|
### 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 |
|
| KV-Cache bei 65 536 Tokens (q4_0) | ~2–3 GB |
|
||||||
| **Summe (262k Kontext)** | **~22–24 GB** |
|
| **Summe (262k Kontext)** | **~22–24 GB** |
|
||||||
|
|
||||||
Bei einer **24-GB-GPU** ist 262k Kontext knapp kalkuliert. Keine anderen Prozesse
|
Bei einer **24-GB-GPU** ist 262k Kontext knapp kalkuliert. Auf der gewählten GPU darf sonst nichts nennenswert
|
||||||
dürfen nennenswert VRAM belegen (z. B. TTS-Dienste, Ollama). Prüfen mit:
|
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
|
```bash
|
||||||
nvidia-smi --query-gpu=index,memory.used,memory.free --format=csv
|
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
|
### Anpassung für andere GPU-Konfigurationen
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Andere GPU verwenden:
|
# Die zweite RTX 3090 statt GPU 1:
|
||||||
GPU_DEVICE=0 ./start-coding-server.sh
|
GPU_DEVICE=2 ./start-coding-server.sh
|
||||||
|
|
||||||
# 2 GPUs für einen Server (sehr großer Kontext):
|
# Beide RTX 3090 für einen Server (größerer Kontext oder größeres Modell) – start-coding-server.sh anpassen:
|
||||||
# start-coding-server.sh anpassen:
|
--gpus '"device=1,2"' \
|
||||||
--gpus '"device=0,1"' \
|
|
||||||
--tensor-split 0.5,0.5 \
|
--tensor-split 0.5,0.5 \
|
||||||
--main-gpu 0 \
|
--main-gpu 0 \
|
||||||
-c 262144
|
-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
|
## Parameter-Tuning-Guide
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue