Zum Inhalt

// 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_KEY von ragsrv und ragsrv-support muss übereinstimmen; beide aus demselben Kubernetes-Secret beziehen. AISRV spricht ragsrv mit AISRV_RAG_API_KEY (Header X-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; initialDelaySeconds großzügig (60–90 s).
  • LOG_LEVEL im Produktivbetrieb auf info – der Standard trace wü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