Il servizio macchina virtuale nel supervisore in vSphere with Tanzu consente ai data scientist e ai tecnici DevOps di distribuire ed eseguire macchine virtuali di deep learning utilizzando l'API Kubernetes.

In qualità di data scientist o tecnico DevOps, utilizzare kubectl per distribuire una macchina virtuale di deep learning nello spazio dei nomi configurato dall'amministratore del cloud.

Prerequisiti

Verificare con l'amministratore del cloud che siano soddisfatti i prerequisiti seguenti per l'infrastruttura pronta per AI.

Procedura

  1. Accedere al piano di controllo del supervisore.
    kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN --vsphere-username USERNAME
  2. Verificare che tutte le risorse macchina virtuale necessarie, ad esempio le classi di macchine virtuali e le immagini di macchine virtuali, siano presenti nello spazio dei nomi.

    Vedere Visualizzazione delle risorse macchina virtuale disponibili in uno spazio dei nomi in vSphere with Tanzu.

  3. Preparare il file YAML per la macchina virtuale di deep learning.

    Utilizzare vm-operator-api, impostando le proprietà OVF come oggetto ConfigMap.

    Ad esempio, è possibile creare una specifica YAML example-dl-vm.yaml per una macchina virtuale di deep learning che esegue PyTorch.

    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
    Nota: user-data è il valore codificato in base64 per il codice cloud-init seguente:
    #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. Passare al contesto dello spazio dei nomi vSphere creato dall'amministratore del cloud.

    Ad esempio, per uno spazio dei nomi denominato example-dl-vm-namespace.

    kubectl config use-context example-dl-vm-namespace
  5. Distribuire la macchina virtuale di deep learning.
    kubectl apply -f example-dl-vm.yaml
  6. Verificare che la macchina virtuale sia stata creata eseguendo questi comandi.
    kubectl get vm -n example-dl-vm.yaml
    kubectl describe virtualmachine example-dl-vm
    ping IP_address_returned_by_kubectl_describe
  7. Eseguire il ping dell'indirizzo IP della macchina virtuale assegnato dal servizio di rete richiesto.

    Per ottenere l'indirizzo pubblico e le porte per l'accesso alla macchina virtuale di deep learning, recuperare i dettagli relativi al servizio di bilanciamento del carico creato.

    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
    

Il driver guest della vGPU e il carico di lavoro DL specificato vengono installati la prima volta che si avvia la macchina virtuale di deep learning.

È possibile esaminare i registri o aprire il notebook JupyterLab fornito con alcune delle immagini. Vedere Carichi di lavoro di deep learning in VMware Private AI Foundation with NVIDIA.