GPUs auf Hikube
Hikube bietet Zugang zu NVIDIA-Beschleunigern über GPU Passthrough, was die Ausführung von Workloads ermöglicht, die Hardware-Beschleunigung benötigen. GPUs sind für zwei Arten von Workloads verfügbar: Virtuelle Maschinen und Kubernetes-Pods.
🎯 Nutzungsarten
GPU mit Virtuellen Maschinen
GPUs können direkt an virtuelle Maschinen über GPU Passthrough VFIO-PCI angehängt werden und bieten einen vollständigen und exklusiven Zugang zum Beschleuniger.
Anwendungsfälle:
- Anwendungen, die vollständige Kontrolle über den GPU erfordern
- Legacy- oder spezialisierte Workloads
- Isolierte Entwicklungsumgebungen
- Grafische Anwendungen (Rendering, CAD)
GPU mit Kubernetes
GPUs können Kubernetes-Workern zugewiesen und dann über Resource Requests/Limits den Pods zugeordnet werden.
Anwendungsfälle:
- Containerisierte KI/ML-Workloads
- Automatische Skalierung von GPU-Anwendungen
- GPU-Ressourcenteilung zwischen Anwendungen
- Komplexe Orchestrierung paralleler Jobs
🖥️ Verfügbare Hardware
Hikube bietet mehrere NVIDIA-GPUs:
NVIDIA L40S
- Architektur: Ada Lovelace
- Speicher: 48 GB GDDR6 mit ECC
- Ressourcenname:
nvidia.com/AD102GL_L40S - Typischer Einsatz: Generative KI, Inferenz, Echtzeit-Rendering
NVIDIA A100 80 GB (PCIe / SXM4)
- Architektur: Ampere
- Speicher: 80 GB HBM2e mit ECC
- Ressourcennamen:
nvidia.com/GA100_A100_PCIE_80GB,nvidia.com/GA100_A100_SXM4_80GB - Typischer Einsatz: ML-Training, Hochleistungsrechnen (die SXM4-Variante unterstützt NVLink für Multi-GPU)
NVIDIA RTX PRO 6000 Blackwell
- Architektur: Blackwell (Server Edition)
- Speicher: 96 GB GDDR7 mit ECC
- Ressourcenname:
nvidia.com/GB202GL_RTX_PRO_6000_BLACKWELL_SERVER_EDITION - Typischer Einsatz: LLM, Transformers, intensives Rechnen
🏗️ Architektur
GPU-Zuweisung mit VMs
GPU-Zuweisung mit Kubernetes
⚙️ Konfiguration
GPU auf VM
apiVersion: apps.cozystack.io/v1alpha1
kind: VMInstance
spec:
runStrategy: Always
instanceType: "u1.xlarge"
gpus:
- name: "nvidia.com/AD102GL_L40S"
disks:
- name: vm-gpu-disk
GPU auf Kubernetes Worker
apiVersion: apps.cozystack.io/v1alpha1
kind: Kubernetes
spec:
nodeGroups:
gpu-workers:
instanceType: "u1.xlarge"
gpus:
- name: "nvidia.com/AD102GL_L40S"
addons:
gpuOperator:
enabled: true
GPU in Kubernetes-Pod
apiVersion: v1
kind: Pod
spec:
containers:
- name: gpu-app
image: nvidia/cuda:12.0-runtime-ubuntu20.04
resources:
limits:
nvidia.com/gpu: 1
📋 Vergleich der Ansätze
| Aspekt | GPU auf VM | GPU auf Kubernetes |
|---|---|---|
| Isolation | Vollständig (1 GPU = 1 VM) | Geteilt (orchestriert) |
| Leistung | Nativ (Passthrough) | Nativ (Device Plugin) |
| Verwaltung | Manuell | Automatisiert |
| Skalierung | Nur vertikal | Horizontal + Vertikal |
| Teilung | Nein | Ja (zwischen Pods) |
| Komplexität | Einfach | Komplex |
🚀 Nächste Schritte
Für Virtuelle Maschinen
- GPU-VM erstellen → Praktische Anleitung
- API-Referenz → Vollständige Konfiguration
Für Kubernetes
- GPU-Cluster → Worker mit GPU
- Erweiterte Konfiguration → GPU-NodeGroups