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.

Procédure

  1. Connectez-vous au plan de contrôle du superviseur.
    kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN --vsphere-username USERNAME
  2. 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.

  3. 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
  4. 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
  5. Déployez la VM à apprentissage profond.
    kubectl apply -f example-dl-vm.yaml
  6. 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
  7. 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.