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) を設定し、該当するサービスに容認を適用することで、テイントが設定されたノードにそれらのサービスをスケジュールできるようにする次の手順が必要です。
- GPU ワークロードが GPU ノードのみにスケジュールされるようにするために、GPU ノードにテイントを設定します。
kubectl taint nodes <your-node-name> nvidia.com/gpu=Exists:NoExecute
- GPU ノードにラベルを付けます。 または、ノードにすでに指定されている既存のラベルを使用します。
kubectl label nodes <your-node-name> raster=GPU
- [System] で、[RasterProcessingGPU (DPServer)] サービスのサービス配置ポリシーを、ノードのアフィニティと容認を使用するように編集します。
"podPlacementPolicy": { "tolerations": [{ "effect": "NoExecute", "key": "nvidia.com/gpu", "operator": "Exists" }], "nodeAffinity": { "requiredDuringSchedulingIgnoredDuringExecution": { "nodeSelectorTerms": [{ "matchExpressions": [{ "key": "raster", "operator": "In", "values": ["GPU"] }] }] } } }
- GPU ポッドが GPU ノードで実行されていることを確認します。
ラスター解析ツールを使用し、組織で画像をホストできるようになります。 また、ラスター解析の調整に関する推奨事項もご参照ください。