Les images de machine virtuelle à apprentissage profond fournies dans le cadre de VMware Private AI Foundation with NVIDIA sont préconfigurées avec les bibliothèques ML, infrastructures et kit d'outils populaires, et sont optimisées et validées par NVIDIA et VMware pour l'accélération par GPU dans un environnement VMware Cloud Foundation.

Les scientifiques de données peuvent utiliser les machines virtuelles à apprentissage profond provisionnées à partir de ces images pour le prototypage, le réglage fin, la validation et l'inférence de l'IA.

La pile logicielle pour l'exécution d'applications d'IA au-dessus des GPU NVIDIA est validée à l'avance. Par conséquent, démarrez directement le développement de l'IA, sans passer de temps à installer et à valider la compatibilité des systèmes d'exploitation, des bibliothèques logicielles, des infrastructures ML, des kits d'outils et des pilotes GPU.

Que contient une image de VM à apprentissage profond ?

L'image initiale de machine virtuelle à apprentissage profond contient le logiciel suivant. Pour plus d'informations sur les versions des composants dans chaque version d'image de VM à apprentissage profond, reportez-vous à la section Notes de mise à jour de VMware Deep Learning VM.

Catégorie de composant logiciel Composant logiciel
Intégrée
  • Canonical Ubuntu
  • NVIDIA Container Toolkit
  • Docker Community Engine
Peut être préinstallé automatiquement

Bibliothèque de contenu pour les images de VM à apprentissage profond

Les images de VM à apprentissage profond sont fournies comme modèles de VM vSphere, hébergées et publiées par VMware dans une bibliothèque de contenu. Vous pouvez utiliser ces images pour déployer une VM à apprentissage profond à l'aide de vSphere Client ou de VMware Aria Automation.

La bibliothèque de contenu avec des images de VM à apprentissage profond pour VMware Private AI Foundation with NVIDIA est disponible sur l'URL https://packages.vmware.com/dl-vm/lib.json. Dans un environnement connecté, créez une bibliothèque de contenu abonnée connectée à cette URL et, dans un environnement déconnecté, une bibliothèque de contenu locale dans laquelle vous chargez des images téléchargées à partir de l'URL centrale.

Propriétés OVF des VM à apprentissage profond

Lorsque vous déployez une VM à apprentissage profond, vous devez remplir des propriétés de VM personnalisées pour automatiser la configuration du système d'exploitation Linux, le déploiement du pilote invité vGPU, ainsi que le déploiement et la configuration de conteneurs NGC pour les charges de travail DL.

Catégorie Paramètre Description
Propriétés du système d'exploitation de base instance-id Requis. ID d'instance unique de l'instance de VM.

Un ID d'instance identifie de manière unique une instance. Lorsqu'un ID d'instance change, cloud-init traite l'instance comme une nouvelle instance et réexécute le processus cloud-init.

hostname Requis. Nom d'hôte du dispositif.
public-keys Si ce paramètre est fourni, l'instance renseigne le authorized_keys SSH de l'utilisateur par défaut avec cette valeur.
user-data

Ensemble de scripts ou d'autres métadonnées qui sont insérés dans la VM lors du provisionnement.

Cette propriété est le script cloud-init réel. Cette valeur doit être codée en base64.

password Requis. Mot de passe du compte d'utilisateur vmware par défaut.

Installation du pilote vGPU

vgpu-license Requis. Jeton de configuration du client NVIDIA vGPU. Le jeton est enregistré dans le fichier /etc/nvidia/ClientConfigToken/client_configuration_token.tok.
nvidia-portal-api-key

Requis dans un environnement connecté. Clé API que vous avez téléchargée à partir du portail de licences NVIDIA. La clé est requise pour l'installation du pilote invité vGPU.

vgpu-fallback-version Version du pilote invité vGPU à laquelle revenir si la version du pilote invité vGPU ne peut pas être déterminée à l'aide de la clé API de licence entrée.
vgpu-url

Requis dans un environnement déconnecté. URL à partir de laquelle télécharger le pilote invité vGPU.

Automatisation de la charge de travail DL registry-uri Requis dans un environnement déconnecté ou si vous prévoyez d'utiliser un registre de conteneur privé pour éviter de télécharger des images depuis Internet. URI d'un registre de conteneur privé avec les images de conteneur de charges de travail d'apprentissage profond.

Requis si vous faites référence à un registre privé dans user-data ou image-oneliner.

registry-user Requis si vous utilisez un registre de conteneur privé qui nécessite une authentification de base.
registry-passwd Requis si vous utilisez un registre de conteneur privé qui nécessite une authentification de base.
registry-2-uri Requis si vous utilisez un deuxième registre de conteneur privé basé sur Docker et l'authentification de base requise.
registry-2-user Requis si vous utilisez un deuxième registre de conteneur privé.
registry-2-passwd Requis si vous utilisez un deuxième registre de conteneur privé.
image-oneliner Commande bash sur une ligne exécutée lors du provisionnement de VM. Cette valeur doit être codée en base64.

Vous pouvez utiliser cette propriété pour spécifier le conteneur de charges de travail DL à déployer, tel que PyTorch ou TensorFlow. Reportez-vous à la section Charges de travail d'apprentissage profond dans VMware Private AI Foundation with NVIDIA.

Note : Si user-data et image-oneliner sont fournis, la valeur de user-data est utilisée.
docker-compose-uri URI du fichier de composition Docker. Requis si vous avez besoin d'un fichier de composition Docker pour démarrer le conteneur de charges de travail DL. Cette valeur doit être codée en base64.
config-json Fichier de configuration pour plusieurs opérations de connexion au registre de conteneur lors de l'utilisation d'un fichier de composition Docker. Cette valeur doit être codée en base64.

