Licensed to be used in conjunction with basebox, only.
// installation
Service-Modelle bereitstellen
Gilt für
Produkt: Server · Zielgruppe: Platform Operator
ragsrv, ragsrv-support, OCR, STT und Embeddings auf ihrer GPU (oder im CPU-Modus) hochfahren und ihre Gesundheit bestätigen. Service-Modelle sind die mittlere Schicht: Sie brauchen dedizierte, vorhersehbare GPU-Kapazität – getrennt von der Inferenz-GPU –, laufen aber auch ohne GPU.
Was zu den Service-Modellen gehört
| Dienst | Aufgabe | GPU |
|---|---|---|
| ragsrv | Dokumentaufnahme, Chunking, Embeddings, semantische Suche; PostgreSQL mit pgvector | GPU oder CPU (COMPUTE) |
| ragsrv-support | Modelldienst: Dokumentextraktion, OCR, Embeddings, Sprache-zu-Text | GPU oder CPU |
| OCR-Modelldienst | In manchen Konfigurationen ein separat verwalteter Endpunkt, mit ragsrv-support verbunden | GPU (MIG-Instanz) |
| Sprache-zu-Text (Whisper) | vLLM-kompatibler Whisper-Endpunkt, über AISRV_WHISPER_URL mit AISRV verbunden |
GPU (~8 GB) oder MIG-Instanz |
Welche Dienste als eigene Endpunkte laufen, hängt von der Referenzkonfiguration ab – die 4 × H100 beschreibt OCR- und Whisper-Endpunkte als separat verwaltete Modell-Endpunkte je MIG-Instanz. Komponentenzuordnung: Service-Modelle.
Wo sie laufen: drei Varianten
A – Dedizierte physische GPU (z. B. RTX PRO 6000 in 2 × H200 + RTX PRO 6000): Die Service-Dienste fordern GPU-Ressourcen auf dieser Karte an; die Inferenz-GPUs bleiben unberührt.
B – MIG-Slices (die Validated-Konfigurationen): Jeder Dienst fordert eine MIG-Instanz an:
# 2 × H200: je ein Slice 1g.35gb für GPU-RAG, Extraktion, OCR, STT
resources:
requests: {nvidia.com/mig-1g.35gb: 1}
limits: {nvidia.com/mig-1g.35gb: 1}
# 4 × H100 SXM: je ein Slice 3g.40gb
resources:
requests: {nvidia.com/mig-3g.40gb: 1}
limits: {nvidia.com/mig-3g.40gb: 1}
Voraussetzung: MIG eingerichtet und gemischte Erkennung aktiv – NVIDIA / GPU.
C – CPU-Modus (reiner CPU-Anwendungsserver, keine GPU frei):
ragsrv:
enabled: true
mode: cpu
image:
tag: cpu-latest
env:
COMPUTE: "cpu"
resources:
requests: {cpu: 4000m, memory: 16Gi}
limits: {cpu: 8000m, memory: 32Gi}
ragsrv-support:
enabled: true
mode: cpu
RAG und OCR bleiben funktionsfähig, aber deutlich langsamer. Dimensionieren Sie CPU und RAM nach Dokumentvolumen.
Values für den GPU-Modus (Standard)
ragsrv:
enabled: true
resources:
requests: {cpu: 2000m, memory: 8Gi, nvidia.com/gpu: 1} # oder MIG-Ressource
limits: {cpu: 4000m, memory: 16Gi, nvidia.com/gpu: 1}
env:
COMPUTE: "gpu"
SUPPORT_SERVICE_URL: "http://ragsrv-support:8000"
WEBHOOK_STATE_URL: "http://aisrv:8888/rag/v1/state"
REQUIRE_AUTH: "true"
LOG_LEVEL: "info"
nodeSelector:
nvidia.com/gpu: "true"
ragsrv-support:
resources:
requests: {cpu: 4000m, memory: 16Gi, nvidia.com/gpu: 1} # oder MIG-Ressource
limits: {cpu: 8000m, memory: 32Gi, nvidia.com/gpu: 1}
env:
LOG_LEVEL: "info"
REQUIRE_AUTH: "true"
Wichtig:
- Der
API_KEYvon ragsrv und ragsrv-support muss übereinstimmen; beide aus demselben Kubernetes-Secret beziehen. AISRV spricht ragsrv mitAISRV_RAG_API_KEY(HeaderX-API-KEY) an. - ragsrv-support wird automatisch aktiviert, wenn ragsrv aktiviert ist.
- Modell-Cache für ragsrv-support als PVC unter
/models(20–50 Gi); temporäre Dateien unter/tmp/ragsrv– bei Pods auf verschiedenen Knoten ein RWX-Volume. - Probes: ragsrv-support braucht beim ersten Start Zeit für Modell-Downloads;
initialDelaySecondsgroßzügig (60–90 s). LOG_LEVELim Produktivbetrieb aufinfo– der Standardtracewürde Prompt-Inhalte protokollieren.
Vollständige Parameter: Ragsrv · Ragsrv-Support.
Sprache-zu-Text anbinden
AISRV erreicht den Whisper-Dienst über AISRV_WHISPER_URL (Standard http://localhost:6000/inference; im Cluster der Service des Whisper-Endpunkts) und optional AISRV_WHISPER_API_KEY. Whisper benötigt etwa 8 GB GPU-Speicher und kann eine MIG-Instanz oder – wenn das LLM nicht alle GPUs belegt – eine geteilte GPU nutzen (Standardaufteilung 85 % LLM / 10 % Whisper / 5 % Puffer auf einer 80-GB-GPU). Erkennung der gesprochenen Sprache erfolgt automatisch; Aufnahmen bis zu einer Stunde.
Bereitstellen
Die Service-Modelle sind Teil des Umbrella-Charts: Values ergänzen und helm upgrade --install wie unter basebox installieren ausführen. Danach:
kubectl -n basebox get pods -l 'app.kubernetes.io/name in (ragsrv,ragsrv-support)'
kubectl -n basebox logs -l app.kubernetes.io/name=ragsrv-support --tail=50 -f # Modell-Download beobachten
kubectl -n basebox get cluster ragsrv-db
kubectl -n basebox describe pod -l app.kubernetes.io/name=ragsrv | grep -A5 "nvidia.com/"
Gesundheit prüfen
kubectl -n basebox port-forward svc/ragsrv 3001:3001 &
curl -s http://localhost:3001/health
kubectl -n basebox exec -it <ragsrv-pod> -- nvidia-smi # GPU-Modus: GPU/MIG sichtbar
Funktionsprüfung über die Anwendung: eine App mit Wissensbasis anlegen, ein PDF hochladen, den Verarbeitungsstatus bis „abgeschlossen" beobachten, eine Frage stellen und die Quellen-Chips prüfen; ein gescanntes PDF oder Bild hochladen (OCR); eine kurze Audiodatei transkribieren lassen (STT). Referenzwerte der 2 × H200: 120-seitiges PDF in 28,47 s, 60 Minuten Audio in 31,31 s.
Häufige Fehlerbilder
| Symptom | Ursache | Lösung |
|---|---|---|
ragsrv-support Pending |
Keine passende GPU-/MIG-Ressource frei | kubectl describe node – Ressourcen und Requests vergleichen |
| „Temporary error in name resolution" | k3s-DNS | FAQ |
| Uploads bleiben in Verarbeitung | ragsrv erreicht ragsrv-support nicht, API_KEY ungleich |
Logs beider Dienste; Secret prüfen |
| Verarbeitungsstatus kommt nicht in der Oberfläche an | WEBHOOK_STATE_URL falsch |
Auf http://aisrv:8888/rag/v1/state setzen |
| OCR/STT sehr langsam | CPU-Modus oder geteilte Inferenz-GPU | Dedizierte GPU/MIG vorsehen |
Nächster Schritt: Inferenz anbinden