Kubernetes 1.36:GPUデバイス障害を無限Pendingなしで処理する

NVIDIANVIDIA MetaMeta
Kubernetesでは、GPUデバイスの障害が発生しても、自動的にPodの再スケジューリングにはつながらず、代わりにkubeletが同じ故障デバイス上でコンテナを再起動し、クラッシュループを引き起こします。この記事では、テストベッド上でこのシナリオを示し、デバイスのヘルスステータスやテイントなどのKubernetes 1.36の新メカニズムがどのようにしてこのサイクルを断ち切るかを説明します。
この記事は、Kubernetesがデフォルトでデバイスの障害を単にコンテナを再起動するだけで処理するため、GPUアクセラレーションを要するワークロードには不十分であることを強調しています。Llama 3 405Bのトレーニングに関するMetaの研究を引用し、数千のGPUを持つクラスタでは、GPUやメモリの障害による中断が頻繁に発生すると述べています。著者は、従来のデバイスプラグインアプローチの限界(割り当て可能な数を減らすだけであること)を説明し、オブジェクトベースのデバイス管理を提供する新しいDRA(Dynamic Resource Allocation)モデルと対比しています。テストクラスタでは、著者はPCIeバスからデバイスをホットリムーブすることでGPU障害をシミュレートし、その結果Xid 79が発生します。その後、ポッドはクラッシュループに入り、故障したデバイス上で再起動を繰り返し、スケジューラはノードにバインドされたままのため再スケジュールしません。Kubernetes 1.36では、この問題に対処するためのいくつかのベータ機能が導入されています。ポッドステータスでのデバイスヘルスステータス、デバイスのテイントとトレランス、パーティショナブルデバイスです。これらを使用することで、クラスタは障害を認識し、ポッドを健全なGPUにスケジュールして、無限の再起動を回避できます。
出典: Habr — хаб ML — 原文
関連記事 ↓
新着ニュース