Fraktionierte GPUs in Kubernetes

Auf Geschwindigkeit ausgelegt: ~ 10 ms Latenz, auch unter Last
Unglaublich schnelle Methode zum Erstellen, Verfolgen und Bereitstellen Ihrer Modelle!
- Verarbeitet mehr als 350 RPS auf nur 1 vCPU — kein Tuning erforderlich
- Produktionsbereit mit vollem Unternehmenssupport
Überblick
Die GenAI-Revolution hat in der gesamten Branche zu einem Anstieg der GPU-Nachfrage geführt. Unternehmen wollen LLMs in großen Mengen schulen, optimieren und einsetzen. Dies hat zu einer geringeren Verfügbarkeit und einem daraus resultierenden Anstieg der Preise für die neuesten GPUs geführt. Unternehmen, die Workloads in der Public Cloud ausführen, litten unter hohen Preisen und zunehmender Unsicherheit hinsichtlich der GPU-Verfügbarkeit.
Diese neuen Realitäten machen es absolut wichtig, verfügbare GPUs maximal nutzen zu können. Die Partitionierung oder gemeinsame Nutzung einer einzelnen GPUs durch mehrere Prozesse hilft dabei. Die Implementierung auf Kubernetes bietet eine erfolgreiche Kombination, bei der wir Autoscaling und einen ausgeklügelten Scheduler zur Optimierung der GPU-Auslastung erhalten.
Optionen für die gemeinsame Nutzung von GPUs
Um eine einzelne GPU mit mehreren Workloads in Kubernetes zu teilen, haben wir folgende Optionen:
MIG
Mit der Multi-Instance GPU (MIG) können GPUs, die auf der NVIDIA Ampere-Architektur basieren (wie NVIDIA A100), sicher in separate GPU-Instances für CUDA-Anwendungen partitioniert werden. Jede Partition ist vollständig speicher- und rechenisoliert und bietet vorhersehbaren Durchsatz und Latenz
Eine einzelne NVIDIA A100-GPU kann in bis zu 7 isolierte GPU-Instanzen partitioniert werden. Jede Partition wird der Software, die auf einem partitionierten Knoten ausgeführt wird, als separate GPU angezeigt. Andere MIG-unterstützte GPUs und die Anzahl der unterstützten Partitionen sind aufgeführt hier.
Mehr Infos hier
Profis
- Vollständige Rechen- und Speicherisolierung, die vorhersehbare Latenz und Durchsatz unterstützt
Nvidia-Geräte-Pluginfür Kubernetes hat native Unterstützung für MIG
Nachteile
- Wird nur für aktuelle GPUs wie A100, H100, A30 unterstützt. Dies schränkt letztendlich die Möglichkeiten ein, die man hat
- Die Anzahl der Partitionen hat für die meisten Architekturen eine feste Grenze von 7. Das ist ziemlich weniger, wenn wir kleinere Workloads mit begrenzten Speicher- und Rechenanforderungen ausführen
Zeitaufteilung
Time Slicing ermöglicht die Planung mehrerer Workloads auf derselben GPU. Die Rechenzeit wird von mehreren Prozessen gemeinsam genutzt, und die Prozesse sind zeitlich verschachtelt. Ein Clusteradministrator kann einen Cluster oder Knoten so konfigurieren, dass eine bestimmte Anzahl von Replikaten/GPU angekündigt wird, wodurch die Knoten entsprechend neu konfiguriert werden.
Profis
- Keine Obergrenze für die Anzahl der Pods, die sich eine einzelne GPU teilen können
- Kann mit älteren Versionen von NVIDIA-GPUs arbeiten
Nachteile
- Keine Speicher- oder Fehlerisolierung. Es gibt keine eingebaute Methode, die sicherstellt, dass ein Workload den ihm zugewiesenen Arbeitsspeicher nicht überschreitet.
- Time Slicing bietet allen laufenden Prozessen die gleiche Zeit. Ein Pod, auf dem mehrere Prozesse ausgeführt werden, kann die CPU viel stärker beanspruchen als beabsichtigt
Es gibt andere Optionen für die gemeinsame Nutzung von GPUs wie MPS und vGPUs, aber sie haben keine native Unterstützung in `nvidia-device-plugin` und wir werden sie hier nicht besprechen.
Demo zum Zeitschneiden
Lassen Sie uns einen kurzen Überblick darüber geben, wie wir Timesharing in Azure Kubernetes Service nutzen können. Wir beginnen mit einem bereits vorhandenen Kubernetes-Cluster.
1. Fügen Sie dem Cluster einen GPU-fähigen Knotenpool hinzu
Dadurch wird dem vorhandenen AKS-Cluster mit einer einzigen NVIDIA T4-GPU ein neuer Knotenpool mit einem einzelnen Knoten hinzugefügt. Dies kann überprüft werden, indem Sie Folgendes ausführen
2. Installieren Sie den GPU-Operator
3. Sobald der Operator installiert ist, erstellen wir eine Time-Slicing-Konfiguration und konfigurieren den gesamten Cluster so, dass die GPU-Ressourcen aufgeteilt werden, sofern verfügbar
4. Stellen Sie sicher, dass der vorhandene Knoten erfolgreich neu konfiguriert wurde
5. Wir können die Konfiguration überprüfen, indem wir eine Bereitstellung mit 4 Replikaten erstellen, von denen jedes nach 2 nvidia.com/gpu-Ressourcen fragt
Stellen Sie sicher, dass sich alle Pods dieser Bereitstellung auf demselben bereits erstellten Knoten befinden und er sie aufnehmen konnte.
Fazit
Die GenAI-Revolution hat die Landschaft der GPU-Anforderungen verändert und die verantwortungsvolle Nutzung von Ressourcen wichtiger denn je gemacht. Beide hier skizzierten Ansätze weisen Mängel auf, aber im aktuellen Szenario führt kein Weg daran vorbei, die Verantwortung für die GPU-Kosten zu übernehmen.
TrueFoundry AI Gateway bietet eine Latenz von ~3—4 ms, verarbeitet mehr als 350 RPS auf einer vCPU, skaliert problemlos horizontal und ist produktionsbereit, während LiteLM unter einer hohen Latenz leidet, mit moderaten RPS zu kämpfen hat, keine integrierte Skalierung hat und sich am besten für leichte Workloads oder Prototyp-Workloads eignet.
Der schnellste Weg, deine KI zu entwickeln, zu steuern und zu skalieren















.png)




.png)






.webp)

.webp)



