Kubernetes には、デバイス プラグインを使用して、クラスター内の異なるノード間で GPU (グラフィカル プロセシング ユニット) を管理するためのサポートが含まれています。
ArcGIS Enterprise on Kubernetes では、クラスター内の GPU ノードを有効にするためのデバイス プラグインを実装して、ラスター解析やディープ ラーニングなどに関連する GIS ワークフローを最適化することができます。 デフォルトでは、ラスター解析などの機能は、CPU モードで実行されるように構成されますが、これらのリソースが利用可能な場合は、柔軟に GPU モードで実行されるようにすることもできます。
クラスター内での GPU の利用可能性と使用率を考慮することは任意です。この場合、追加のコストが発生します。
GPU を有効にするには、Kubernetes 向け NVIDIA デバイス プラグインが必要です。 Kubernetes 向け NVIDIA デバイス プラグインは、クラスターのノードごとの GPU 数の表示、GPU 対応コンテナーの実行、GPU の正常性の追跡を可能にする DaemonSet です。
注意:
このリリースの ArcGIS Enterprise on Kubernetes は NVIDIA GPU でのみサポートされます。
GPU の有効化
組織で GPU を有効にする手順には、ユーザーの環境および基本設定に固有の次の手順が含まれます。
- ラスター解析を構成する手順、または GPU 対応ノードを使用する別の機能を構成する手順を完了します。
- インスタンスにデバイス プラグインがインストールされているかどうかを確認します。
多くのクラウド環境には、GPU ノードが事前に構成されています。 デバイス プラグインがインストールされていない場合は、Kubernetes 向け NVIDIA デバイス プラグインのドキュメントで詳細およびインストール手順をご確認ください。 オンプレミスでデプロイした場合は、管理者が、クラスター内の各ノードで GPU を有効にする必要があります。
- 組織の GIS ワークフローで GPU 対応ノードを利用するには、GPU への要求と制限を設定します。
- GPU ワークロードを GPU ノードのみで実行するには、必要に応じて、ノードのアフィニティと容認を構成します。
GPU への要求と制限の設定
ArcGIS Enterprise Administrator API Directory を使用して、次の各デプロイメント用に GPU への要求と制限を設定します。
- system-rasteranalysistools-gpsyncserver (トレーニング モデルに使用)
- system-rasterprocessinggpu-dpserver (処理に使用)
- ArcGIS Enterprise Administrator API Directory に管理者としてサイン インします。
- [System] > [Deployments] の順にクリックします。
- system-rasteranalysistools-gpsyncserver デプロイメントを見つけて、その対応する ID をクリックします。
- [Edit Deployment] をクリックします。
- 配置の JSON で、配置の resources セクションと customResources パラメーターを見つけます。
"containers": [ { "name": "main-container", "resources": { "memoryMin": "4Gi", "memoryMax": "8Gi", "cpuMin": "0.125", "customResources": { "limits":{"nvidia.com/gpu": "1"}, "requests":{"nvidia.com/gpu": "1"} }, "cpuMax": "2" },
- リストされている各コンテナーの customResources パラメーターを、GPU への要求と制限を含むように更新します。
- [Submit] をクリックして、デプロイメントへの編集内容を保存します。
- system-rasterprocessinggpu-dpserver デプロイメントについて手順を繰り返します。
システム デプロイメントを編集する方法については、Administrator Directory API のドキュメントをご参照ください。
ノードのアフィニティと容認の構成
GPU ノードでは、CPU と GPU 両方のワークロードを実行できます。 GPU ノードで CPU ワークロードの実行が許可されている場合、これ以上の手順は必要ありません。 ただし、GPU ワークロードが GPU ノードのみで実行されるようにするには、管理者が追加の手順を実行して、ノードのアフィニティと容認を構成する必要があります。 これを行うには、ノードにテイント (taint) を設定し、該当するサービスに容認を適用することで、テイントが設定されたノードにそれらのサービスをスケジュールできるようにする次の手順が必要です。
注意:
ArcGIS Enterprise Manager から、NoSchedule と PreferNoSchedule の効果を選択することができます。 このリリースでは、ノードで現在実行中のワークフローに混乱が生じる可能性があるため、NoExecute の効果は使用できません。 ただし、管理 API からノードのアフィニティと容認を構成すれば、NoExecute を適用することができます。
- GPU ワークロードが GPU ノードのみにスケジュールされるようにするために、GPU ノードにテイントを設定します。
kubectl taint nodes <your-node-name> nvidia.com/gpu=Exists:NoSchedule
- GPU ノードにラベルを付けます。 または、ノードにすでに指定されている既存のラベルを使用します。
kubectl label nodes <your-node-name> raster=GPU
- 管理者として ArcGIS Enterprise Manager にサイン インします。
- サイドバーの [サービス] ボタンをクリックします。
- [システム サービス] をクリックして、[RasterProcessingGPU] サービスを選択します。
- [ポッドの配置] タブをクリックして、サービスのポッドの配置を管理します。
- サービスのポッドを確実に GPU ノードにスケジュールするノード アフィニティ ルールを適用するには、次の情報を [ノードのアフィニティ] セクションに入力して [追加] をクリックします。
- [Type] - Required
- [Key] - raster
- [Operator] - In
- [Value] - GPU
- テイントされたノード上でポッドを実行可能にするトライレイションを適用するには、[トライレイション] セクションに以下の情報を入力して [追加] をクリックします。
- [Effect] - No schedule
- [Key] - nvidia.com/gpu
- [Operator] - Exists
- [保存] をクリックします。
- GPU ポッドが GPU ノードで実行されていることを確認します。
ラスター解析ツールを使用し、組織で画像をホストできるようになります。 また、ラスター解析の調整に関する推奨事項もご参照ください。