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.
- VMware Private AI Foundation with NVIDIA deve essere distribuito e configurato. Vedere Distribuzione di VMware Private AI Foundation with NVIDIA.
- Una libreria di contenuti con macchine virtuali di deep learning deve essere aggiunta allo spazio dei nomi per i carichi di lavoro AI. Vedere Creazione di una libreria di contenuti con immagini di macchine virtuali di deep learning per VMware Private AI Foundation with NVIDIA.
Procedura
- Accedere al piano di controllo del supervisore.
kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN --vsphere-username USERNAME
- 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.
- 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
- 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
- Distribuire la macchina virtuale di deep learning.
kubectl apply -f example-dl-vm.yaml
- 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
- 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.