開発者が 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 クラスタをプロビジョニングする

VMware は、 NVIDIA GPU OperatorNVIDIA Network Operator を使用する NVIDIA GPU 認定サーバにおける NVIDIA 仮想 GPU のネイティブ TKGS サポートを提供します。これらのオペレータは、TKGS ワークロード クラスタにインストールします。vGPU ワークロードをホストするために TKGS クラスタをプロビジョニングするには、次の手順を実行します。
  1. vSphere 向け Kubernetes CLI Tools をインストールします。

    vSphere 向け Kubernetes CLI Tools のインストールを参照してください。

  2. kubectl 向けの vSphere プラグイン を使用して、スーパーバイザー での認証を行います。
    kubectl vsphere login --server=IP-ADDRESS-or-FQDN --vsphere-username USERNAME
    注: FQDN は、 スーパーバイザー が有効になっている場合にのみ使用できます。
  3. kubectl を使用して、vSphere 管理者が TKGS vGPU クラスタ用に作成した vSphere 名前空間 にコンテキストを切り替えます。
    kubectl config get-contexts
    kubectl config use-context TKG-GPU-CLUSTER-NAMESPACE
  4. vSphere 管理者が作成した vGPU プロファイルを使用するカスタム仮想マシン クラスの名前を取得します。
    kubectl get virtualmachineclass
    注: 仮想マシン クラスをターゲット vSphere 名前空間 にバインドする必要があります。
  5. vSphere 管理者がコンテンツ ライブラリから同期し、vSphere 名前空間 に追加した Ubuntu Tanzu Kubernetes リリース の TKR NAME を取得します。
    kubectl get tkr
  6. vGPU 対応 TKG クラスタをプロビジョニングするための YAML を作成します。
    1. 使用する TKGS クラスタのプロビジョニング API(v1alpha3 API または v1beta1 API)を決定します(「TKG クラスタのプロビジョニング API」を参照)。
    2. 選択した API に応じて、その API に関する Ubuntu の例を参照してください。
      注: Ubuntu OS イメージを使用する必要があります。Photon OS は使用できません。
    3. 前述のコマンドの出力から収集した情報を使用して、TKGS クラスタの仕様をカスタマイズします。
  7. 次の kubectl コマンドを実行して、クラスタをプロビジョニングします。
    kubectl apply -f CLUSTER-NAME.yaml
    例:
    kubectl apply -f tkg-gpu-cluster-1.yaml
  8. クラスタのプロビジョニングを確認します。
    kubectl を使用して、クラスタ ノードのデプロイを監視します。
    kubectl get tanzukubernetesclusters -n NAMESPACE
  9. 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
  10. クラスタを確認します。
    次のコマンドを使用して、クラスタを確認します。
    kubectl cluster-info
    kubectl get nodes
    kubectl get namespaces
    kubectl api-resources

Operator の手順 3:NVIDIA Network Operator をインストールする

NVIDIA Network Operator では、Kubernetes カスタム リソースと Operator フレームワークを活用して、vGPU のネットワークを最適化します。詳細については、「 NVIDIA Network Operator」を参照してください。
  1. TKGS vGPU ワークロード クラスタにログイン済みであり、コンテキストが TKGS vGPU ワークロード クラスタ名前空間に設定されていることを確認します。

    必要に応じて、「Operator の手順 2:NVIDIA vGPU 用 TKGS クラスタをプロビジョニングする」の手順を参照してください。

  2. Helm ドキュメントを参照して、Helm をインストールします。
  3. 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
  4. 構成値の YAML ファイルを作成します。
    vi values.yaml
  5. values.yaml ファイルに次の情報をポピュレートします。
    deployCR: true
     ofedDriver:
      deploy: true
     rdmaSharedDevicePlugin:
      deploy: true
      resources:
       - name: rdma_shared_device_a
       vendors: [15b3]
       devices: [ens192]
  6. 次のコマンドを使用して 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 向けに更新されています。

次の手順を実行して、プロビジョニングした TKG クラスタに GPU Operator NVIDIA AI Enterprise をインストールします。
  1. TKGS vGPU ワークロード クラスタにログイン済みであり、コンテキストが TKGS vGPU ワークロード クラスタ名前空間に設定されていることを確認します。

    必要に応じて、「Operator の手順 2:NVIDIA vGPU 用 TKGS クラスタをプロビジョニングする」の手順を参照してください。

  2. Helm ドキュメントを参照して Helm をインストールします(まだインストールされていない場合)。
  3. gpu-operator Kubernetes 名前空間を作成します。
    kubectl create namespace gpu-operator
  4. 空の vGPU ライセンス構成ファイルを作成します。
    sudo touch gridd.conf
  5. NLS クライアント ライセンス トークンを生成してダウンロードします。

    NVIDIA License System User Guide』のSection 4.6. Generating a Client Configuration Tokenを参照してください。

  6. ダウンロードした NLS クライアント ライセンス トークンの名前を client_configuration_token.tok に変更します。
  7. 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
  8. 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
  9. 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>
  10. 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 のドキュメントを参照してください。