開発者が TKG サービス クラスタに AI/ML ワークロードをデプロイできるようにするには、クラスタ オペレータとして、1 つ以上の Kubernetes クラスタを作成し、それぞれのクラスタに NVIDIA Network Operator と GPU Operator をインストールします。
Operator の手順 1:前提条件を確認する
これらの手順では、vSphere 管理者が NVIDIA GPU の環境を設定していることを前提としています。TKGS クラスタへの AI/ML ワークロードのデプロイに関する vSphere 管理者ワークフローを参照してください。
これらの手順では、GPU Operator の NVIDIA AI Enterprise (NVAIE) エディションをインストールしていることを前提としています。このエディションは、vSphere IaaS control planeで使用するため事前設定および最適化されています。NVAIE GPU Operator は、パブリック NGC カタログで使用可能な GPU Operator とは異なります。詳細については、NVIDIA AI Enterpriseを参照してください。
これらの手順では、ESXi 用の VIB が一致する NVAIE GPU Operator と vGPU ドライバのバージョンを使用していることを前提としています。詳細については、NVIDIA GPU Operator Versioningを参照してください。
TKG クラスタをプロビジョニングする場合、TKR の Ubuntu エディションを使用する必要があります。vSphere 8 スーパーバイザー 上の TKG では、Ubuntu エディションはアノテーションを使用してクラスタ YAML で指定されます。
Operator の手順 2:NVIDIA vGPU 用 TKGS クラスタをプロビジョニングする
- vSphere 向け Kubernetes CLI Tools をインストールします。
vSphere 向け Kubernetes CLI Tools のインストールを参照してください。
- kubectl 向けの vSphere プラグイン を使用して、スーパーバイザー での認証を行います。
kubectl vsphere login --server=IP-ADDRESS-or-FQDN --vsphere-username USERNAME
注: FQDN は、 スーパーバイザー が有効になっている場合にのみ使用できます。 - kubectl を使用して、vSphere 管理者が TKGS vGPU クラスタ用に作成した vSphere 名前空間 にコンテキストを切り替えます。
kubectl config get-contexts
kubectl config use-context TKG-GPU-CLUSTER-NAMESPACE
- vSphere 管理者が作成した vGPU プロファイルを使用するカスタム仮想マシン クラスの名前を取得します。
kubectl get virtualmachineclass
注: 仮想マシン クラスをターゲット vSphere 名前空間 にバインドする必要があります。 - vSphere 管理者がコンテンツ ライブラリから同期し、vSphere 名前空間 に追加した Ubuntu Tanzu Kubernetes リリース の TKR NAME を取得します。
kubectl get tkr
- vGPU 対応 TKG クラスタをプロビジョニングするための YAML を作成します。
- 使用する TKGS クラスタのプロビジョニング API(v1alpha3 API または v1beta1 API)を決定します(「TKG クラスタのプロビジョニング API」を参照)。
- 選択した API に応じて、その API に関する Ubuntu の例を参照してください。
注: Ubuntu OS イメージを使用する必要があります。Photon OS は使用できません。
- 前述のコマンドの出力から収集した情報を使用して、TKGS クラスタの仕様をカスタマイズします。
- 次の kubectl コマンドを実行して、クラスタをプロビジョニングします。
kubectl apply -f CLUSTER-NAME.yaml
例:kubectl apply -f tkg-gpu-cluster-1.yaml
- クラスタのプロビジョニングを確認します。
kubectl を使用して、クラスタ ノードのデプロイを監視します。
kubectl get tanzukubernetesclusters -n NAMESPACE
- kubectl 向けの vSphere プラグイン を使用して、TKGS vGPU クラスタにログインします。
kubectl vsphere login --server=IP-ADDRESS-or-FQDN --vsphere-username USERNAME \ --tanzu-kubernetes-cluster-name CLUSTER-NAME --tanzu-kubernetes-cluster-namespace NAMESPACE-NAME
- クラスタを確認します。
次のコマンドを使用して、クラスタを確認します。
kubectl cluster-info
kubectl get nodes
kubectl get namespaces
kubectl api-resources
Operator の手順 3:NVIDIA Network Operator をインストールする
- TKGS vGPU ワークロード クラスタにログイン済みであり、コンテキストが TKGS vGPU ワークロード クラスタ名前空間に設定されていることを確認します。
必要に応じて、「Operator の手順 2:NVIDIA vGPU 用 TKGS クラスタをプロビジョニングする」の手順を参照してください。
- Helm ドキュメントを参照して、Helm をインストールします。
- NVIDIA Network Operator Helm Chart を取得します。
helm fetch https://helm.ngc.nvidia.com/nvaie/charts/network-operator-v1.1.0.tgz --username='$oauthtoken' --password=<YOUR API KEY> --untar
- 構成値の YAML ファイルを作成します。
vi values.yaml
values.yaml
ファイルに次の情報をポピュレートします。deployCR: true ofedDriver: deploy: true rdmaSharedDevicePlugin: deploy: true resources: - name: rdma_shared_device_a vendors: [15b3] devices: [ens192]
- 次のコマンドを使用して NVIDIA Network Operator をインストールします。
helm install network-operator -f ./values.yaml -n network-operator --create-namespace --wait network-operator/
Operator の手順 4:NVIDIA GPU Operator をインストールする
NVIDIA では、NVIDIA AI Enterprise ユーザー用に事前構成された GPU Operatorが提供されています。これらの手順は、この事前構成されたバージョンの GPU Operator を使用していることを前提としています。これらの手順は、NVIDIA によって提供されている GPU Operator のインストールの手順に基づいていますが、vSphere 8 の TKG 向けに更新されています。
- TKGS vGPU ワークロード クラスタにログイン済みであり、コンテキストが TKGS vGPU ワークロード クラスタ名前空間に設定されていることを確認します。
必要に応じて、「Operator の手順 2:NVIDIA vGPU 用 TKGS クラスタをプロビジョニングする」の手順を参照してください。
- Helm ドキュメントを参照して Helm をインストールします(まだインストールされていない場合)。
gpu-operator
Kubernetes 名前空間を作成します。kubectl create namespace gpu-operator
- 空の vGPU ライセンス構成ファイルを作成します。
sudo touch gridd.conf
- NLS クライアント ライセンス トークンを生成してダウンロードします。
『NVIDIA License System User Guide』のSection 4.6. Generating a Client Configuration Tokenを参照してください。
- ダウンロードした NLS クライアント ライセンス トークンの名前を
client_configuration_token.tok
に変更します。 gpu-operator
名前空間にlicensing-config
ConfigMap オブジェクトを作成します。この ConfigMap に、vGPU ライセンス構成ファイル (gridd.conf
) と NLS クライアント ライセンス トークン (*.tok
) を含めます。kubectl create configmap licensing-config \ -n gpu-operator --from-file=gridd.conf --from-file=<path>/client_configuration_token.tok
- NVIDIA GPU Operator で使用する Linux 用のコンテナ化された NVIDIA vGPU ソフトウェア グラフィック ドライバを含むプライベート レジストリ用のイメージ プル シークレットを作成します。
gpu-operator
名前空間で、レジストリ シークレット名ngc-secret
とプライベート レジストリ名nvcr.io/nvaie
のイメージ プル シークレットを作成します。表示されるフィールドに NGC API キーとメール アドレスを含めます。kubectl create secret docker-registry ngc-secret \ --docker-server=‘nvcr.io/nvaie’ \ --docker-username=‘$oauthtoken’ \ --docker-password=<YOUR_NGC_API_KEY> \ --docker-email=<YOUR_EMAIL_ADDRESS> \ -n gpu-operator
- NVAIE GPU Operator バージョン 2.2 の Helm チャートをダウンロードします。
API キーを置き換えます。
helm fetchhttps://helm.ngc.nvidia.com/nvaie/charts/gpu-operator-2-2-v1.11.1.tgz--username=‘$oauthtoken’ \ --password=<YOUR API KEY>
- NVAIE GPU Operator バージョン 2.2 を TKG クラスタにインストールします。
helm install gpu-operator ./gpu-operator-2-2-v1.11.1.tgz -n gpu-operator
Operator の手順 5:AI/ML ワークロードをデプロイする
NVIDIA GPU Cloud カタログには、vGPU 対応 Tanzu Kubernetes クラスタで AI/ML ワークロードを実行する場合に使用できる既製のコンテナ イメージがいくつかあります。使用可能なイメージの詳細については、NGC のドキュメントを参照してください。