Die im Rahmen von VMware Private AI Foundation with NVIDIA bereitgestellten Deep Learning-VM-Images sind mit gängigen ML-Bibliotheken, Frameworks und Toolkits vorkonfiguriert und werden von NVIDIA und VMware für die GPU-Beschleunigung in einer VMware Cloud Foundation-Umgebung optimiert und validiert.

Datenwissenschaftler können die über diese Images bereitgestellten Deep Learning-VMs für KI-Prototyperstellung, Feinabstimmung, Validierung und Rückschlüsse verwenden.

Der Software-Stack für die Ausführung von KI-Anwendungen auf NVIDIA GPUs wird im Voraus validiert. Folglich beginnen Sie direkt mit der KI-Entwicklung, ohne Zeit für die Installation und Validierung der Kompatibilität von Betriebssystemen, Softwarebibliotheken, ML-Frameworks, Toolkits und GPU-Treibern aufwenden zu müssen.

Was enthält ein Deep Learning-VM-Image?

Das anfängliche Image der Deep Learning-VM enthält die folgende Software. Informationen zu den Komponentenversionen in jeder Deep Learning-VM-Image-Version finden Sie unter Versionshinweise zu VMware Deep Learning VM.

Softwarekomponentenkategorie Softwarekomponente
Eingebettet
  • Kanonisches Ubuntu
  • NVIDIA-Container-Toolkit
  • Docker-Community-Engine
Kann automatisch vorinstalliert werden

Inhaltsbibliothek für Deep Learning-VM-Images

Deep Learning-VM-Images werden als vSphere VM-Vorlagen bereitgestellt, die von VMware in einer Inhaltsbibliothek gehostet und veröffentlicht werden. Sie können diese Images verwenden, um Deep Learning-VMs mithilfe des vSphere Client oder VMware Aria Automation bereitzustellen.

Die Inhaltsbibliothek mit Deep Learning-VM-Images für VMware Private AI Foundation with NVIDIA ist über die https://packages.vmware.com/dl-vm/lib.json-URL verfügbar. In einer verbundenen Umgebung erstellen Sie eine abonnierte Inhaltsbibliothek, die mit dieser URL verbunden ist. In einer getrennten Umgebung erstellen Sie eine lokale Inhaltsbibliothek, in der Sie die über die zentrale URL heruntergeladene Bilder hochladen.

OVF-Eigenschaften von Deep Learning-VMs

Wenn Sie eine Deep Learning-VM bereitstellen, müssen Sie benutzerdefinierte VM-Eigenschaften ausfüllen, um die Konfiguration des Linux-Betriebssystems, die Bereitstellung des vGPU-Gasttreibers und die Bereitstellung und Konfiguration von NGC-Containern für die DL-Arbeitslasten zu automatisieren.

Kategorie Parameter Beschreibung
Eigenschaften des Basisbetriebssystems instance-id Erforderlich. Eine eindeutige Instanz-ID für die VM-Instanz.

Eine Instanz-ID identifiziert eine Instanz eindeutig. Wenn sich eine Instanz-ID ändert, behandelt cloud-init die Instanz als neue Instanz und führt den cloud-init-Prozess erneut für aus.

hostname Erforderlich. Der Hostname der Appliance.
public-keys Wenn angegeben, füllt die Instanz die SSH-authorized_keys des Standardbenutzers mit diesem Wert auf.
user-data

Ein Satz von Skripts oder anderen Metadaten, die zum Zeitpunkt der Bereitstellung in die VM eingefügt werden.

Diese Eigenschaft ist das eigentliche cloud-init-Skript. Dieser Wert muss base64-verschlüsselt werden.

password Erforderlich. Das Kennwort für das vmware-Standardbenutzerkonto.

vGPU-Treiberinstallation

vgpu-license Erforderlich. Das Konfigurationstoken des NVIDIA vGPU-Clients. Das Token wird in der Datei /etc/nvidia/ClientConfigToken/client_configuration_token.tok gespeichert.
nvidia-portal-api-key

In einer verbundenen Umgebung erforderlich. Der API-Schlüssel, den Sie vom NVIDIA-Lizenzierungsportal heruntergeladen haben. Der Schlüssel ist für die Installation des vGPU-Gasttreibers erforderlich.

vgpu-fallback-version Die Version des vGPU-Gasttreibers, auf den zurückgegriffen werden soll, wenn die Version des vGPU-Gasttreibers nicht mithilfe des eingegebenen Lizenz-API-Schlüssels ermittelt werden kann.
vgpu-url

In einer nicht verbundenen Umgebung erforderlich. Die URL zum Herunterladen des vGPU-Gasttreibers.

Automatisierung von DL-Arbeitslasten registry-uri Erforderlich in einer nicht verbundenen Umgebung oder wenn Sie eine private Containerregistrierung verwenden möchten, um das Herunterladen von Images aus dem Internet zu vermeiden. Der URI einer privaten Containerregistrierung mit den Deep Learning-Arbeitslast-Container-Images.

Erforderlich, wenn Sie auf eine private Registrierung in user-data oder image-oneliner verweisen.

registry-user Erforderlich, wenn Sie eine private Containerregistrierung verwenden, für die eine Standardauthentifizierung erforderlich ist.
registry-passwd Erforderlich, wenn Sie eine private Containerregistrierung verwenden, für die eine Standardauthentifizierung erforderlich ist.
registry-2-uri Erforderlich, wenn Sie eine zweite private Containerregistrierung verwenden, die auf Docker und der erforderlichen Standardauthentifizierung basiert.
registry-2-user Erforderlich, wenn Sie eine zweite private Containerregistrierung verwenden.
registry-2-passwd Erforderlich, wenn Sie eine zweite private Containerregistrierung verwenden.
image-oneliner Ein einzeilige Bash-Befehl, der bei der VM-Bereitstellung ausgeführt wird. Dieser Wert muss base64-verschlüsselt werden.

