- Authors

- Name
- Phillip Pham
- @ddppham
Ray auf Kubernetes: Distributed OS for AI
TL;DR
- Kubernetes + Ray bilden zusammen das „Distributed OS for AI": K8s härtet Produktion, Ray skaliert Python-Workloads über viele GPUs.
- Self-Hosting von LLMs ist oft günstiger als APIs — aber unterausgelastete GPUs vernichten den Vorteil.
- Ray ist die Unified Compute Engine für Training, Data, Batch-/Online-Inference und Post-Training — Python-nativ mit Actors und Tasks.
- KubeRay bringt Ray als Operator auf den Cluster: deklarativ, mandantenfähig, mit Rollouts.
- Ray lohnt sich ab Skalierung — einfache Workloads brauchen ihn nicht.
Warum Kubernetes allein nicht reicht
Kubernetes ist der Open-Source-Standard für Plattform-Builder: Container, Multi-Tenancy, deklarative Infrastruktur, Rollouts. Ray ist der Standard für AI/ML-Practitioner: ein Workload auf hunderte oder tausende Acceleratoren skalieren, heterogen, mit dynamischem Autoscaling.
| Kubernetes | Ray | |
|---|---|---|
| Fokus | Container-Orchestrierung, Produktion | Python-native Compute-Skalierung |
| Stärke | Infra, Modularität, Isolation | Ein Workload, heterogene Cluster |
| Granularität | Jobs und Container | Prozesse, Actors, Functions |
Gemeinsam: härtend und zuverlässig (K8s) plus performant und skalierbar (Ray).
Das Kosten-Problem: Hardware, die brennt
Self-Hosting von LLMs ist gegenüber Cloud-APIs oft klar günstiger. In der Praxis unterauslasten viele Organisationen ihre GPUs — bei den Preisen heißt das: Geld verbrennen.
AI ist kein Use Case in einer Box. Es näht Data-ETL, Curation, Online-/Offline-Inference und Post-Training über Teams mit unterschiedlicher Expertise zusammen. Ohne Compute-Engine, die Auslastung und Elastizität versteht, bleibt teure Hardware idle.
Ray als Unified AI Compute Engine
- Ray Core: Verteilt Python-Code (Tasks, Actors, Futures, Ressourcen-Anforderungen).
- Ray Libraries: Training, Data, Batch-/Online-Inference, Reinforcement Learning, Post-Training.
- Python-nativ: Normaler Code plus Dekorator → verteilter Actor.
- Ein Tooling-Erlebnis über den ML-Lebenszyklus statt fünf getrennte Orchestrierer.
# Konzept: Actor statt manueller Prozess-Orchestrierung
import ray
@ray.remote(num_gpus=1)
class InferenceWorker:
def __init__(self, model_id: str):
self.model = load_model(model_id)
def generate(self, prompt: str) -> str:
return self.model.generate(prompt)
workers = [InferenceWorker.remote('org/model') for _ in range(4)]
refs = [w.generate.remote(p) for w, p in zip(workers, prompts)]
results = ray.get(refs)
Kunden-Beispiel aus dem Ökosystem: Modell-Entwicklung von einer Woche auf einen Tag verkürzt — durch Vereinheitlichung auf Ray (nicht durch „mehr YAML").
KubeRay: Ray auf dem Cluster betreiben
apiVersion: ray.io/v1
kind: RayCluster
metadata:
name: ai-compute
spec:
rayVersion: '2.34.0'
headGroupSpec:
serviceType: ClusterIP
rayStartParams:
dashboard-host: '0.0.0.0'
template:
spec:
containers:
- name: ray-head
image: rayproject/ray:2.34.0-gpu
resources:
limits:
cpu: '4'
memory: 16Gi
workerGroupSpecs:
- groupName: gpu-workers
replicas: 2
minReplicas: 0
maxReplicas: 8
template:
spec:
containers:
- name: ray-worker
image: rayproject/ray:2.34.0-gpu
resources:
limits:
nvidia.com/gpu: 1
Kubernetes entfernt kaputte Nodes und provisioniert Compute. Ray arbeitet workload-bewusst mit dem, was da ist — inklusive Autoscaling nach App-Bedarf statt nur nach CPU-Metriken.
Messbare Hebel (Orientierungswerte)
Berichte zu optimierten Ray-Runtimes (je nach Vendor/Setup) nennen unter anderem:
| Hebel | Wirkung (berichtete Größenordnung) |
|---|---|
| Batch-Inference (Ray Data) | spürbar günstiger als naive Open-Source-Pfade |
| Elastisches Training | World-Size bei Spot-Eviction anpassen statt GPUs idle |
| Spot + Checkpointing | Recovery ohne kompletten Compute-Verlust |
Zahlen sind setup-abhängig. Das Muster zählt: Elastizität und Auslastung schlagen blindes „mehr GPUs".
Managed-Plattformen ergänzen das oft mit Image Streaming, Secondary Boot Disks und GPU-Fallback-Klassen — Open Source bleibt die portable Basis.
Wann Ray — und wann nicht
| Situation | Empfehlung |
|---|---|
| Ein Modell, ein Service, wenig Traffic | Kubernetes + vLLM oft genug |
| Hunderte GPUs, RL, Post-Training | Ray + KubeRay |
| Training und Inference teilen sich denselben Pool | Ray + K8s gemeinsam |
| Nur Data-ETL auf CPU | oft ohne Ray lösbar |
Mehr zum Gesamtstack: Open-Source-AI-Stack auf Kubernetes. Mehr zu Accelerator-Features: Kubernetes AI at Scale.
Lessons Learned
- Unterauslastung ist der stille Kostenfresser — Self-Hosting ohne Autoscaling lohnt selten.
- Die Tool-Landschaft wechselt schnell — kontinuierlich evaluieren, nicht einmalig festnageln.
- Organisation zählt: Data, ML und Platform müssen denselben Compute-Pfad teilen.
- Accelerator-Verfügbarkeit ist real — Fallback-Strategien (andere GPU-Klasse) einplanen.
- Ray ist kein Default für jeden PoC — Komplexität erst ab Skalierung rechtfertigen.
Fazit
Ray auf Kubernetes ist die unabhängige Basis für produktive AI-Workloads: Produktion und Isolation von K8s, Python-Skalierung und Auslastung von Ray. Wer GPUs besitzt, braucht beides — sonst arbeitet die Hardware nicht, sie brennt Budget.
FAQ
Machen Ray und Kubernetes dasselbe? Nein. K8s orchestriert Container und Jobs; Ray orchestriert Prozesse innerhalb des Workloads.
Brauche ich Ray Turbo / Vendor-Runtime? Open-Source-Ray reicht zum Start. Vendor-Optimierungen können Batch und Spot weiter drücken — optional, nicht Pflicht für Architektur.
Was ist KubeRay? Der Kubernetes-Operator, der RayCluster und RayJobs deklarativ betreibt.
Verwandte Artikel
📖 Verwandte Artikel
Weitere interessante Beiträge zu ähnlichen Themen
AI auf Kubernetes starten: Plattform statt Roh-Cluster
AI auf Kubernetes starten: Warum K8s flexibel genug ist — und warum ohne Plattform-Schicht (Scheduling, Serving, APIs) Training und Inference scheitern.
GPU in Kubernetes: CDI, Sharing und DRA
GPUs unter Kubernetes verstehen: CDI statt NVIDIA-Docker, Time-Slicing vs. MPS vs. MIG und DRA als flexible Alternative zu den Device-Plugins.
Kubernetes AI at Scale: DRA, LLMD und Inference
Kubernetes wird Accelerator Native: DRA, LLMD, Disaggregated Serving und Inference Gateway für produktive GenAI-Workloads — was Plattform-Teams jetzt brauchen.
LLM-D: Verteilte Inference auf Kubernetes
LLM-D verteilt Inference über Kubernetes: Prefill/Decode trennen, KV-Cache nutzen, intelligent routen — niedrigere Latenz und bessere GPU-Kosten.
Open-Source-AI-Stack auf Kubernetes
Open-Source-AI-Stack auf Kubernetes: Ray, PyTorch und vLLM als unabhängige Architektur — Schichten, Rollen und wann Self-Hosting sich lohnt.
GPU Kubernetes Workloads: Guide für AI/ML Workloads (2026)
GPU Workloads auf Kubernetes: AI, ML und Deep Learning skalieren mit NVIDIA-GPUs, CUDA und Kubernetes-GPU-Scheduling. Praxis-Handbuch für Enterprise.
Kubernetes AI & Machine Learning: ML-Plattform einrichten (2026)
Kubernetes als AI/ML-Plattform: GPU-Cluster, MLOps-Pipelines mit Kubeflow, Model Serving mit TensorFlow & PyTorch. Praxis-Handbuch für Enterprise-Teams.
Agentic AI auf Kubernetes: Was in der Praxis zählt
Agentic AI auf Kubernetes: Warum K8s das Substrat bleibt, welche Schichten (Inference bis Agents) zählen und wo Sandbox, Scheduling und Kosten knifflig werden.