docs: Startup-Kommandos vollständig dokumentieren (llama.cpp, Ollama, Gateway)
README: neuer Abschnitt „Starten — alle Szenarien" mit allen Optionen für cloud/hybrid/local-dev, llama.cpp-ENV-Tabelle, Ollama-Sequenz und make-Targets. BEDIENUNGSANLEITUNG: § 4.5 (llama.cpp) um direkten Script-Aufruf, docker logs, vollständige ENV-Tabelle erweitert; neues § 4.6 (Ollama) mit systemctl/serve, pull/list/ps, .env-Snippet und Reasoning-Hinweis. TOC und Sachregister aktualisiert. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
d8b861db26
commit
d9cb5ffc7e
2 changed files with 193 additions and 15 deletions
|
|
@ -35,7 +35,7 @@ funktioniert trotzdem, die Ausgabe ist dann unformatiert.
|
|||
1. [Was ist dieses System?](#1-was-ist-dieses-system)
|
||||
2. [Installation und Einrichtung](#2-installation-und-einrichtung)
|
||||
3. [Betriebsprofile wählen](#3-betriebsprofile-wählen)
|
||||
4. [Starten und Stoppen](#4-starten-und-stoppen)
|
||||
4. [Starten und Stoppen](#4-starten-und-stoppen) — [4.5 llama.cpp](#45-llamacpp-server-für-profil-hybridlocal-dev) · [4.6 Ollama](#46-ollama-alternative-zu-llamacpp-kein-docker-nötig)
|
||||
|
||||
**Bedienung**
|
||||
5. [Das System benutzen](#5-das-system-benutzen)
|
||||
|
|
@ -416,32 +416,121 @@ Port ändern: `PORT=8005 make run` (einmalig) oder `PORT=8005` in `.env` (dauerh
|
|||
|
||||
### 4.5 llama.cpp-Server (für Profil `hybrid`/`local-dev`)
|
||||
|
||||
**Voraussetzungen:** Docker mit NVIDIA-Container-Toolkit, GPU mit ausreichend VRAM
|
||||
(Qwen3-35B-Q4: ~22 GB; Qwen3-8B-Q4: ~5 GB).
|
||||
|
||||
```bash
|
||||
make llm-up # startet Docker-Container (Default: GPU 1, Port 8001, Alias va_llm)
|
||||
make llm-status # Container- + HTTP-Status prüfen
|
||||
make llm-down # stoppen
|
||||
# Starten (Default: GPU 1, Port 8001, Modell qwen3-35B-Uncensored):
|
||||
make llm-up
|
||||
|
||||
# Status prüfen (warten bis „Modell bereit" und HTTP 200 erscheinen):
|
||||
make llm-status
|
||||
|
||||
# Logs live beobachten:
|
||||
docker logs -f va_llm
|
||||
|
||||
# Stoppen:
|
||||
make llm-down
|
||||
```
|
||||
|
||||
Parameter überschreibbar per ENV:
|
||||
**Mit anderen Parametern** — ENV-Variable vor dem Befehl setzen:
|
||||
|
||||
| Variable | Default | Bedeutung |
|
||||
|----------|---------|-----------|
|
||||
| `HOST_PORT` | `8001` | Host-Port |
|
||||
| `GPU_DEVICE` | `1` | GPU-Index |
|
||||
| `MODEL_REL_PATH` | `models/qwen3/Qwen3.6-35B-A3B-Uncensored-...Q4_K_M.gguf` | Modellpfad relativ zu `HF_HOME` |
|
||||
| `HF_HOME` | `~/nvme2n1p7_home/huggingface` | Modell-Sammlung |
|
||||
| `MODEL_ALIAS` | `va_llm` | API-Modellname |
|
||||
| `CONTAINER_NAME` | `va_llm` | Docker-Containername |
|
||||
|
||||
Beispiel (andere GPU + anderes Modell):
|
||||
```bash
|
||||
GPU_DEVICE=2 MODEL_REL_PATH=models/qwen3/anderes-modell.gguf \
|
||||
# Andere GPU:
|
||||
GPU_DEVICE=0 make llm-up
|
||||
|
||||
# Anderen Port:
|
||||
HOST_PORT=8101 make llm-up
|
||||
|
||||
# Anderes Modell auf anderer GPU:
|
||||
GPU_DEVICE=2 HOST_PORT=8102 MODEL_REL_PATH="models/qwen3/anderes-modell.gguf" make llm-up
|
||||
|
||||
# Direkt (ohne make — identisch, aber zeigt alle Parameter):
|
||||
bash scripts/llm-server/start-llm-server.sh
|
||||
GPU_DEVICE=0 bash scripts/llm-server/start-llm-server.sh
|
||||
GPU_DEVICE=2 HOST_PORT=8102 MODEL_REL_PATH="models/qwen3/anderes-modell.gguf" \
|
||||
bash scripts/llm-server/start-llm-server.sh
|
||||
```
|
||||
|
||||
Alle überschreibbaren ENV-Variablen:
|
||||
|
||||
| Variable | Default | Bedeutung |
|
||||
|----------|---------|-----------|
|
||||
| `GPU_DEVICE` | `1` | GPU-Index (0-basiert, `nvidia-smi` zeigt verfügbare GPUs) |
|
||||
| `HOST_PORT` | `8001` | Host-Port des LLM-Servers |
|
||||
| `MODEL_REL_PATH` | `models/qwen3/Qwen3.6-35B-A3B-Uncensored-...Q4_K_M.gguf` | Modellpfad relativ zu `HF_HOME` |
|
||||
| `HF_HOME` | `~/nvme2n1p7_home/huggingface` | Modell-Basisverzeichnis (als Volume eingebunden) |
|
||||
| `MODEL_ALIAS` | `va_llm` | Modellname in der OpenAI-API (→ `LOCAL_LLM_MODEL` in `.env`) |
|
||||
| `CONTAINER_NAME` | `va_llm` | Docker-Containername |
|
||||
| `IMAGE` | `ghcr.io/ggml-org/llama.cpp:server-cuda` | Docker-Image |
|
||||
|
||||
> ⚠️ Wird `HOST_PORT` oder `MODEL_ALIAS` geändert, müssen `LOCAL_LLM_BASE_URL`
|
||||
> und `LOCAL_LLM_MODEL` in `.env` entsprechend angepasst werden.
|
||||
|
||||
Das Skript wartet bis zu 300 Sekunden auf einen HTTP-200-Response und bricht mit
|
||||
Fehler ab, wenn das Modell nicht startet — kein stilles Fehlschlagen.
|
||||
|
||||
---
|
||||
|
||||
### 4.6 Ollama (Alternative zu llama.cpp, kein Docker nötig)
|
||||
|
||||
Ollama verwaltet seinen Serverprozess selbst und braucht kein Docker. Es eignet sich
|
||||
besonders für schnellen Einstieg, CPU-Betrieb und kleinere Modelle.
|
||||
|
||||
**Installation** (falls noch nicht installiert):
|
||||
```bash
|
||||
curl -fsSL https://ollama.com/install.sh | sh
|
||||
```
|
||||
|
||||
**Dienst starten:**
|
||||
```bash
|
||||
# empfohlen — systemd verwaltet den Prozess:
|
||||
sudo systemctl start ollama
|
||||
sudo systemctl enable ollama # automatisch bei Boot starten
|
||||
sudo systemctl status ollama # Status prüfen
|
||||
|
||||
# alternativ — manuell im Vordergrund (Strg+C stoppt):
|
||||
ollama serve
|
||||
# mit anderem Port (Default: 11434):
|
||||
OLLAMA_HOST=0.0.0.0:11435 ollama serve
|
||||
```
|
||||
|
||||
**Modell herunterladen** (einmalig):
|
||||
```bash
|
||||
ollama pull qwen3:30b-a3b # ~20 GB, Thinking deaktiviert (empfohlen für Voice)
|
||||
ollama pull qwen3:8b # ~5 GB, CPU-tauglich, weniger Qualität
|
||||
ollama pull qwen3:14b # ~9 GB, guter Kompromiss
|
||||
```
|
||||
|
||||
**Status prüfen:**
|
||||
```bash
|
||||
ollama list # installierte Modelle mit Größe und Änderungsdatum
|
||||
ollama ps # gerade aktive Modelle mit VRAM-Verbrauch
|
||||
```
|
||||
|
||||
**Modell entfernen** (Speicher freigeben):
|
||||
```bash
|
||||
ollama rm qwen3:8b
|
||||
```
|
||||
|
||||
**Gateway für Ollama konfigurieren** (in `.env`):
|
||||
```bash
|
||||
LOCAL_LLM_BASE_URL=http://127.0.0.1:11434/v1
|
||||
LOCAL_LLM_API_KEY=ollama
|
||||
LOCAL_LLM_MODEL=qwen3:30b-a3b # exakter Name aus 'ollama list'
|
||||
```
|
||||
|
||||
**Gateway starten:**
|
||||
```bash
|
||||
VA_PROFILE=hybrid make run # STT/TTS cloud, LLM via Ollama
|
||||
VA_PROFILE=local-dev make run # alles lokal (STT/TTS in-process, LLM via Ollama)
|
||||
```
|
||||
|
||||
> **Hinweis Reasoning:** `LOCAL_LLM_DISABLE_REASONING=true` (Gateway-Standard) schickt
|
||||
> `enable_thinking: false` an den Server — Ollama ignoriert dieses Feld. Um Reasoning
|
||||
> zu deaktivieren, den Modell-Tag ohne Thinking-Suffix wählen (`qwen3:30b-a3b` statt
|
||||
> `qwen3:30b-a3b:thinking`).
|
||||
|
||||
---
|
||||
|
||||
## 5. Das System benutzen
|
||||
|
|
@ -1804,10 +1893,11 @@ in `app/dependencies.py` + Implementierung in `app/providers/`. → [Architektur
|
|||
| Kontingent (Kosten-Bremse) | § 9.3 |
|
||||
| llama.cpp | § 4.5, § 3.2, § 3.3 |
|
||||
| local-dev-Profil | § 3.3 |
|
||||
| Ollama starten | § 4.6 |
|
||||
| Metriken / Monitoring | § 9.2, Anhang B.1 |
|
||||
| Mikrofon → Audio-Geräte | § 6.7 |
|
||||
| Notfall-Erkennung | § 10 |
|
||||
| Ollama | § 3.3, § 3.2 |
|
||||
| Ollama | § 3.2, § 3.3, **§ 4.6** |
|
||||
| piper (TTS) | § 6.5.2, Anhang C |
|
||||
| Pipeline (Architektur) | § 1.3 |
|
||||
| Profile (cloud/hybrid/local-dev) | § 3 |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue