Le service de VM dans le superviseur de vSphere with Tanzu permet aux scientifiques des données et aux ingénieurs DevOps de déployer et d'exécuter des VM à apprentissage profond à l'aide de l'API Kubernetes.
En tant que scientifique des données ou ingénieur DevOps, utilisez kubectl pour déployer une VM à apprentissage profond sur l'espace de noms configuré par l'administrateur de cloud.
Conditions préalables
Vérifiez auprès de l'administrateur de cloud que les conditions préalables suivantes sont en place pour l'infrastructure prête pour l'IA.
- VMware Private AI Foundation with NVIDIA est déployé et configuré. Reportez-vous à la section Déploiement de VMware Private AI Foundation with NVIDIA.
- Une bibliothèque de contenu avec des VM à apprentissage profond est ajoutée à l'espace de noms pour les charges de travail d'IA. Reportez-vous à la section Créer une bibliothèque de contenu avec des images de VM à apprentissage profond pour VMware Private AI Foundation with NVIDIA.
Procédure
- Connectez-vous au plan de contrôle du superviseur.
kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN --vsphere-username USERNAME
- Vérifiez que toutes les ressources de VM requises, telles que les classes de VM et les images de VM, sont en place sur l'espace de noms.
Reportez-vous à la section Afficher les ressources de VM disponibles sur un espace de noms dans vSphere with Tanzu.
- Préparez le fichier YAML pour la VM à apprentissage profond.
Utilisez la valeur vm-operator-api, en définissant les propriétés OVF comme objet ConfigMap.
Par exemple, vous pouvez créer une spécification YAML example-dl-vm.yaml à titre d'exemple de VM à apprentissage profond exécutant 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
Note :user-data
est la valeur codée en base64 pour le code cloud-init suivant :#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
- Basculez vers le contexte de l'espace de noms vSphere créé par l'administrateur de cloud.
Par exemple, pour un espace de noms appelé
example-dl-vm-namespace
.kubectl config use-context example-dl-vm-namespace
- Déployez la VM à apprentissage profond.
kubectl apply -f example-dl-vm.yaml
- Pour vérifier que la VM a été créée, exécutez les commandes suivantes.
kubectl get vm -n example-dl-vm.yaml
kubectl describe virtualmachine example-dl-vm
ping IP_address_returned_by_kubectl_describe
- Exécutez un ping sur l'adresse IP de la machine virtuelle attribuée par le service de mise en réseau demandé.
Pour obtenir l'adresse publique et les ports afin d'accéder à la VM à apprentissage profond, obtenez les détails sur le service d'équilibrage de charge créé.
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
Le pilote invité vGPU et la charge de travail DL spécifiée sont installés lorsque vous démarrez la VM à apprentissage profond.
Vous pouvez examiner les journaux ou ouvrir le bloc-notes JupyterLab fourni avec certaines des images. Reportez-vous à la section Charges de travail d'apprentissage profond dans VMware Private AI Foundation with NVIDIA.