VMware Private AI Foundation with NVIDIA の一部として提供されるディープ ラーニング仮想マシン イメージは、一般的な ML ライブラリ、フレームワーク、ツールキットで事前構成されており、NVIDIA と VMware によって、VMware Cloud Foundation 環境での GPU アクセラレーション用に最適化され、検証されています。

データ サイエンティストは、これらのイメージからプロビジョニングされたディープ ラーニング仮想マシンを使用して、AI のプロトタイピング、微調整、検証、推論を行うことができます。

NVIDIA GPU 上で AI アプリケーションを実行するためのソフトウェア スタックは、事前に検証されています。その結果、オペレーティング システム、ソフトウェア ライブラリ、ML フレームワーク、ツールキット、GPU ドライバのインストールと互換性の検証に時間を費やすことなく、AI 開発を直接開始できます。

ディープ ラーニング仮想マシン イメージの内容

最初のディープ ラーニング仮想マシン イメージには、次のソフトウェアが含まれています。各ディープ ラーニング仮想マシン イメージ リリースのコンポーネント バージョンについては、『VMware ディープ ラーニング仮想マシン リリース ノート』を参照してください。

ソフトウェア コンポーネント カテゴリ ソフトウェア コンポーネント
組み込み
  • Canonical Ubuntu
  • NVIDIA Container Toolkit
  • Docker Community Engine
自動的にプリインストール可能

ディープ ラーニング仮想マシン イメージのコンテンツ ライブラリ

ディープ ラーニング仮想マシン イメージは、vSphere 仮想マシン テンプレートとして提供され、コンテンツ ライブラリで VMware によってホストおよび公開されます。これらのイメージを使用して、vSphere Client または VMware Aria Automation でディープ ラーニング仮想マシンを展開できます。

VMware Private AI Foundation with NVIDIA のディープ ラーニング仮想マシン イメージを含むコンテンツ ライブラリは、https://packages.vmware.com/dl-vm/lib.json URL で入手できます。接続された環境では、この URL に接続されたサブスクライブ済みコンテンツ ライブラリを作成し、切断された環境では、中央 URL からダウンロードしたイメージをアップロードするローカル コンテンツ ライブラリを作成します。

ディープ ラーニング仮想マシンの OVF プロパティ

ディープ ラーニング仮想マシンを展開する場合、カスタム仮想マシンのプロパティを入力して、Linux オペレーティング システムの構成、vGPU ゲスト ドライバの展開、DL ワークロード用の NGC コンテナの展開と構成を自動化する必要があります。

カテゴリ パラメータ 説明
基本 OS プロパティ instance-id 必須。仮想マシン インスタンスの一意のインスタンス ID。

インスタンス ID は、インスタンスを一意に識別します。インスタンス ID が変更されると、cloud-init はインスタンスを新しいインスタンスとして扱い、cloud-init プロセスを再度実行します。

hostname 必須。アプライアンスのホスト名。
public-keys 指定すると、インスタンスはデフォルト ユーザーの SSH authorized_keys にこの値を入力します。
user-data

プロビジョニング時に仮想マシンに挿入される一連のスクリプトまたはその他のメタデータ。

このプロパティは、実際には cloud-init スクリプトです。この値は base64 でエンコードされている必要があります。

password 必須。デフォルトの vmware ユーザー アカウントのパスワード。

vGPU ドライバのインストール

vgpu-license 必須。NVIDIA vGPU クライアント構成トークン。トークンは、/etc/nvidia/ClientConfigToken/client_configuration_token.tok ファイルに保存されます。
nvidia-portal-api-key

接続された環境に必須です。NVIDIA ライセンス ポータルからダウンロードした API キー。このキーは、vGPU ゲスト ドライバのインストールに必須です。

vgpu-fallback-version 入力したライセンス API キーを使用して vGPU ゲスト ドライバのバージョンを決定できない場合にフォールバックする vGPU ゲスト ドライバのバージョン。
vgpu-url

切断された環境に必須です。vGPU ゲスト ドライバをダウンロードする URL。

DL ワークロードの自動化 registry-uri 切断された環境、またはインターネットからイメージをダウンロードしないようにプライベート コンテナ レジストリを使用する場合に必須です。ディープ ラーニング ワークロード コンテナ イメージを含むプライベート コンテナ レジストリの URI。

user-data または image-oneliner のプライベート レジストリを参照する場合に必須です。

registry-user 基本認証を必要とするプライベート コンテナ レジストリを使用している場合に必須です。
registry-passwd 基本認証を必要とするプライベート コンテナ レジストリを使用している場合に必須です。
registry-2-uri Docker に基づき基本認証を必要とする 2 番目のプライベート コンテナ レジストリを使用している場合に必須です。
registry-2-user 2 番目のプライベート コンテナ レジストリを使用している場合に必須です。
registry-2-passwd 2 番目のプライベート コンテナ レジストリを使用している場合に必須です。
image-oneliner 仮想マシンのプロビジョニング時に実行される 1 行の bash コマンド。この値は base64 でエンコードされている必要があります。

