vSphere with Tanzu のスーパーバイザーの仮想マシン サービスにより、データ サイエンティストや DevOps エンジニアは Kubernetes API を使用してディープ ラーニング仮想マシンを展開および実行できます。

データ サイエンティストまたは DevOps エンジニアは、kubectl を使用して、クラウド管理者が構成した名前空間にディープ ラーニング仮想マシンを展開します。

前提条件

クラウド管理者に、AI 対応インフラストラクチャのための次の前提条件が満たされていることを確認します。

手順

  1. スーパーバイザー制御プレーンにログインします。
    kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN --vsphere-username USERNAME
  2. 仮想マシン クラスや仮想マシン イメージなど、必要なすべての仮想マシン リソースが名前空間に配置されていることを確認します。

    vSphere with Tanzu の名前空間で使用可能な仮想マシン リソースの表示」を参照してください。

  3. ディープ ラーニング仮想マシンの YAML ファイルを準備します。

    vm-operator-api を使用して、OVF プロパティを ConfigMap オブジェクトとして設定します。

    たとえば、PyTorch を実行するディープ ラーニング仮想マシンの例の YAML 仕様 example-dl-vm.yaml を作成できます。

    apiVersion: vmoperator.vmware.com/v1alpha1
    kind: VirtualMachine
    metadata:
      name: example-dl-vm
      namespace: vpaif-ns
      labels:
        app: example-dl-app
    spec:
      className: gpu-a30
      imageName: vmi-xxxxxxxxxxxxx
      powerState: poweredOn
      storageClass: tanzu-storage-policy
      vmMetadata:
        configMapName: example-dl-vm-config
        transport: OvfEnv
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: example-dl-vm-config
      namespace: vpaif-ns
    data:
      user-data: I2Nsb3VkLWNvbmZpZwogICAgd3JpdGVfZmlsZXM6CiAgICAtIHBhdGg6IC9vcHQvZGx2bS9kbF9hcHAuc2gKICAgICAgcGVybWlzc2lvbnM6ICcwNzU1JwogICAgICBjb250ZW50OiB8CiAgICAgICAgIyEvYmluL2Jhc2gKICAgICAgICBkb2NrZXIgcnVuIC1kIC1wIDg4ODg6ODg4OCBudmNyLmlvL252aWRpYS9weXRvcmNoOjIzLjEwLXB5MyAvdXNyL2xvY2FsL2Jpbi9qdXB5dGVyIGxhYiAtLWFsbG93LXJvb3QgLS1pcD0qIC0tcG9ydD04ODg4IC0tbm8tYnJvd3NlciAtLU5vdGVib29rQXBwLnRva2VuPScnIC0tTm90ZWJvb2tBcHAuYWxsb3dfb3JpZ2luPScqJyAtLW5vdGVib29rLWRpcj0vd29ya3NwYWNl
      vgpu-license: NVIDIA-client-configuration-token
      nvidia-portal-api-key: API-key-from-NVIDIA-licensing-portal
      password: password-for-vmware-user
    注: user-data は、次の cloud-init コードの base64 エンコードされた値です。
    #cloud-config
        write_files:
        - path: /opt/dlvm/dl_app.sh
          permissions: '0755'
          content: |
            #!/bin/bash
            docker run -d -p 8888:8888 nvcr.io/nvidia/pytorch:23.10-py3 /usr/local/bin/jupyter lab --allow-root --ip=* --port=8888 --no-browser --NotebookApp.token='' --NotebookApp.allow_origin='*' --notebook-dir=/workspace
    apiVersion: vmoperator.vmware.com/v1alpha1
    kind: VirtualMachineService
    metadata:
      name: example-dl-vm
      namespace: vpaif-ns
    spec:
      ports:
      - name: ssh
        port: 22
        protocol: TCP
        targetPort: 22
      - name: junyperlab
        port: 8888
        protocol: TCP
        targetPort: 8888
      selector:
        app: example-dl-app
        type: LoadBalancer
  4. クラウド管理者が作成した vSphere 名前空間のコンテキストに切り替えます。

    たとえば、example-dl-vm-namespace という名前空間の場合は次のとおりです。

    kubectl config use-context example-dl-vm-namespace
  5. ディープ ラーニング仮想マシンを展開します。
    kubectl apply -f example-dl-vm.yaml
  6. 次のコマンドを実行して、仮想マシンが作成されていることを確認します。
    kubectl get vm -n example-dl-vm.yaml
    kubectl describe virtualmachine example-dl-vm
    ping IP_address_returned_by_kubectl_describe
  7. 要求されたネットワーク サービスによって割り当てられた仮想マシンの IP アドレスに ping コマンドを実行します。

    ディープ ラーニング仮想マシンにアクセスするためのパブリック アドレスとポートを取得するには、作成されたロード バランサ サービスの詳細を取得します。

    kubectl get services
    NAME   TYPE           CLUSTER-IP              EXTERNAL-IP          PORT(S)                       AGE
    example-dl-vm   LoadBalancer   <internal-ip-address>   <public-IPaddress>   22:30473/TCP,8888:32180/TCP   9m40s
    

ディープ ラーニング仮想マシンを初めて起動すると、vGPU ゲスト ドライバと指定された DL ワークロードがインストールされます。

ログを調べたり、一部のイメージに付属している JupyterLab Notebook を開いたりできます。VMware Private AI Foundation with NVIDIA のディープ ラーニング ワークロードを参照してください。