Lorsque vous déployez une VM à apprentissage profond dans vSphere IaaS control plane à l'aide de kubectl ou directement sur un cluster vSphere, vous devez renseigner les propriétés personnalisées de la VM.
Pour plus d'informations sur les images de VM à apprentissage profond dans VMware Private AI Foundation with NVIDIA, reportez-vous à la section À propos des images de VM à apprentissage profond dans VMware Private AI Foundation with NVIDIA.
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.
La dernière image de VM à apprentissage profond dispose des propriétés OVF suivantes :
Catégorie | Paramètre | Étiquette dans vSphere Client | Description |
---|---|---|---|
Propriétés du système d'exploitation de base | instance-id | ID de l'instance | 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 | Nom d'hôte | Requis. Nom d'hôte du dispositif. | |
seedfrom | URL à partir de laquelle amorcer les données de l'instance | Facultatif. URL à partir de laquelle extraire la valeur du paramètre user-data et les métadonnées. | |
public-keys | Clé publique SSH | Si ce paramètre est fourni, l'instance renseigne le authorized_keys SSH de l'utilisateur par défaut avec cette valeur. |
|
user-data | Paramètre user-data codé | 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 contenu réel du script cloud-init. Cette valeur doit être codée en base64.
|
|
password | Mot de passe de l'utilisateur par défaut | Requis. Mot de passe du compte d'utilisateur vmware par défaut. | |
Installation du pilote vGPU |
vgpu-license | Licence vGPU | 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 | Clé API du portail NVIDIA | 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-host-driver-version | Version du pilote d'hôte vGPU | Installez directement cette version du pilote invité vGPU. | |
vgpu-url | URL pour les téléchargements de vGPU isolés | Requis dans un environnement déconnecté. URL à partir de laquelle télécharger le pilote invité vGPU. Pour plus d'informations sur la configuration requise du serveur Web local, reportez-vous à la section Préparation de VMware Cloud Foundation pour le déploiement de charges de travail Private AI. |
|
Automatisation de la charge de travail DL | registry-uri | URI du registre | 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 |
registry-user | Nom d'utilisateur du registre | Requis si vous utilisez un registre de conteneur privé qui nécessite une authentification de base. | |
registry-passwd | Mot de passe du registre | Requis si vous utilisez un registre de conteneur privé qui nécessite une authentification de base. | |
registry-2-uri | URI du registre secondaire | Requis si vous utilisez un deuxième registre de conteneur privé basé sur Docker et s'il nécessite l'authentification de base. Par exemple, lors du déploiement d'une VM à apprentissage profond avec la charge de travail NVIDIA RAG DL préinstallée, une image pgvector est téléchargée à partir de Docker Hub. Vous pouvez utiliser les paramètres |
|
registry-2-user | Nom d'utilisateur du registre secondaire | Requis si vous utilisez un deuxième registre de conteneur privé. | |
registry-2-passwd | Mot de passe du registre secondaire | Requis si vous utilisez un deuxième registre de conteneur privé. | |
image-oneliner | Commande codée sur une ligne | 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.
Attention : Évitez d'utiliser
user-data et
image-oneliner .
|
|
docker-compose-uri | Fichier Docker Compose codé | Requis si vous avez besoin d'un fichier Docker Compose pour démarrer le conteneur de charges de travail DL. Contenu du fichier docker-compose.yaml qui sera inséré dans la machine virtuelle lors du provisionnement après le démarrage de la machine virtuelle avec GPU activé. Cette valeur doit être codée en base64. |
|
config-json | Fichier config.json codé | Contenu d'un fichier de configuration pour ajouter les détails suivants :
Cette valeur doit être codée en base64. |
|
conda-environment-install | Installation de l'environnement Conda | Liste séparée par des virgules d'environnements Conda à installer automatiquement à la fin du déploiement de VM. Environnements disponibles : pytorch2.3_py3.12, |
Charges de travail d'apprentissage profond dans VMware Private AI Foundation with NVIDIA
Vous pouvez provisionner une machine virtuelle à apprentissage profond avec une charge de travail d'apprentissage profond (DL) prise en charge en plus de ses composants intégrés. Les charges de travail DL sont téléchargées à partir du catalogue NVIDIA NGC et sont optimisées pour le GPU et validées par NVIDIA et VMware by Broadcom.
Pour obtenir une présentation des images de VM à apprentissage profond, reportez-vous à la section À propos des images de VM à apprentissage profond dans VMware Private AI Foundation with NVIDIA.
Exemple CUDA
Vous pouvez utiliser une VM à apprentissage profond avec des exemples CUDA en cours d'exécution pour explorer l'ajout de vecteurs, la simulation gravitationnelle à N corps ou d'autres exemples sur une VM. Reportez-vous à la page Exemples CUDA.
Une fois la VM à apprentissage profond lancée, elle exécute une charge de travail d'exemples CUDA pour tester le pilote invité vGPU. Vous pouvez examiner la sortie de test dans le fichier /var/log/dl.log.
Composant | Description |
---|---|
Image de conteneur | nvcr.io/nvidia/k8s/cuda-sample:ngc_image_tagPar exemple : nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda11.7.1-ubi8 Pour plus d'informations sur les images du conteneur d'exemples CUDA qui sont prises en charge pour les VM à apprentissage profond, reportez-vous à la section Notes de mise à jour de VMware Deep Learning VM. |
Entrées requises | Pour déployer une charge de travail d'exemples CUDA, vous devez définir les propriétés OVF de la machine virtuelle à apprentissage profond de la manière suivante :
Reportez-vous à la section Propriétés OVF des VM à apprentissage profond. |
Sortie |
|
PyTorch
Vous pouvez utiliser une VM à apprentissage profond avec une bibliothèque PyTorch pour découvrir l'IA conversationnelle, le traitement automatique des langues (NLP, Natural language processing) et d'autres types de modèles d'IA sur une VM. Reportez-vous à la page PyTorch.
Une fois la VM à apprentissage profond lancée, elle démarre une instance de JupyterLab sur laquelle les modules PyTorch sont installés et configurés.
Composant | Description |
---|---|
Image de conteneur | nvcr.io/nvidia/pytorch-pb24h1:ngc_image_tagPar exemple : nvcr.io/nvidia/pytorch-pb24h1:24.03.02-py3 Pour plus d'informations sur les images de conteneur PyTorch prises en charge pour les VM à apprentissage profond, reportez-vous à la section Notes de mise à jour de VMware Deep Learning VM. |
Entrées requises | Pour déployer une charge de travail PyTorch, vous devez définir les propriétés OVF de la machine virtuelle à apprentissage profond de la manière suivante :
Reportez-vous à la section Propriétés OVF des VM à apprentissage profond. |
Sortie |
|
TensorFlow
Vous pouvez utiliser une VM à apprentissage profond avec une bibliothèque TensorFlow pour découvrir l'IA conversationnelle, le NLP et d'autres types de modèles d'IA sur une VM. Reportez-vous à la page TensorFlow.
Une fois la VM à apprentissage profond lancée, elle démarre une instance de JupyterLab sur laquelle les modules TensorFlow sont installés et configurés.
Composant | Description |
---|---|
Image de conteneur | nvcr.io/nvidia/tensorflow-pb24h1:ngc_image_tag Par exemple : nvcr.io/nvidia/tensorflow-pb24h1:24.03.02-tf2-py3 Pour plus d'informations sur les images de conteneur TensorFlow prises en charge pour les VM à apprentissage profond, reportez-vous à la section Notes de mise à jour de VMware Deep Learning VM. |
Entrées requises | Pour déployer une charge de travail TensorFlow, vous devez définir les propriétés OVF de la machine virtuelle à apprentissage profond de la manière suivante :
Reportez-vous à la section Propriétés OVF des VM à apprentissage profond. |
Sortie |
|
Exportateur DCGM
Vous pouvez utiliser une VM à apprentissage profond avec l'exportateur Data Center GPU Manager (DCGM) pour surveiller la santé des GPU et obtenir des mesures de ceux-ci qui sont utilisés par une charge de travail DL, à l'aide de NVIDIA DCGM, Prometheus et Grafana.
Reportez-vous à la page Exportateur DCGM.
Dans une VM à apprentissage profond, exécutez le conteneur de l'exportateur DCGM avec une charge de travail DL qui effectue des opérations d'IA. Une fois la VM à apprentissage profond démarrée, l'exportateur DCGM est prêt à collecter des mesures de vGPU et à exporter les données vers une autre application pour une surveillance et une visualisation accrues. Vous pouvez exécuter la charge de travail DL surveillée dans le cadre du processus cloud-init ou à partir de la ligne de commande après le démarrage de la machine virtuelle.
Composant | Description |
---|---|
Image de conteneur | nvcr.io/nvidia/k8s/dcgm-exporter:ngc_image_tag Par exemple : nvcr.io/nvidia/k8s/dcgm-exporter:3.2.5-3.1.8-ubuntu22.04 Pour plus d'informations sur les images de conteneur de l'exportateur DCGM qui sont prises en charge pour les VM à apprentissage profond, reportez-vous à la section Notes de mise à jour de VMware Deep Learning VM. |
Entrées requises | Pour déployer une charge de travail de l'exportateur DCGM, vous devez définir les propriétés OVF de la machine virtuelle à apprentissage profond de la manière suivante :
Reportez-vous à la section Propriétés OVF des VM à apprentissage profond. |
Sortie |
Ensuite, dans la VM à apprentissage profond, exécutez une charge de travail DL et visualisez les données sur une autre machine virtuelle à l'aide de Prometheus à l'adresse http://visualization_vm_ip:9090 et Grafana à l'adresse http://visualization_vm_ip:3000. |
Exécuter une charge de travail DL sur la VM à apprentissage profond
Exécutez la charge de travail DL pour laquelle vous souhaitez collecter des mesures vGPU et exportez les données vers une autre application pour une surveillance et une visualisation accrues.
- Connectez-vous à la VM à apprentissage profond en tant que vmware via SSH.
- Exécutez le conteneur pour la charge de travail DL, en l'extrayant du catalogue NVIDIA NGC ou d'un registre de conteneur local.
Par exemple, pour exécuter la commande suivante afin de lancer l'image tensorflow-pb24h1:24.03.02-tf2-py3 à partir de NVIDIA NGC :
docker run -d --gpus all -p 8888:8888 nvcr.io/nvidia/tensorflow-pb24h1:24.03.02-tf2-py3 /usr/local/bin/jupyter lab --allow-root --ip=* --port=8888 --no-browser --NotebookApp.token="$TOKEN" --NotebookApp.allow_origin="*" --notebook-dir=/workspace
- Utilisez la charge de travail DL pour le développement de l'IA.
Installer Prometheus et Grafana
Vous pouvez visualiser et surveiller les mesures vGPU à partir de la machine virtuelle de l'exportateur DCGM sur une machine virtuelle exécutant Prometheus et Grafana.
- Créez une VM de visualisation sur laquelle Docker Community Engine est installé.
- Connectez-vous à la VM via SSH et créez un fichier YAML pour Prometheus.
$ cat > prometheus.yml << EOF global: scrape_interval: 15s external_labels: monitor: 'codelab-monitor' scrape_configs: - job_name: 'dcgm' scrape_interval: 5s metrics_path: /metrics static_configs: - targets: [dl_vm_with_dcgm_exporter_ip:9400'] EOF
- Créez un chemin de données.
$ mkdir grafana_data prometheus_data && chmod 777 grafana_data prometheus_data
- Créez un fichier Docker Compose pour installer Prometheus et Grafana.
$ cat > compose.yaml << EOF services: prometheus: image: prom/prometheus:v2.47.2 container_name: "prometheus0" restart: always ports: - "9090:9090" volumes: - "./prometheus.yml:/etc/prometheus/prometheus.yml" - "./prometheus_data:/prometheus" grafana: image: grafana/grafana:10.2.0-ubuntu container_name: "grafana0" ports: - "3000:3000" restart: always volumes: - "./grafana_data:/var/lib/grafana" EOF
- Démarrez les conteneurs Prometheus et Grafana.
$ sudo docker compose up -d
Afficher les mesures vGPU dans Prometheus
Vous pouvez accéder à Prometheus à l'adresse http://visualization-vm-ip:9090. Vous pouvez afficher les informations de vGPU suivantes dans l'interface utilisateur de Prometheus :
Informations | Section de l'interface utilisateur |
---|---|
Mesures de vGPU brutes de la VM à apprentissage profond | Pour afficher les mesures vGPU brutes de la VM à apprentissage profond, cliquez sur l'entrée du point de terminaison. |
Expressions graphiques |
|
Pour plus d'informations sur l'utilisation de Prometheus, reportez-vous à la documentation de Prometheus.
Visualiser les mesures dans Grafana
Définissez Prometheus comme source de données pour Grafana et visualisez les mesures vGPU à partir de la VM à apprentissage profond dans un tableau de bord.
- Accédez à Grafana à l'adresse http://visualization-vm-ip:3000 en utilisant par défaut le nom d'utilisateur admin et le mot de passe
admin
. - Ajoutez Prometheus comme première source de données, en vous connectant à visualization-vm-ip sur le port 9090.
- Créez un tableau de bord avec les mesures vGPU.
Pour plus d'informations sur la configuration d'un tableau de bord à l'aide d'une source de données Prometheus, reportez-vous à la documentation de Grafana.
Serveur d'inférence Triton
Vous pouvez utiliser une VM à apprentissage profond avec un serveur d'inférence Triton pour charger un référentiel de modèles et recevoir des demandes d'inférence.
Reportez-vous à la page Serveur d'inférence Triton.
Composant | Description |
---|---|
Image de conteneur | nvcr.io/nvidia/tritonserver-pb24h1:ngc_image_tag Par exemple : nvcr.io/nvidia/tritonserver-pb24h1:24.03.02-py3 Pour plus d'informations sur les images de conteneur du serveur d'inférence Triton prises en charge pour les VM à apprentissage profond, reportez-vous à la section Notes de mise à jour de VMware Deep Learning VM. |
Entrées requises | Pour déployer une charge de travail du serveur d'inférence Triton, vous devez définir les propriétés OVF de la machine virtuelle à apprentissage profond de la manière suivante :
Reportez-vous à la section Propriétés OVF des VM à apprentissage profond. |
Sortie |
Le référentiel de modèles du serveur d'inférence Triton se trouve dans /home/vmware/model_repository. Initialement, le référentiel de modèles est vide et le journal initial de l'instance du serveur d'inférence Triton indique qu'aucun modèle n'est chargé. |
Créer un référentiel de modèles
Pour charger votre modèle de l'inférence, procédez comme suit :
- Créez le référentiel de votre modèle.
Reportez-vous à la documentation du référentiel de modèles du serveur d'inférence Triton de NVIDIA.
- Copiez le référentiel de modèles dans
/home/vmware/model_repository
afin que le serveur d'inférence Triton puisse le charger.cp -r path_to_your_created_model_repository/* /home/vmware/model_repository/
Envoyer des demandes d'inférence de modèles
- Vérifiez que le serveur d'inférence Triton est sain et que les modèles sont prêts en exécutant cette commande dans la console de VM à apprentissage profond.
curl -v localhost:8000/v2/simple_sequence
- Envoyez une demande au modèle en exécutant cette commande sur la VM à apprentissage profond.
curl -v localhost:8000/v2/models/simple_sequence
Pour plus d'informations sur l'utilisation du serveur d'inférence Triton, reportez-vous à la documentation du référentiel de modèles du serveur d'inférence Triton de NVIDIA.
NVIDIA RAG
Vous pouvez utiliser une VM à apprentissage profond pour créer des solutions de génération augmentée de récupération (RAG) avec un modèle Llama2.
Reportez-vous à la documentation Outil Docker Compose des applications NVIDIA RAG (nécessite des autorisations de compte spécifiques).
Composant | Description |
---|---|
Images et modèles de conteneur | docker-compose-nim-ms.yaml rag-app-multiturn-chatbot/docker-compose.yamldans l'exemple de pipeline NVIDIA RAG. Pour plus d'informations sur les applications de conteneur NVIDIA RAG prises en charge pour les VM à apprentissage profond, reportez-vous à la section Notes de mise à jour de VMware Deep Learning VM. |
Entrées requises | Pour déployer une charge de travail NVIDIA RAG, vous devez définir les propriétés OVF de la machine virtuelle à apprentissage profond de la manière suivante :
Reportez-vous à la section Propriétés OVF des VM à apprentissage profond. |
Sortie |
|
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.
Procédure
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 |
|
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
Configurer une VM à apprentissage profond avec un serveur proxy
Pour connecter votre VM à apprentissage profond à Internet dans un environnement déconnecté où l'accès à Internet se fait sur un serveur proxy, vous devez fournir les détails du serveur proxy dans le fichier config.json de la machine virtuelle.