Sie können diese Eigenschaft verwenden, um den DL-Arbeitslastcontainer anzugeben, den Sie bereitstellen möchten, z. B. PyTorch oder TensorFlow. Weitere Informationen finden Sie unter Deep Learning-Arbeitslasten in VMware Private AI Foundation with NVIDIA.

Hinweis: Wenn sowohl user-data als auch image-oneliner angegeben werden, wird der Wert user-data verwendet.
docker-compose-uri URI der Docker-Erstellungsdatei. Erforderlich, wenn Sie eine Docker-Erstellungsdatei benötigen, um den DL-Arbeitslastcontainer zu starten. Dieser Wert muss base64-verschlüsselt werden.
config-json Konfigurationsdatei für mehrere Anmeldevorgänge in der Containerregistrierung bei Verwendung einer Docker-Erstellungsdatei. Dieser Wert muss base64-verschlüsselt werden.

Zuweisen einer statischen IP-Adresse zu einer Deep Learning-VM in VMware Private AI Foundation with NVIDIA

Standardmäßig werden die Deep Learning-VM-Images auf Zuweisung von Adressen mittels DHCP konfiguriert. Wenn Sie eine Deep Learning-VM mit einer statischen IP-Adresse direkt auf einem vSphere-Cluster bereitstellen möchten, müssen Sie dem Abschnitt „cloud-init“ zusätzlichen Code hinzufügen.

Auf vSphere with Tanzu wird die Zuweisung von IP-Adressen durch die Netzwerkkonfiguration für den Supervisor in NSX bestimmt.

Prozedur

  1. Erstellen Sie ein cloud-init-Skript im Klartextformat für die DL-Arbeitslast, die Sie verwenden möchten.
  2. Fügen Sie dem cloud-init-Skript den folgenden zusätzlichen Code hinzu.
    #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. Codieren Sie das resultierende cloud-init-Skript im base64-Format.
  4. Legen Sie das resultierende cloud-init-Skript im base64-Format als Wert auf den user-data-OVF-Parameter des Deep Learning-VM-Images fest.

Beispiel: Zuweisen einer statischen IP-Adresse zu einer CUDA-Beispielarbeitslast

Für ein Beispiel für eine Deep Learning-VM mit einer CUDA-Beispiel-DL-Arbeitslast:

Deep Learning-VM-Element Beispielwert
DL-Arbeitslast-Image nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda11.7.1-ubi8
IP-Adresse 10.199.118.245
Subnetzpräfix /25
Gateway 10.199.118.253
DNS-Server
  • 10.142.7.1
  • 10.132.7.1

Stellen Sie den folgenden cloud-init-Code bereit:

I2Nsb3VkLWNvbmZpZwp3cml0ZV9maWxlczoKLSBwYXRoOiAvb3B0L2Rsdm0vZGxfYXBwLnNoCiAgcGVybWlzc2lvbnM6ICcwNzU1JwogIGNvbnRlbnQ6IHwKICAgICMhL2Jpbi9iYXNoCiAgICBkb2NrZXIgcnVuIC1kIG52Y3IuaW8vbnZpZGlhL2s4cy9jdWRhLXNhbXBsZTp2ZWN0b3JhZGQtY3VkYTExLjcuMS11Ymk4CgptYW5hZ2VfZXRjX2hvc3RzOiB0cnVlCiAKd3JpdGVfZmlsZXM6CiAgLSBwYXRoOiAvZXRjL25ldHBsYW4vNTAtY2xvdWQtaW5pdC55YW1sCiAgICBwZXJtaXNzaW9uczogJzA2MDAnCiAgICBjb250ZW50OiB8CiAgICAgIG5ldHdvcms6CiAgICAgICAgdmVyc2lvbjogMgogICAgICAgIHJlbmRlcmVyOiBuZXR3b3JrZAogICAgICAgIGV0aGVybmV0czoKICAgICAgICAgIGVuczMzOgogICAgICAgICAgICBkaGNwNDogZmFsc2UgIyBkaXNhYmxlIERIQ1A0CiAgICAgICAgICAgIGFkZHJlc3NlczogWzEwLjE5OS4xMTguMjQ1LzI1XSAgIyBTZXQgdGhlIHN0YXRpYyBJUCBhZGRyZXNzIGFuZCBtYXNrCiAgICAgICAgICAgIHJvdXRlczoKICAgICAgICAgICAgICAgIC0gdG86IGRlZmF1bHQKICAgICAgICAgICAgICAgICAgdmlhOiAxMC4xOTkuMTE4LjI1MyAjIENvbmZpZ3VyZSBnYXRld2F5CiAgICAgICAgICAgIG5hbWVzZXJ2ZXJzOgogICAgICAgICAgICAgIGFkZHJlc3NlczogWzEwLjE0Mi43LjEsIDEwLjEzMi43LjFdICMgUHJvdmlkZSB0aGUgRE5TIHNlcnZlciBhZGRyZXNzLiBTZXBhcmF0ZSBtdWxpdHBsZSBETlMgc2VydmVyIGFkZHJlc3NlcyB3aXRoIGNvbW1hcy4KIApydW5jbWQ6CiAgLSBuZXRwbGFuIGFwcGx5

was dem folgenden Skript im Klartextformat entspricht:

#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