Quando si distribuisce un'istanza di Deep Learning VM in vSphere IaaS control plane utilizzando kubectl o direttamente in un cluster vSphere, è necessario compilare le proprietà personalizzate della macchina virtuale.
Per informazioni sulle immagini di Deep Learning VM in VMware Private AI Foundation with NVIDIA, vedere Informazioni sulle immagini delle macchine virtuali di deep learning in VMware Private AI Foundation with NVIDIA.
Proprietà OVF delle macchine virtuali di deep learning
Quando si distribuisce un'istanza di Deep Learning VM, è necessario compilare le proprietà della macchina virtuale personalizzate per automatizzare la configurazione del sistema operativo Linux, la distribuzione del driver guest della vGPU, nonché la distribuzione e la configurazione dei container NGC per i carichi di lavoro DL.
L'immagine di Deep Learning VM più recente ha le proprietà OVF seguenti:
Categoria | Parametro | Etichetta in vSphere Client | Descrizione |
---|---|---|---|
Proprietà del sistema operativo di base | instance-id | ID istanza | Obbligatorio. ID istanza univoco per la macchina virtuale. Un ID istanza identifica in modo univoco un'istanza. Quando un ID istanza viene modificato, cloud-init gestisce l'istanza come una nuova istanza ed esegue nuovamente il processo cloud-init. |
hostname | Nome host | Obbligatorio. Nome host dell'appliance. | |
seedfrom | URL da cui effettuare il seeding dei dati dell'istanza | Facoltativo. URL da cui estrarre il valore del parametro user-data e dei metadati. | |
public-keys | Chiave pubblica SSH | Se specificato, l'istanza popola il valore authorized_keys di SSH dell'utente predefinito con questo valore. |
|
user-data | Dati utente codificati | Un set di script o altri metadati che viene inserito nella macchina virtuale al momento del provisioning. Questa proprietà rappresenta il contenuto effettivo dello script cloud-init. Questo valore deve essere codificato tramite base64.
|
|
password | Password utente predefinito | Obbligatorio. Password dell'account utente vmware predefinito. | |
Installazione del driver vGPU |
vgpu-license | Licenza vGPU | Obbligatorio. Token di configurazione del client NVIDIA vGPU. Il token viene salvato nel file /etc/nvidia/ClientConfigToken/client_configuration_token.tok. |
nvidia-portal-api-key | Chiave API portale NVIDIA | Obbligatorio in un ambiente connesso. Chiave API scaricata dal portale delle licenze NVIDIA. La chiave è necessaria per l'installazione del driver guest della vGPU. |
|
vgpu-fallback-version | Versione driver host vGPU | Installa direttamente questa versione del driver guest della vGPU. | |
vgpu-url | URL per i download della vGPU air gap | Obbligatorio in un ambiente disconnesso. URL da cui scaricare il driver guest della vGPU. Per informazioni sulla configurazione necessaria del server Web locale, vedere Preparazione di VMware Cloud Foundation per la distribuzione del carico di lavoro di Private AI. |
|
Automazione del carico di lavoro DL | registry-uri | URI registro | Obbligatorio in un ambiente disconnesso o se si intende utilizzare un registro di container privato per evitare di scaricare immagini da Internet. URI di un registro di container privato con le immagini del container del carico di lavoro di deep learning. Obbligatorio se si fa riferimento a un registro privato in |
registry-user | Nome utente registro | Obbligatorio se si utilizza un registro di container privato che richiede l'autenticazione di base. | |
registry-passwd | Password registro | Obbligatorio se si utilizza un registro di container privato che richiede l'autenticazione di base. | |
registry-2-uri | URI registro secondario | Obbligatorio se si utilizza un secondo registro di container privato basato su Docker che richiede l'autenticazione di base. Ad esempio, quando si distribuisce un'istanza di Deep Learning VM con il carico di lavoro DL di NVIDIA RAG preinstallato, un'immagine di pgvector viene scaricata da Docker Hub. È possibile utilizzare i parametri |
|
registry-2-user | Nome utente registro secondario | Obbligatorio se si utilizza un secondo registro di container privato. | |
registry-2-passwd | Password registro secondario | Obbligatorio se si utilizza un secondo registro di container privato. | |
image-oneliner | Comando a una riga codificato | Comando bash a una riga che viene eseguito al momento del provisioning della macchina virtuale. Questo valore deve essere codificato tramite base64. È possibile utilizzare questa proprietà per specificare il container del carico di lavoro DL che si desidera distribuire, ad esempio PyTorch o TensorFlow. Vedere Carichi di lavoro di deep learning in VMware Private AI Foundation with NVIDIA.
Attenzione: Evitare di utilizzare sia
user-data sia
image-oneliner .
|
|
docker-compose-uri | File di composizione Docker codificato | Obbligatorio se è necessario un file di composizione di Docker per avviare il container di carichi di lavoro DL. Contenuti del file docker-compose.yaml che verranno inseriti nella macchina virtuale al momento del provisioning dopo l'avvio della macchina virtuale con la GPU abilitata. Questo valore deve essere codificato tramite base64. |
|
config-json | config.json codificato | Contenuti di un file di configurazione per l'aggiunta di dettagli per i server proxy. Questo valore deve essere codificato tramite base64. Vedere Configurazione di un'stanza di Deep Learning VM con un server proxy. | |
conda-environment-install | Installazione dell'ambiente Conda | Elenco di ambienti Conda separati da virgole da installare automaticamente al termine della distribuzione della macchina virtuale. Ambienti disponibili: pytorch2.3_py3.12 |
Carichi di lavoro di deep learning in VMware Private AI Foundation with NVIDIA
È possibile eseguire il provisioning di una macchina virtuale di deep learning con un carico di lavoro di deep learning (DL) supportato oltre ai suoi componenti incorporati. I carichi di lavoro DL vengono scaricati dal catalogo NVIDIA NGC e sono ottimizzati per la GPU e convalidati da NVIDIA e VMware by Broadcom.
Per una panoramica delle immagini delle macchine virtuali di deep learning, vedere Informazioni sulle immagini delle macchine virtuali di deep learning in VMware Private AI Foundation with NVIDIA.
Esempio di CUDA
È possibile utilizzare una macchina virtuale di deep learning con esempi CUDA in esecuzione per esplorare l'aggiunta di un vettore, la simulazione gravitazionale di n-corpi o altri esempi in una macchina virtuale. Vedere la pagina Esempi di CUDA.
Dopo l'avvio, la macchina virtuale di deep learning esegue un carico di lavoro di esempio CUDA per testare il driver guest della vGPU. È possibile esaminare l'output del test nel file /var/log/dl.log.
Componente | Descrizione |
---|---|
Immagine del container | nvcr.io/nvidia/k8s/cuda-sample:ngc_image_tagAd esempio: nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda11.7.1-ubi8 Per informazioni sulle immagini di container di esempio CUDA supportate per le macchine virtuali di deep learning, vedere Note di rilascio di VMware Deep Learning VM. |
Input necessari | Per distribuire un carico di lavoro di esempio CUDA, è necessario impostare le proprietà OVF per la macchina virtuale di deep learning nel modo seguente:
Vedere Proprietà OVF delle macchine virtuali di deep learning. |
Output |
|
PyTorch
È possibile utilizzare una macchina virtuale di deep learning con una libreria PyTorch per esplorare AI conversazionale, l'elaborazione del linguaggio naturale (NLP) e altri tipi di modelli AI in una macchina virtuale. Vedere la pagina di PyTorch.
Dopo l'avvio, la macchina virtuale di deep learning avvia un'istanza di JupyterLab con i pacchetti PyTorch installati e configurati.
Componente | Descrizione |
---|---|
Immagine del container | nvcr.io/nvidia/pytorch:ngc_image_tagAd esempio: nvcr.io/nvidia/pytorch:23.10-py3 Per informazioni sulle immagini dei container PyTorch supportate per le macchine virtuali di deep learning, vedere Note di rilascio di VMware Deep Learning VM. |
Input necessari | Per distribuire un carico di lavoro PyTorch, è necessario impostare le proprietà OVF per la macchina virtuale di deep learning nel modo seguente:
Vedere Proprietà OVF delle macchine virtuali di deep learning. |
Output |
|
TensorFlow
È possibile utilizzare una macchina virtuale di deep learning con una libreria TensorFlow per esplorare AI conversazionale, l'elaborazione del linguaggio naturale (NLP) e altri tipi di modelli AI in una macchina virtuale. Vedere la pagina di TensorFlow.
Dopo l'avvio, la macchina virtuale di deep learning avvia un'istanza di JupyterLab con i pacchetti TensorFlow installati e configurati.
Componente | Descrizione |
---|---|
Immagine del container | nvcr.io/nvidia/tensorflow:ngc_image_tag Ad esempio: nvcr.io/nvidia/tensorflow:23.10-tf2-py3 Per informazioni sulle immagini del container TensorFlow supportate per le macchine virtuali di deep learning, vedere Note di rilascio di VMware Deep Learning VM. |
Input necessari | Per distribuire un carico di lavoro TensorFlow, è necessario impostare le proprietà OVF per la macchina virtuale di deep learning nel modo seguente:
Vedere Proprietà OVF delle macchine virtuali di deep learning. |
Output |
|
DCGM Exporter
È possibile utilizzare una macchina virtuale di deep learning con Data Center GPU Manager (DCGM) Exporter per monitorare l'integrità delle GPU e ottenerne le metriche utilizzate da un carico di lavoro DL, tramite NVIDIA DCGM, Prometheus e Grafana.
Vedere la pagina DCGM Exporter.
In una macchina virtuale di deep learning eseguire il container DCGM Exporter insieme a un carico di lavoro DL che esegue le operazioni di AI. Dopo l'avvio di Deep Learning VM, DCGM Exporter è pronto a raccogliere le metriche di vGPU ed esportare i dati in un'altra applicazione per ulteriore monitoraggio e visualizzazione. È possibile eseguire il carico di lavoro DL monitorato come parte del processo cloud-init o dalla riga di comando dopo l'avvio della macchina virtuale.
Componente | Descrizione |
---|---|
Immagine del container | nvcr.io/nvidia/k8s/dcgm-exporter:ngc_image_tag Ad esempio: nvcr.io/nvidia/k8s/dcgm-exporter:3.2.5-3.1.8-ubuntu22.04 Per informazioni sulle immagini di container di DCGM Exporter supportate per le macchine virtuali di deep learning, vedere Note di rilascio di VMware Deep Learning VM. |
Input necessari | Per distribuire un carico di lavoro DCGM Exporter, è necessario impostare le proprietà OVF per la macchina virtuale di deep learning nel modo seguente:
Vedere Proprietà OVF delle macchine virtuali di deep learning. |
Output |
Nella macchina virtuale di deep learning, eseguire quindi un carico di lavoro DL e visualizzare i dati in un'altra macchina virtuale utilizzando Prometheus all'indirizzo http://visualization_vm_ip:9090 e Grafana all'indirizzo http://visualization_vm_ip:3000. |
Esecuzione di un carico di lavoro DL nella macchina virtuale di deep leaning
Eseguire il carico di lavoro DL per cui si desidera raccogliere le metriche vGPU ed esportare i dati in un'altra applicazione per ulteriori informazioni di monitoraggio e visualizzazione.
- Accedere alla macchina virtuale di deep learning come vmware tramite SSH.
- Aggiungere l'account utente vmware al gruppo docker eseguendo il comando seguente.
sudo usermod -aG docker ${USER}
- Eseguire il container per il carico di lavoro DL, estraendolo dal catalogo NVIDIA NGC o da un registro di container locale.
Ad esempio, per eseguire il comando seguente per l'esecuzione dell'immagine tensorflow:23.10-tf2-py3 da NVIDIA NGC:
docker run -d -p 8888:8888 nvcr.io/nvidia/tensorflow:23.10-tf2-py3 /usr/local/bin/jupyter lab --allow-root --ip=* --port=8888 --no-browser --NotebookApp.token='' --NotebookApp.allow_origin='*' --notebook-dir=/workspace
- Iniziare a utilizzare il carico di lavoro DL per lo sviluppo di AI.
Installazione di Prometheus e Grafana
È possibile visualizzare e monitorare le metriche della vGPU dalla macchina virtuale di DCGM Exporter in una macchina virtuale che esegue Prometheus e Grafana.
- Creare una macchina virtuale di visualizzazione in cui è installato Docker Community Engine.
- Connettersi alla macchina virtuale tramite SSH e creare un file YAML per 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
- Creare un percorso dati.
$ mkdir grafana_data prometheus_data && chmod 777 grafana_data prometheus_data
- Creare un file di composizione Docker per installare Prometheus e 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
- Avviare i container di Prometheus e Grafana.
$ sudo docker compose up -d
Visualizzazione delle metriche della vGPU in Prometheus
È possibile accedere a Prometheus all'indirizzo http://visualization-vm-ip:9090. È possibile visualizzare le seguenti informazioni sulla vGPU nell'interfaccia utente di Prometheus:
Informazioni | Sezione dell'interfaccia utente |
---|---|
Metriche della vGPU non elaborate dalla macchina virtuale di deep learning | Per visualizzare le metriche della vGPU non elaborate dalla macchina virtuale di deep learning, fare clic sulla voce dell'endpoint. |
Espressioni del grafico |
|
Per ulteriori informazioni sull'utilizzo di Prometheus, vedere la documentazione di Prometheus.
Visualizzazione delle metriche in Grafana
Impostare Prometheus come origine dati per Grafana e visualizzare le metriche della vGPU dalla macchina virtuale di deep learning in un dashboard.
- Accedere a Grafana all'indirizzo http://visualization-vm-ip:3000 utilizzando il nome utente predefinito admin e la password
admin
. - Aggiungere Prometheus come prima origine dati connettendosi a visualization-vm-ip nella porta 9090.
- Creare un dashboard con le metriche della vGPU.
Per ulteriori informazioni sulla configurazione di un dashboard utilizzando un'origine dati Prometheus, vedere la documentazione di Grafana.
Triton Inference Server
È possibile utilizzare una macchina virtuale di deep learning con Triton Inference Server per caricare un repository di modelli e ricevere richieste di inferenza.
Vedere la pagina Triton Inference Server.
Componente | Descrizione |
---|---|
Immagine del container | nvcr.io/nvidia/tritonserver:ngc_image_tag Ad esempio: nvcr.io/nvidia/tritonserver:23.10-py3 Per informazioni sulle immagini dei container Triton Inference Server supportate per le macchine virtuali di deep learning, vedere Note di rilascio di VMware Deep Learning VM. |
Input necessari | Per distribuire un carico di lavoro Triton Inference Server, è necessario impostare le proprietà OVF per la macchina virtuale di deep learning nel modo seguente:
Vedere Proprietà OVF delle macchine virtuali di deep learning. |
Output |
Il repository di modelli per Triton Inference Server è in /home/vmware/model_repository. Inizialmente, il repository di modelli è vuoto e il registro iniziale dell'istanza di Triton Inference Server indica che non è stato caricato alcun modello. |
Creazione di un repository di modelli
Per caricare il modello per l'inferenza del modello, eseguire i passaggi seguenti:
- Creare il repository di modelli per il proprio modello.
Vedere la documentazione relativa al repository di modelli di NVIDIA Triton Inference Server.
- Copiare il repository di modelli in
/home/vmware/model_repository
in modo che Triton Inference Server possa caricarlo.sudo cp -r path_to_your_created_model_repository/* /home/vmware/model_repository/
Invio di richieste di inferenza del modello
- Verificare che Triton Inference Server sia integro e che i modelli siano pronti eseguendo questo comando nella console della macchina virtuale di deep learning.
curl -v localhost:8000/v2/simple_sequence
- Inviare una richiesta al modello eseguendo questo comando nella macchina virtuale di deep learning.
curl -v localhost:8000/v2/models/simple_sequence
Per ulteriori informazioni sull'utilizzo di Triton Inference Server, vedere la documentazione relativa al repository di modelli di NVIDIA Triton Inference Server.
NVIDIA RAG
È possibile utilizzare una macchina virtuale di deep learning per creare soluzioni RAG (Retrieval Augmented Generation) con un modello Llama2.
Vedere la documentazione NVIDIA RAG Applications Docker Compose (richiede autorizzazioni dell'account specifiche).
Componente | Descrizione |
---|---|
Immagini e modelli di container | rag-app-text-chatbot.yamlnella pipeline di NVIDIA RAG di esempio. Per informazioni sulle applicazioni container NVIDIA RAG supportate per le macchine virtuali di deep learning, vedere Note di rilascio di VMware Deep Learning VM. |
Input necessari | Per distribuire un carico di lavoro NVIDIA RAG, è necessario impostare le proprietà OVF per la macchina virtuale di deep learning nel modo seguente:
Vedere Proprietà OVF delle macchine virtuali di deep learning. |
Output |
|
Assegnazione di un indirizzo IP statico a una macchina virtuale di deep learning in VMware Private AI Foundation with NVIDIA
Per impostazione predefinita, le immagini della macchina virtuale di deep learning sono configurate con l'assegnazione dell'indirizzo DHCP. Se si desidera distribuire una macchina virtuale di deep learning con un indirizzo IP statico direttamente in un cluster vSphere, è necessario aggiungere ulteriore codice alla sezione cloud-init.
Procedura
Esempio: Assegnazione di un indirizzo IP statico a un carico di lavoro di esempio CUDA
Per una macchina virtuale di deep learning di esempio con un carico di lavoro DL di esempio di CUDA:
Elemento macchina virtuale di deep learning | Valore di esempio |
---|---|
Immagine del carico di lavoro DL | nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda11.7.1-ubi8 |
Indirizzo IP | 10.199.118.245 |
Prefisso subnet | /25 |
Gateway | 10.199.118.253 |
Server DNS |
|
si specifica il codice cloud-init seguente:
I2Nsb3VkLWNvbmZpZwp3cml0ZV9maWxlczoKLSBwYXRoOiAvb3B0L2Rsdm0vZGxfYXBwLnNoCiAgcGVybWlzc2lvbnM6ICcwNzU1JwogIGNvbnRlbnQ6IHwKICAgICMhL2Jpbi9iYXNoCiAgICBkb2NrZXIgcnVuIC1kIG52Y3IuaW8vbnZpZGlhL2s4cy9jdWRhLXNhbXBsZTp2ZWN0b3JhZGQtY3VkYTExLjcuMS11Ymk4CgptYW5hZ2VfZXRjX2hvc3RzOiB0cnVlCiAKd3JpdGVfZmlsZXM6CiAgLSBwYXRoOiAvZXRjL25ldHBsYW4vNTAtY2xvdWQtaW5pdC55YW1sCiAgICBwZXJtaXNzaW9uczogJzA2MDAnCiAgICBjb250ZW50OiB8CiAgICAgIG5ldHdvcms6CiAgICAgICAgdmVyc2lvbjogMgogICAgICAgIHJlbmRlcmVyOiBuZXR3b3JrZAogICAgICAgIGV0aGVybmV0czoKICAgICAgICAgIGVuczMzOgogICAgICAgICAgICBkaGNwNDogZmFsc2UgIyBkaXNhYmxlIERIQ1A0CiAgICAgICAgICAgIGFkZHJlc3NlczogWzEwLjE5OS4xMTguMjQ1LzI1XSAgIyBTZXQgdGhlIHN0YXRpYyBJUCBhZGRyZXNzIGFuZCBtYXNrCiAgICAgICAgICAgIHJvdXRlczoKICAgICAgICAgICAgICAgIC0gdG86IGRlZmF1bHQKICAgICAgICAgICAgICAgICAgdmlhOiAxMC4xOTkuMTE4LjI1MyAjIENvbmZpZ3VyZSBnYXRld2F5CiAgICAgICAgICAgIG5hbWVzZXJ2ZXJzOgogICAgICAgICAgICAgIGFkZHJlc3NlczogWzEwLjE0Mi43LjEsIDEwLjEzMi43LjFdICMgUHJvdmlkZSB0aGUgRE5TIHNlcnZlciBhZGRyZXNzLiBTZXBhcmF0ZSBtdWxpdHBsZSBETlMgc2VydmVyIGFkZHJlc3NlcyB3aXRoIGNvbW1hcy4KIApydW5jbWQ6CiAgLSBuZXRwbGFuIGFwcGx5
che corrisponde allo script seguente in formato testo normale:
#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
Configurazione di un'stanza di Deep Learning VM con un server proxy
Per connettere l'istanza di Deep Learning VM a Internet in un ambiente disconnesso in cui l'accesso a Internet viene eseguito tramite un server proxy, è necessario specificare i dettagli del server proxy nel file config.json nella macchina virtuale.