Attribuer une adresse IP statique à une VM à apprentissage profond dans VMware Private AI Foundation with NVIDIA

Par défaut, les images de VM à apprentissage profond sont configurées avec l'attribution d'adresses DHCP. Pour déployer une VM à apprentissage profond avec une adresse IP statique directement sur un cluster vSphere, vous devez ajouter du code supplémentaire à la section cloud-init.

Sur vSphere with Tanzu, l'attribution d'adresses IP est déterminée par la configuration réseau du superviseur dans NSX.

Procédure

  1. Créez un script cloud-init au format de texte brut pour la charge de travail DL que vous prévoyez d'utiliser.
  2. Ajoutez le code supplémentaire suivant au script cloud-init.
    #cloud-config
    <instructions_for_your_DL_workload>
    
    manage_etc_hosts: true
     
    write_files:
      - path: /etc/netplan/50-cloud-init.yaml
        permissions: '0600'
        content: |
          network:
            version: 2
            renderer: networkd
            ethernets:
              ens33:
                dhcp4: false # disable DHCP4
                addresses: [x.x.x.x/x]  # Set the static IP address and mask
                routes:
                    - to: default
                      via: x.x.x.x # Configure gateway
                nameservers:
                  addresses: [x.x.x.x, x.x.x.x] # Provide the DNS server address. Separate mulitple DNS server addresses with commas.
     
    runcmd:
      - netplan apply
  3. Codez le script cloud-init obtenu au format base64.
  4. Définissez le script cloud-init obtenu au format base64 comme valeur sur le paramètre OVF user-data de l'image de VM à apprentissage profond.

Exemple : Attribution d'une adresse IP statique à un exemple de charge de travail CUDA

Pour obtenir un exemple de VM à apprentissage profond avec une charge de travail DL Exemple CUDA :

Élément VM à apprentissage profond Valeur d'exemple
Image de charge de travail DL nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda11.7.1-ubi8
Adresse IP 10.199.118.245
Préfixe de sous-réseau /25
Passerelle 10.199.118.253
Serveurs DNS
  • 10.142.7.1
  • 10.132.7.1

fournissez le code cloud-init suivant :

I2Nsb3VkLWNvbmZpZwp3cml0ZV9maWxlczoKLSBwYXRoOiAvb3B0L2Rsdm0vZGxfYXBwLnNoCiAgcGVybWlzc2lvbnM6ICcwNzU1JwogIGNvbnRlbnQ6IHwKICAgICMhL2Jpbi9iYXNoCiAgICBkb2NrZXIgcnVuIC1kIG52Y3IuaW8vbnZpZGlhL2s4cy9jdWRhLXNhbXBsZTp2ZWN0b3JhZGQtY3VkYTExLjcuMS11Ymk4CgptYW5hZ2VfZXRjX2hvc3RzOiB0cnVlCiAKd3JpdGVfZmlsZXM6CiAgLSBwYXRoOiAvZXRjL25ldHBsYW4vNTAtY2xvdWQtaW5pdC55YW1sCiAgICBwZXJtaXNzaW9uczogJzA2MDAnCiAgICBjb250ZW50OiB8CiAgICAgIG5ldHdvcms6CiAgICAgICAgdmVyc2lvbjogMgogICAgICAgIHJlbmRlcmVyOiBuZXR3b3JrZAogICAgICAgIGV0aGVybmV0czoKICAgICAgICAgIGVuczMzOgogICAgICAgICAgICBkaGNwNDogZmFsc2UgIyBkaXNhYmxlIERIQ1A0CiAgICAgICAgICAgIGFkZHJlc3NlczogWzEwLjE5OS4xMTguMjQ1LzI1XSAgIyBTZXQgdGhlIHN0YXRpYyBJUCBhZGRyZXNzIGFuZCBtYXNrCiAgICAgICAgICAgIHJvdXRlczoKICAgICAgICAgICAgICAgIC0gdG86IGRlZmF1bHQKICAgICAgICAgICAgICAgICAgdmlhOiAxMC4xOTkuMTE4LjI1MyAjIENvbmZpZ3VyZSBnYXRld2F5CiAgICAgICAgICAgIG5hbWVzZXJ2ZXJzOgogICAgICAgICAgICAgIGFkZHJlc3NlczogWzEwLjE0Mi43LjEsIDEwLjEzMi43LjFdICMgUHJvdmlkZSB0aGUgRE5TIHNlcnZlciBhZGRyZXNzLiBTZXBhcmF0ZSBtdWxpdHBsZSBETlMgc2VydmVyIGFkZHJlc3NlcyB3aXRoIGNvbW1hcy4KIApydW5jbWQ6CiAgLSBuZXRwbGFuIGFwcGx5

qui correspond au script suivant au format texte brut :

#cloud-config
write_files:
- path: /opt/dlvm/dl_app.sh
  permissions: '0755'
  content: |
    #!/bin/bash
    docker run -d nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda11.7.1-ubi8

manage_etc_hosts: true
 
write_files:
  - path: /etc/netplan/50-cloud-init.yaml
    permissions: '0600'
    content: |
      network:
        version: 2
        renderer: networkd
        ethernets:
          ens33:
            dhcp4: false # disable DHCP4
            addresses: [10.199.118.245/25]  # Set the static IP address and mask
            routes:
                - to: default
                  via: 10.199.118.253 # Configure gateway
            nameservers:
              addresses: [10.142.7.1, 10.132.7.1] # Provide the DNS server address. Separate mulitple DNS server addresses with commas.
 
runcmd:
  - netplan apply