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
1 changed files with 43 additions and 25 deletions
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