このプロパティを使用して、PyTorch や TensorFlow など、展開する DL ワークロード コンテナを指定できます。VMware Private AI Foundation with NVIDIA のディープ ラーニング ワークロードを参照してください。

注: user-dataimage-oneliner の両方が指定されている場合は、 user-data の値が使用されます。
docker-compose-uri Docker Compose ファイルの URI。DL ワークロード コンテナを起動するために Docker Compose ファイルが必要な場合に必須です。この値は base64 でエンコードされている必要があります。
config-json Docker Compose ファイルを使用する場合の複数のコンテナ レジストリ ログイン操作の構成ファイル。この値は base64 でエンコードされている必要があります。

VMware Private AI Foundation with NVIDIA でディープ ラーニング仮想マシンに静的 IP アドレスを割り当てる

デフォルトでは、ディープ ラーニング仮想マシン イメージは DHCP アドレス割り当てで構成されます。vSphere クラスタに静的 IP アドレスを持つディープ ラーニング仮想マシンを直接展開する場合は、cloud-init セクションにコードを追加する必要があります。

vSphere with Tanzu では、IP アドレスの割り当ては NSX のスーパーバイザーのネットワーク構成によって決まります。

手順

  1. 使用する予定の DL ワークロード用に、プレーンテキスト形式の cloud-init スクリプトを作成します。
  2. 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. 作成した cloud-init スクリプトを base64 形式でエンコードします。
  4. 生成された base64 形式の cloud-init スクリプトを、ディープ ラーニング仮想マシン イメージの user-data OVF パラメータへの値として設定します。

例: CUDA サンプル ワークロードへの静的 IP アドレスの割り当て

CUDA サンプル DL ワークロードを含むディープ ラーニング仮想マシンの例:

ディープ ラーニング仮想マシン要素 値の例
DL ワークロード イメージ nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda11.7.1-ubi8
IP アドレス 10.199.118.245
サブネット プリフィックス /25
ゲートウェイ 10.199.118.253
DNS サーバ
  • 10.142.7.1
  • 10.132.7.1

次の cloud-init コードを指定します。

I2Nsb3VkLWNvbmZpZwp3cml0ZV9maWxlczoKLSBwYXRoOiAvb3B0L2Rsdm0vZGxfYXBwLnNoCiAgcGVybWlzc2lvbnM6ICcwNzU1JwogIGNvbnRlbnQ6IHwKICAgICMhL2Jpbi9iYXNoCiAgICBkb2NrZXIgcnVuIC1kIG52Y3IuaW8vbnZpZGlhL2s4cy9jdWRhLXNhbXBsZTp2ZWN0b3JhZGQtY3VkYTExLjcuMS11Ymk4CgptYW5hZ2VfZXRjX2hvc3RzOiB0cnVlCiAKd3JpdGVfZmlsZXM6CiAgLSBwYXRoOiAvZXRjL25ldHBsYW4vNTAtY2xvdWQtaW5pdC55YW1sCiAgICBwZXJtaXNzaW9uczogJzA2MDAnCiAgICBjb250ZW50OiB8CiAgICAgIG5ldHdvcms6CiAgICAgICAgdmVyc2lvbjogMgogICAgICAgIHJlbmRlcmVyOiBuZXR3b3JrZAogICAgICAgIGV0aGVybmV0czoKICAgICAgICAgIGVuczMzOgogICAgICAgICAgICBkaGNwNDogZmFsc2UgIyBkaXNhYmxlIERIQ1A0CiAgICAgICAgICAgIGFkZHJlc3NlczogWzEwLjE5OS4xMTguMjQ1LzI1XSAgIyBTZXQgdGhlIHN0YXRpYyBJUCBhZGRyZXNzIGFuZCBtYXNrCiAgICAgICAgICAgIHJvdXRlczoKICAgICAgICAgICAgICAgIC0gdG86IGRlZmF1bHQKICAgICAgICAgICAgICAgICAgdmlhOiAxMC4xOTkuMTE4LjI1MyAjIENvbmZpZ3VyZSBnYXRld2F5CiAgICAgICAgICAgIG5hbWVzZXJ2ZXJzOgogICAgICAgICAgICAgIGFkZHJlc3NlczogWzEwLjE0Mi43LjEsIDEwLjEzMi43LjFdICMgUHJvdmlkZSB0aGUgRE5TIHNlcnZlciBhZGRyZXNzLiBTZXBhcmF0ZSBtdWxpdHBsZSBETlMgc2VydmVyIGFkZHJlc3NlcyB3aXRoIGNvbW1hcy4KIApydW5jbWQ6CiAgLSBuZXRwbGFuIGFwcGx5

これは、プレーンテキスト形式の次のスクリプトに対応します。

#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