Kubernetes 1.36: GPU-apparaatstoringen afhandelen zonder oneindig wachten
NVIDIA
Meta
In Kubernetes leidt een GPU-apparaatstoring niet automatisch tot het opnieuw plannen van een pod; in plaats daarvan herstart de kubelet de container op hetzelfde defecte apparaat, wat een crash-loop veroorzaakt. Het artikel demonstreert dit scenario op een testomgeving en laat zien hoe nieuwe mechanismen in Kubernetes 1.36, zoals apparaat-gezondheidsstatus en taints, deze cyclus kunnen doorbreken.
Het artikel benadrukt dat Kubernetes standaard omgaat met apparaatstoringen door simpelweg de container opnieuw te starten, wat onvoldoende is voor GPU-versnelde workloads. Onder verwijzing naar een onderzoek van Meta naar het trainen van Llama 3 405B, merkt het op dat clusters met duizenden GPU's frequente onderbrekingen ervaren, vaak als gevolg van GPU- en geheugenstoringen. De auteur legt de beperkingen uit van de klassieke device plugin-benadering, die alleen het aantal toewijsbare apparaten verlaagt, en vergelijkt deze met het nieuwere DRA-model (Dynamic Resource Allocation) dat objectgebaseerd apparaatbeheer biedt. Op een testcluster simuleert de auteur een GPU-storing door een apparaat hot te verwijderen van de PCIe-bus, wat resulteert in Xid 79. De pod komt vervolgens in een crash loop terecht en wordt opnieuw gestart op het defecte apparaat, en de scheduler plant hem niet opnieuw in omdat hij nog steeds aan het knooppunt is gebonden. Kubernetes 1.36 introduceert verschillende bètafuncties om dit aan te pakken: apparaatgezondheidsstatus in de podstatus, apparaat-taints en -toleraties, en partitioneerbare apparaten. Met behulp hiervan kan het cluster de storing herkennen en de pod op een gezonde GPU inplannen, waardoor eindeloze herstarts worden vermeden.
Bron: Habr — хаб ML —
origineel
