Kubernetes は、サービスからジョブ、ステートフル アプリケーションまで、あらゆる種類のコンテナ化されたワークロードに最適です。しかし、GPU を必要とする AI や機械学習のワークロードはどうでしょうか?はい、Kubernetes もそれらをサポートしていますが、微妙な違いがたくさんあります。
この記事では、スケジューリング、オーバーサブスクリプションとタイムシェアリング、セキュリティ/分離など、Kubernetes が GPU をサポートする方法について説明します。さらに、3 つの主要なパブリック クラウド プロバイダーがこれらの機能をどのようにサポートしているか、また GPU ノードが GPU ワークロードでのみ使用されるようにする方法についても説明します。 デバイスプラグインまず、Kubernetes が GPU をサポートするメカニズムを見てみましょう。 Kubernetes 自体は GPU について何も知りません。代わりに、デバイス プラグインと呼ばれる拡張メカニズムを提供します。デバイス プラグイン フレームワークを使用すると、サードパーティは GPU、InfiniBand アダプターなど、ノードで利用可能な追加機能をアドバタイズできます。 デバイス プラグインは通常デーモンとして実装され、ノードの kubelet に自身を登録し、ノード上でスケジュール可能なリソースを kubelet にアドバタイズします。 Kubelet はこの情報を API サーバーに渡し、Kubernetes スケジューラはこの情報を使用して、各コンテナのリソースを要求するワークロードをノードにスケジュールします。 写真 ワークロードからGPUを要求するKubernetes が GPU を認識する仕組みがわかったので、コンテナが GPU を要求する仕組みについて説明しましょう。ワークロードは、CPU やメモリを要求するのと同様の方法で GPU を要求できますが、いくつかの違いがあります。 Kubernetes がネイティブにサポートする CPU とは異なり、GPU (および一般的なデバイス プラグイン) は制限のみをサポートします (リクエストを提供することはできますが、その場合は制限も提供する必要があり、2 つの値は等しくなければなりません)。制限も整数である必要があります (小数制限は許可されません)。 ポッドの例を見てみましょう。この場合、ポッドは 1 つの Nvidia GPU を要求しています。スケジューラは、まだ割り当てられていない利用可能な Nvidia GPU を持つノードを見つけ、そのノードにポッドを配置します。 オーバーサブスクリプションとタイムシェアリングCPU タイムシェアリングは、linuxcgroups を使用して CNI によってネイティブに処理されます。これはリクエストと制限によって影響を受けます。CPU リクエストと制限を設定する方法 (および制限を回避する必要がある理由) に関する記事を参照してください。 GPU タイムシェアリングは、次の 2 つのメカニズムを通じて Nvidia GPU でサポートされています。
このアプローチでは GPU をオーバーサブスクライブできる可能性がありますが、CPU とは異なり、Completely Fair Scheduler (CFS) や cgroup の優先順位がないため、ワークロード間で時間を均等に分割することしかできず、ワークロードが不足する可能性があるため注意が必要です。 セキュリティ/隔離CPU とは異なり、現在 GPU 内にはプロセスやメモリの分離はありません。つまり、GPU にスケジュールされたすべてのワークロードはメモリを共有するため、相互に信頼するワークロード間でのみ GPU を共有する必要があります。 GPUノードの作成GPU をリクエストする方法がわかったので、GPU を備えたノードを作成する方法とデバイス プラグインをインストールする方法が気になるかもしれません。これは、使用する Kubernetes プロバイダーによって異なります。以下では、3 つの主要なものについて説明します。 アマゾンAWS は、任意の EC2 GPU インスタンスタイプを使用したノードグループの作成をサポートしています。次の 2 つのオプションから選択できます。
アズールAzure は、ノード プールを作成するための 3 つのオプションをサポートしています。
グーグルGKE は、ノード プールを作成するための 2 つのオプションをサポートしています。
GPU ノードを非 GPU ワークロードから保護する最後に、GPU ノードを作成したので、クラスターで実行されている非 GPU ワークロードからこれらのノードを分離する必要があります。これは、汚染と寛容を通じて実現できます。ノード プールとグループを作成するときに、テイントを適用する必要があります。クラスターに非 GPU ノードプールがある場合、GKE はこれを自動的に実行します。他のプロバイダーはそうしませんので、必ずこれを実行する必要があります。 ポッドの場合、テイントを GPU ノードにスケジュールできるように、テイントに対する許容を提供する必要があります。次の例では、「nvidia.com/gpu」という名前のテイントの許容値を作成し、このポッドを nvidia GPU ノードで実行できるようにします。 AI と機械学習のワークロードが拡大し続ける中、より高価なクラウド プロバイダー独自のオプションではなく、Kubernetes での実行を検討していただければ幸いです。 Kubernetes で GPU ワークロードを実行してみたことはありますか?何がうまくいきましたか?どのような問題に遭遇しましたか? |
<<: Elasticsearch - 分散検索および分析エンジン
世界で最も人気のあるブログ テンプレートである WordPress の最大の利点は、ユーザーがニーズ...
最近の A5 の投稿から判断すると、検索エンジンでのキーワードのランキングを向上させる方法に関する記...
台湾サーバー、台湾独立サーバー。このサイトでは、広い帯域幅、大きなトラフィック、低価格の台湾サーバー...
エッジコンピューティングとクラウドコンピューティングの主な違いは何ですか?コンピューティングでは、「...
bandwagonhost が初めて KVM 仮想 VPS のベータ版をリリースしたとき、E3v5 ...
インターネットの発展は個人のウェブサイトと切り離せないものですが、インターネットの発展はもはや個人の...
この記事では主に、さまざまなオーケストレーション システムのネットワーク モジュールの管理を統合し、...
今年のアリババグループの行動をみると、頻繁であると言える。ショッピング検索の開始だけでも業界に衝撃を...
最近、Baidu はサイト全体の HTTPS セキュリティ暗号化サービスを有効にし、従来の HTTP...
はじめに: 今日私が共有したいのは、SEO の技術的な手段ではなく、他の手段でウェブサイトのトラフィ...
現在、アプリプロモーションのチャネルはますます増えています。WAPサイトやサードパーティのアプリに加...
多くの友人が、検索エンジン最適化を行うにはどのようなスキルが必要かについて話し合っています。この質問...
実は私は、貴金属関係の会社でインターネットとは関係のない技術系の仕事をしている技術者です。興味があっ...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスウェブサイトのBaidu...
クラウド コンピューティング テクノロジーの急速な発展により、ますます多くのアプリケーションがクラウ...