Licensed to be used in conjunction with basebox, only.
// installation
Inferenz anbinden
Gilt für
Produkt: Server · Zielgruppe: Platform Operator
AISRV auf den Inferenz-Endpunkt richten – gebündeltes vLLM auf demselben Knoten oder ein externer OpenAI-kompatibler Endpunkt auf einem separaten GPU-Host. In beiden Fällen gilt: Nutzer sprechen nie direkt mit der Inferenz; AISRV ruft sie über die OpenAI-kompatible API auf, und der Modellbezeichner muss auf beiden Seiten übereinstimmen.
Variante A: gebündeltes vLLM
Das Umbrella-Chart stellt inference bereit. Sie legen Modell, GPUs und Cache fest:
inference:
enabled: true
resources:
requests: {cpu: 4000m, memory: 32Gi, nvidia.com/gpu: 1} # 2 bei TP=2
limits: {cpu: 8000m, memory: 64Gi, nvidia.com/gpu: 1}
env:
MODEL_ID: "openai/gpt-oss-20b" # HuggingFace-Bezeichner
MAX_INPUT_TOKENS: "32000"
NUM_GPUS: "1" # = Tensor-Parallelismus
SHM_SIZE: "32gb"
HF_HOME: "/data/.cache/huggingface"
HF_TOKEN:
valueFrom:
secretKeyRef: {name: hf-credentials, key: token}
API_KEY:
valueFrom:
secretKeyRef: {name: llm-credentials, key: api-key}
livenessProbe:
httpGet: {path: /health, port: http}
initialDelaySeconds: 300 # Modellladezeit
periodSeconds: 30
readinessProbe:
httpGet: {path: /health, port: http}
initialDelaySeconds: 180
periodSeconds: 10
volumes:
- name: model-cache
persistentVolumeClaim: {claimName: inference-models}
volumeMounts:
- name: model-cache
mountPath: /data/.cache/huggingface
AISRV auf den Dienst richten:
aisrv:
env:
AISRV_LLM_URL: "http://inference:8000"
AISRV_LLM_CHAT_ENDPOINT: "/v1/chat/completions"
AISRV_LLM_PROVIDER: "vLLM"
AISRV_LLM_MODEL: "openai/gpt-oss-20b" # exakt wie MODEL_ID
AISRV_LLM_CONTEXT_SIZE: "32768"
AISRV_LLM_MAX_TOKENS: "8000"
AISRV_LLM_API_KEY:
valueFrom:
secretKeyRef: {name: llm-credentials, key: api-key}
VLLM_API_KEY:
valueFrom:
secretKeyRef: {name: llm-credentials, key: api-key}
Aktuelle Releases leiten VLLM_API_KEY aus dem Provider-Namen vLLM ab; setzen Sie beide Schlüssel auf dasselbe Secret. Weitere Parameter (Temperatur, Top-p, Repetition Penalty, Wortlimit): Modelle konfigurieren. Offline-Betrieb mit vorab geladenen Modellen (HF_HUB_OFFLINE: "1"): Inference Server.
Variante B: externer Endpunkt
Für einen separaten GPU-Host, einen anderen Cluster oder – wo freigegeben – einen externen Anbieter: gebündelte Inferenz abschalten und AISRV auf den Endpunkt richten.
- Credential-Secret anlegen, ohne den Schlüssel in eine Datei zu schreiben:
- Values (
values.external-inference.yaml):inference.enabled: false,AISRV_LLM_URL: "https://inference.customer.internal", Provider, Modell, Kontext, beide API-Key-Einträge aus dem Secret; ragsrv/ragsrv-support im gewünschten Modus. - Rendern und prüfen, dass kein
inference-Deployment enthalten ist. - Installieren mit beiden Values-Dateien.
- Grenze prüfen:
kubectl -n basebox get deployment inference→NotFound.
Anforderungen an den Endpunkt: OpenAI-kompatible API (/v1/models, Chat Completions), API-Zugangsberechtigung, TLS über Hostgrenzen, gleicher Modellbezeichner, passende Kontext-/Ausgabelimits, Health- und Metrik-Endpunkte; nur von AISRV erreichbar. Private CA in den basebox-Workload importieren. Das vollständige, mit basebox 1.7.1 / vLLM 0.15.0 / openai/gpt-oss-20b erprobte Beispiel: Deployment-Topologien.
Modell wählen
Welches Modell auf welche GPU passt, mit Kontext- und Parallelitätsrichtwerten: LLM-Empfehlungen. Was geprüft, empfohlen oder lediglich kompatibel ist: Modelle & Inferenz. Bekannte Eigenheiten (GPT-OSS braucht vLLM 0.10.1+ und Reasoning-Parser; Qwen 3 /no_think; DeepSeek-R1 Thinking-Tokens): Bekannte Probleme.
Tensor-Parallelismus (NUM_GPUS) muss die Attention-Heads teilen – GPT-OSS 120B erlaubt 1, 2, 4, 8. Für zwei GPUs das Paar mit dem schnellsten Peer-Pfad wählen (nvidia-smi topo -m).
Prüfen
Ladevorgang beobachten – beim ersten Start mehrere Minuten, Kaltstart-Toleranz der 2 × H200 etwa 6 Minuten:
Modell aus AISRV heraus prüfen, ohne Zugangsdaten anzuzeigen:
kubectl -n basebox exec deploy/aisrv -c aisrv -- sh -c '
curl --fail --max-time 15 -H "Authorization: Bearer $VLLM_API_KEY" "$AISRV_LLM_URL/v1/models"'
Der zurückgegebene Modellbezeichner muss AISRV_LLM_MODEL entsprechen. Dann in der Oberfläche anmelden, eine Chat-Anfrage stellen und unter Benutzermenü → „Über" prüfen, dass Modell und Kontextgröße stimmen.
Fehlerverhalten testen: Inferenz in einem Wartungsfenster stoppen oder blockieren – basebox zeigt den Fehler an und erholt sich, sobald der Endpunkt wieder bereit ist. Es gibt keinen stillen Rückfall auf ein anderes Modell.
Häufige Fehlerbilder
| Symptom | Ursache | Lösung |
|---|---|---|
Inferenz-Pod Pending |
GPU-Ressource nicht frei oder falscher Ressourcenname | kubectl describe node; Requests prüfen |
| Pod startet, dann Probe-Neustarts | initialDelaySeconds zu kurz für den Modell-Download |
Probes auf 300/180 s; PVC für Modell-Cache |
| „Model not found" in AISRV | AISRV_LLM_MODEL ≠ Bezeichner unter /v1/models |
Exakt übernehmen (Groß-/Kleinschreibung) |
| 401 vom Endpunkt | Schlüssel ungleich | Beide Seiten aus demselben Secret |
| „data transmission failed (SSE)" im Chat | Verbindung AISRV ↔ Inferenz oder ragsrv | aisrv-Logs; Netzwerk/TLS zwischen den Hosts |
| Langer Kontext bricht ab | AISRV_LLM_CONTEXT_SIZE > Runtime-Kontext |
Werte angleichen |
Nächster Schritt: Installation prüfen