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 リソースへのアクセスの構成
ノートブック サービス用に GPU を有効化する場合は、「ランタイムの表示および編集」を参照して、ノードごとの GPU ユニットの設定方法をご確認ください。
ラスター解析用に GPU を有効化する場合は、次の手順に従って、ArcGIS Enterprise Administrator API Directory を使用して次の各デプロイメント用に GPU 要求と 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 ノードにラベルを付けます。 または、ノードにすでに指定されている既存のラベルを使用します。
ラスター解析で key に raster、value に GPU を使用してノードをラベリングするには、次のコマンドを使用します。
kubectl label nodes <your-node-name> raster=GPUノートブック サービスで key に notebook、value に NotebooksGPUNode を使用してノードをラベリングするには、次のコマンドを使用します。
kubectl label nodes <your-node-name> notebook=NotebooksGPUNode - 管理者として ArcGIS Enterprise Manager にサイン インします。
- ポッドの配置設定を開きます。
ノートブック サービス用に GPU を有効化する場合は、「ランタイムの表示および編集」を参照して、ポッドの配置設定へのアクセス方法をご確認ください。
ラスター解析でポッドの配置設定にアクセスするには、次の手順を実行します。
- サイドバーの [サービス] ボタンをクリックします。
- [システム サービス] をクリックして、[RasterProcessingGPU] サービスを選択します。
- [ポッドの配置] タブをクリックします。
- サービスのポッドを確実に GPU ノードにスケジュールするノード アフィニティ ルールを適用するには、次の情報を [ノードのアフィニティ] セクションに入力して [追加] をクリックします。
- [Type] - Required
- [Key] - GPU ノードのラベリングに使用するキー (例: raster) を指定します。
- [Operator] - In
- [Value] - GPU ノードのラベリングに使用する値 (例: GPU) を指定します。
- テイントを設定するノード上でポッドを実行可能にする容認を適用するには、[容認] セクションに以下の情報を入力して [追加] をクリックします。
- [Effect] - No Execute
- [Key] - nvidia.com/gpu
- [Operator] - Exists
- [保存] をクリックします。
- GPU ポッドが GPU ノードで実行されていることを確認します。
ユーザーのワークロードに合わせて GPU リソースの使用を開始できます。 また、ラスター解析の調整に関する推奨事項もご参照ください。