Le immagini delle macchine virtuali di deep learning fornite con VMware Private AI Foundation with NVIDIA sono preconfigurate con le librerie, i framework e i toolkit ML più comuni e sono ottimizzate e convalidate da NVIDIA e VMware per l'accelerazione della GPU in un ambiente VMware Cloud Foundation.

I data scientist possono utilizzare le macchine virtuali di deep learning fornite da queste immagini per la prototipazione, l'ottimizzazione, la convalida e l'inferenza di AI.

Lo stack software per l'esecuzione di applicazioni AI oltre alle GPU NVIDIA viene convalidato in anticipo. Di conseguenza, è possibile avviare direttamente lo sviluppo di AI senza perdere tempo per l'installazione e la convalida della compatibilità di sistemi operativi, librerie software, framework ML, toolkit e driver GPU.

Che cosa contiene un'immagine della macchina virtuale di deep learning?

L'immagine iniziale della macchina virtuale di deep learning contiene il software seguente. Per informazioni sulle versioni dei componenti in ogni versione dell'immagine della macchina virtuale di deep learning, vedere Note di rilascio di VMware Deep Learning VM.

Categoria del componente software Componente software
Incorporato
  • Canonical Ubuntu
  • NVIDIA Container Toolkit
  • Docker Community Engine
Può essere preinstallato automaticamente

Libreria di contenuti per le immagini delle macchine virtuali di deep learning

Le immagini delle macchine virtuali di deep learning vengono fornite come modelli di macchine virtuali vSphere ospitati e pubblicati da VMware in una libreria di contenuti. È possibile utilizzare queste immagini per distribuire una macchina virtuale di deep learning mediante vSphere Client o VMware Aria Automation.

La libreria di contenuti con le immagini delle macchine virtuali di deep learning per VMware Private AI Foundation with NVIDIA è disponibile all'URL https://packages.vmware.com/dl-vm/lib.json. In un ambiente connesso, si crea una libreria di contenuti con sottoscrizione connessa a questo URL mentre in un ambiente disconnesso si crea una libreria di contenuti locale in cui vengono caricate le immagini scaricate dall'URL centrale.

Proprietà OVF delle macchine virtuali di deep learning

Quando si distribuisce una macchina virtuale di deep learning, è 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.

Categoria Parametro Descrizione
Proprietà del sistema operativo di base instance-id 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 Obbligatorio. Nome host dell'appliance.
public-keys Se specificato, l'istanza popola il valore authorized_keys di SSH dell'utente predefinito con questo valore.
user-data

Un set di script o altri metadati che viene inserito nella macchina virtuale al momento del provisioning.

Questa proprietà rappresenta lo script cloud-init effettivo. Questo valore deve essere codificato tramite base64.

password Obbligatorio. Password dell'account utente vmware predefinito.

Installazione del driver vGPU

vgpu-license 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

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 del driver guest della vGPU a cui eseguire il fallback se la versione del driver guest della vGPU non può essere stabilita utilizzando la chiave API di licenza immessa.
vgpu-url

Obbligatorio in un ambiente disconnesso. URL da cui scaricare il driver guest della vGPU.

Automazione del carico di lavoro DL registry-uri 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 user-data o image-oneliner.

registry-user Obbligatorio se si utilizza un registro di container privato che richiede l'autenticazione di base.
registry-passwd Obbligatorio se si utilizza un registro di container privato che richiede l'autenticazione di base.
registry-2-uri Obbligatorio se si utilizza un secondo registro di container privato basato su Docker e l'autenticazione di base necessaria.
registry-2-user Obbligatorio se si utilizza un secondo registro di container privato.
registry-2-passwd Obbligatorio se si utilizza un secondo registro di container privato.
image-oneliner 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.

Nota: Se vengono specificati sia user-data sia image-oneliner, viene utilizzato il valore di user-data.
docker-compose-uri URI del file di composizione di Docker. Obbligatorio se è necessario un file di composizione di Docker per avviare il container di carichi di lavoro DL. Questo valore deve essere codificato tramite base64.
config-json File di configurazione per più operazioni di accesso del registro dei container quando si utilizza un file di composizione di Docker. Questo valore deve essere codificato tramite base64.

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.

In vSphere with Tanzu, l'assegnazione dell'indirizzo IP è determinata dalla configurazione di rete per il supervisore in NSX.

Procedura

  1. Creare uno script cloud-init in formato testo normale per il carico di lavoro DL che si intende utilizzare.
  2. Inserire il codice aggiuntivo seguente nello 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. Codificare lo script cloud-init risultante in formato base64.
  4. Impostare lo script cloud-init risultante in formato base64 come valore per il parametro OVF user-data dell'immagine della macchina virtuale di deep learning.

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
  • 10.142.7.1
  • 10.132.7.1

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