AI 最適化 A4X Max インスタンスを作成する

このドキュメントでは、A4X Max アクセラレータ最適化マシンタイプを使用するスタンドアロン Compute Engine インスタンスを作成する手順について説明します。コンピューティング インスタンスとクラスタの作成オプションについては、デプロイ オプションの概要をご覧ください。

A4X Max インスタンス タイプ

Compute Engine インスタンス(コンピューティング インスタンス)は、Google のインフラストラクチャでホストされるコンピューティング リソースです。仮想マシン(VM)またはベアメタル インスタンスのいずれかになります。A4X Max インスタンスはベアメタル インスタンスとして使用できます。ベアメタル インスタンスは、基盤となる物理ハードウェアに直接アクセスできるため、VM インスタンスとは異なります。A4X Max マシンタイプの詳細については、Compute Engine ドキュメントの A4X Max シリーズをご覧ください。

制限事項

スタンドアロン A4X Max インスタンスを作成する場合、次の制限が適用されます。

始める前に

A4X Max インスタンスを作成する前に、次の手順を完了します(まだ完了していない場合)。

  1. 使用オプションを選択する: 選択した使用オプションによって、GPU リソースの取得方法と使用方法が決まります。

    詳細については、使用オプションを選択するをご覧ください。

  2. 容量を取得する: 容量を取得するプロセスは、使用オプションごとに異なります。

    選択した使用オプションの容量を取得するプロセスについては、容量の概要をご覧ください。

必要なロール

コンピューティング インスタンスの作成に必要な権限を取得するには、プロジェクトに対する Compute インスタンス管理者(v1) roles/compute.instanceAdmin.v1)IAM ロールを付与するよう管理者に依頼します。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

この事前定義ロールには、コンピューティング インスタンスの作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

コンピューティング インスタンスを作成するには、次の権限が必要です。

  • プロジェクトに対する compute.instances.create
  • カスタム イメージを使用して VM を作成する: イメージに対する compute.images.useReadOnly
  • スナップショットを使用して VM を作成する: スナップショットに対する compute.snapshots.useReadOnly
  • インスタンス テンプレートを使用して VM を作成する: インスタンス テンプレートに対する compute.instanceTemplates.useReadOnly
  • VM のサブネットを指定する: プロジェクトまたは選択したサブネットに対する compute.subnetworks.use
  • VM の静的 IP アドレスを指定する: プロジェクトに対する compute.addresses.use
  • VPC ネットワークの使用時に VM に外部 IP アドレスを割り当てる: プロジェクトまたは選択したサブネットに対する compute.subnetworks.useExternalIp
  • VM にレガシー ネットワークを割り当てる: プロジェクトに対する compute.networks.use
  • レガシー ネットワークを使用する際に VM に外部 IP アドレスを割り当てる: プロジェクトに対する compute.networks.useExternalIp
  • VM の VM インスタンス メタデータを設定する: プロジェクトに対する compute.instances.setMetadata
  • VM にタグを設定する: VM に対する compute.instances.setTags
  • VM にラベルを設定する: VM に対する compute.instances.setLabels
  • VM が使用するサービス アカウントを設定する: VM に対する compute.instances.setServiceAccount
  • VM 用の新しいディスクを作成する: プロジェクトに対する compute.disks.create
  • 既存のディスクを読み取り専用モードまたは読み取り / 書き込みモードでアタッチする: ディスクに対する compute.disks.use
  • 既存のディスクを読み取り専用モードでアタッチする: ディスクに対する compute.disks.useReadOnly

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

A4X Max の基本

A4X Max クラスタは、大規模な非ブロッキング ネットワーク パフォーマンスを実現するために、ブロックとサブブロックの階層に編成されています。このトポロジを理解することは、容量を予約してワークロードをデプロイする際に重要です。

A4X Max インスタンス
A4X Max インスタンスは、4 個の GPU が接続された単一の A4X Max マシンタイプです。
サブブロック
サブブロックは、A4X Max 容量の基本単位です。A4X Max の場合、サブブロックは 18 個の A4X Max インスタンス(72 個の GPU)で構成されます。これらのインスタンスは NVLink ドメインを形成し、マルチノード NVLink システムを使用して接続されます。1x72 トポロジを指定するコンパクト プレースメント ポリシーを適用して、A4X Max サブブロックを作成します。
ブロック
A4X Max ブロックは 25 個のサブブロック(NVLink ドメイン)で構成され、最大 450 個の A4X Max インスタンス(1,800 個の GPU)を合計します。サブブロックは、効率的なスケーリングのためにレールに沿って配置されています。各サブブロックには、コンパクト プレースメント ポリシーが必要です。したがって、単一の A4X Max ブロックに対して 25 個のコンパクト プレースメント ポリシーを作成できます。

次の表に、A4X Max インスタンスでサポートされているトポロジ オプションを示します。

トポロジ(gpuTopology GPU の数 インスタンス数
1x72 72 18

概要

A4X Max マシンタイプを使用してインスタンスを作成する手順は次のとおりです。

  1. VPC ネットワークを作成する
  2. コンパクト プレースメント ポリシーを作成する
  3. インスタンスを作成する

VPC ネットワークを作成する

A4X Max マシンタイプのネットワークを設定するには、次のネットワーク インターフェース用に 2 つの VPC ネットワークを作成します。

  • IDPF ネットワーク インターフェース(NIC)用の 2 つのサブネットがある 1 つの標準 VPC ネットワーク。ホスト間通信に使用されます。
  • 複数の A4X Max サブブロックを作成する場合は、CX-8 NIC 用の RoCE ネットワーク プロファイルを持つ 1 つの VPC ネットワーク。RoCE VPC ネットワークは、自動的に提供される default-subnet-1-RDMA_NAME_PREFIX-net という名前の単一のサブネットを使用し、8 つの CX-8 NIC すべてがこのサブネットを使用します。これらの NIC は RDMA over Converged Ethernet(RoCE)を使用し、複数の A4X Max サブブロックへのスケールアウトに不可欠な高帯域幅で低レイテンシの通信を提供します。単一の A4X Max サブブロックの場合、単一のサブブロック内では GPU 間の直接通信がマルチノード NVLink によって処理されるため、この VPC ネットワークをスキップできます。

NIC の配置の詳細については、ネットワーク帯域幅と NIC の配置を確認するをご覧ください。

手順ガイドに沿って、手動または自動(提供されたスクリプト)でネットワークを作成します。

手順ガイド

ネットワークを作成するには、次の操作を行います。

これらの VPC ネットワークでは、最大伝送単位(MTU)をより大きい値に設定することをおすすめします。A4X Max マシンタイプの場合、推奨される MTU は 8896 バイトです。他の GPU マシンタイプの推奨 MTU 設定を確認するには、GPU マシンタイプの MTU 設定をご覧ください。

スクリプト

ネットワークを作成する手順は次のとおりです。

これらの VPC ネットワークでは、最大伝送単位(MTU)をより大きい値に設定することをおすすめします。A4X Max マシンタイプの場合、推奨される MTU は 8896 バイトです。他の GPU マシンタイプの推奨 MTU 設定を確認するには、GPU マシンタイプの MTU 設定をご覧ください。

  1. 次のスクリプトを使用して、IDPF NIC の通常の VPC ネットワークを作成します。

      
        #!/bin/bash
    
        # Create regular VPC network for the IDPF NICs
        gcloud compute networks create IDPF_NETWORK_PREFIX-net \
          --subnet-mode=custom \
          --mtu=8896 \
          --enable-ula-internal-ipv6
    
        # Create subnets for the IDPF NICs
        for N in $(seq 0 1); do
          gcloud compute networks subnets create IDPF_NETWORK_PREFIX-$N \
            --network=IDPF_NETWORK_PREFIX-net \
            --region=REGION \
            --stack-type=IPV6_ONLY \
            --ipv6-access-type=INTERNAL
        done
    
        gcloud compute firewall-rules create IDPF_NETWORK_PREFIX-internal \
          --network=IDPF_NETWORK_PREFIX-net \
          --action=ALLOW \
          --rules=tcp:0-65535,udp:0-65535,58 \
          --source-ranges=IP_RANGE
    
    
      
  2. 複数の A4X Max サブブロックが必要な場合は、次のスクリプトを使用して、各 A4X Max インスタンスの 4 つの CX-8 NIC の RoCE VPC ネットワークとサブネットを作成します。

      
        #!/bin/bash
    
        # List and make sure network profiles exist in the machine type's zone
        gcloud compute network-profiles list --filter "location.name=ZONE"
    
        # Create network for RDMA NICs
        gcloud compute networks create RDMA_NAME_PREFIX-net \
          --network-profile=ZONE-vpc-roce-metal \
          --subnet-mode custom \
          --mtu=8896
    
        # For RoCE VPC networks for bare metal instances, a single subnet named
        # default-subnet-1-RDMA_NAME_PREFIX-net is automatically provided.
        # For more details, see https://cloud.google.com/vpc/docs/rdma-network-profiles.
    
      

    次のように置き換えます。

    • IDPF_NETWORK_PREFIX: IDPF NIC の標準 VPC ネットワークとサブネットに使用するカスタム名の接頭辞。
    • RDMA_NAME_PREFIX: CX-8 NIC の RoCE VPC ネットワークとサブネットに使用するカスタム名の接頭辞。
    • ZONE: 使用するマシンタイプが使用可能なゾーン(us-central1-a など)を指定します。リージョンの詳細については、リージョンおよびゾーン別の GPU の可用性をご覧ください。
    • REGION: サブネットを作成するリージョン。このリージョンは、指定したゾーンに対応している必要があります。たとえば、ゾーンが us-central1-a の場合、リージョンは us-central1 です。
    • IP_RANGE: SSH ファイアウォール ルールに使用する IP 範囲。
  3. 省略可: VPC ネットワーク リソースが正常に作成されたことを確認するには、 Google Cloud コンソールでネットワーク設定を確認します。
    1. Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。

      [VPC ネットワーク] に移動

    2. リストで、前の手順で作成したネットワークを検索します。
    3. サブネット、ファイアウォール ルール、その他のネットワーク設定を表示するには、ネットワークの名前をクリックします。

コンパクト プレースメント ポリシーを作成する

コンパクト プレースメント ポリシーを作成するには、次のいずれかのオプションを選択します。

gcloud

コンパクト プレースメント ポリシーを作成するには、gcloud beta compute resource-policies create group-placement コマンドを使用します。

gcloud beta compute resource-policies create group-placement POLICY_NAME \
    --collocation=collocated \
    --gpu-topology=1x72 \
    --region=REGION

次のように置き換えます。

  • POLICY_NAME: コンパクト プレースメント ポリシーの名前。
  • REGION: コンパクト プレースメント ポリシーを作成するリージョン。使用するマシンタイプが利用可能なリージョンを指定します。リージョンの詳細については、リージョンおよびゾーン別の GPU の可用性をご覧ください。

REST

コンパクト プレースメント ポリシーを作成するには、ベータ版の resourcePolicies.insert メソッドPOST リクエストを送信します。

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/resourcePolicies
  {
    "name": "POLICY_NAME",
    "groupPlacementPolicy": {
      "collocation": "COLLOCATED",
      "gpuTopology": "1x72"
    }
  }

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID。
  • POLICY_NAME: コンパクト プレースメント ポリシーの名前。
  • REGION: コンパクト プレースメント ポリシーを作成するリージョン。使用するマシンタイプが利用可能なリージョンを指定します。リージョンの詳細については、リージョンおよびゾーン別の GPU の可用性をご覧ください。

A4X Max インスタンスを作成する

1x72 の GPU トポロジを取得するには、18 個の A4X Max インスタンスを作成します。インスタンスを作成するときに、gpuTopology フィールドを指定するコンパクト プレースメント ポリシーを適用します。ポリシーを適用すると、Compute Engine は 1 つのサブブロックに 18 個の A4X Max インスタンスをすべて作成し、NVLink ドメインを使用します。サブブロックに A4X Max インスタンスの容量がない場合、インスタンスを作成するリクエストは失敗します。

A4X Max インスタンスを作成するには、次のいずれかのオプションを選択します。

次のコマンドは、インスタンスのアクセス スコープも設定します。権限管理を簡素化するには、インスタンスのアクセス スコープを cloud-platform アクセスに設定し、IAM ロールを使用してインスタンスがアクセスできるサービスを定義することをおすすめします。詳細については、スコープのベスト プラクティスをご覧ください。

gcloud

A4X Max インスタンスを作成するには、 gcloud compute instances create コマンドを使用します。

gcloud compute instances create INSTANCE_NAME  \
    --machine-type=a4x-maxgpu-4g-metal \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --zone=ZONE \
    --boot-disk-type=hyperdisk-balanced \
    --boot-disk-size=DISK_SIZE \
    --scopes=cloud-platform \
    --network-interface=nic-type=IDPF,network=IDPF_NETWORK_PREFIX-net,stack-type=IPV6_ONLY,subnet=IDPF_NETWORK_PREFIX-sub-0 \
    --network-interface=nic-type=IDPF,network=IDPF_NETWORK_PREFIX-net,stack-type=IPV6_ONLY,subnet=IDPF_NETWORK_PREFIX-sub-1,no-address \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --network-interface=subnet=default-subnet-1-RDMA_NAME_PREFIX-net,stack-type=IPV6_ONLY,nic-type=MRDMA \
    --reservation-affinity=specific \
    --reservation=RESERVATION \
    --provisioning-model=RESERVATION_BOUND \
    --instance-termination-action=TERMINATION_ACTION \
    --maintenance-policy=TERMINATE \
    --restart-on-failure \
    --resource-policies=POLICY_NAME

次のように置き換えます。

  • INSTANCE_NAME: A4X Max インスタンスの名前。
  • IMAGE_FAMILY: 使用する OS イメージのイメージ ファミリー。サポートされているオペレーティング システムのリストについては、オペレーティング システムの詳細をご覧ください。
  • IMAGE_PROJECT: OS イメージのプロジェクト ID。
  • ZONE: 使用するマシンタイプが利用可能なゾーン。コンパクト プレースメント ポリシーと同じリージョン内のゾーンを使用する必要があります。リージョンの詳細については、リージョンおよびゾーン別の GPU の可用性 をご覧ください。
  • DISK_SIZE: ブートディスクのサイズ(GB)。
  • IDPF_NETWORK_PREFIX: IDPF NIC を使用する VPC ネットワークとサブネットの作成時に指定した名前の接頭辞。
  • RDMA_NAME_PREFIX: RDMA NIC を使用する VPC ネットワークとサブネットの作成時に指定した名前の接頭辞。
  • RESERVATION: 予約名、ブロック、または予約内のサブブロック。予約名または使用可能なブロックを取得するには、予約容量を表示するをご覧ください。インスタンスの配置の要件に基づいて、次のいずれかを選択します。
    • 単一のブロックに A4X Max インスタンスを作成するには:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME
          
    • 特定のブロックに A4X Max インスタンスを作成するには:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME
          
    • 特定のサブブロックに A4X Max インスタンスを作成するには:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
          
  • TERMINATION_ACTION: 予約期間の終了時に Compute Engine によって A4X Max インスタンスを停止(STOP)するか削除(DELETE)するかの指定。

  • POLICY_NAME: コンパクト プレースメント ポリシーの名前。

REST

A4X Max インスタンスを作成するには、 instances.insert メソッドPOST リクエストを送信します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "machineType": "projects/PROJECT_ID/zones/ZONE/machineTypes/a4x-maxgpu-4g-metal",
  "name": "INSTANCE_NAME",
  "disks":[
    {
      "boot":true,
      "initializeParams":{
        "diskSizeGb": "DISK_SIZE",
        "diskType": "hyperdisk-balanced",
        "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
      },
      "mode": "READ_WRITE",
      "type": "PERSISTENT"
    }
  ],
  "serviceAccounts": [
    {
      "email": "default",
      "scopes": [
        "https://www.googleapis.com/auth/cloud-platform"
      ]
    }
  ],
  "networkInterfaces": [
    {
      "accessConfigs": [
        {
          "name": "external-nat",
          "type": "ONE_TO_ONE_NAT"
        }
      ],
      "network": "projects/NETWORK_PROJECT_ID/global/networks/IDPF_NETWORK_PREFIX-net",
      "nicType": "IDPF",
      "stackType": "IPV6_ONLY",
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/IDPF_NETWORK_PREFIX-sub-0"
    },
    {
      "network": "projects/NETWORK_PROJECT_ID/global/networks/IDPF_NETWORK_PREFIX-net",
      "nicType": "IDPF",
      "stackType": "IPV6_ONLY",
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/IDPF_NETWORK_PREFIX-sub-1"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    },
    {
      "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/default-subnet-1-RDMA_NAME_PREFIX-net",
      "nicType": "MRDMA",
      "stackType": "IPV6_ONLY"
    }
  ],
  "reservationAffinity":{
    "consumeReservationType": "SPECIFIC_RESERVATION",
    "key": "compute.googleapis.com/reservation-name",
    "values":[
      "RESERVATION"
    ]
  },
  "scheduling":{
    "provisioningModel": "RESERVATION_BOUND",
    "instanceTerminationAction": "TERMINATION_ACTION",
    "onHostMaintenance": "TERMINATE",
    "automaticRestart": true
  },
  "resourcePolicies": [
    "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
  ]
}

次のように置き換えます。

  • PROJECT_ID: A4X Max インスタンスを作成するプロジェクトのプロジェクト ID。
  • ZONE: 使用するマシンタイプが利用可能なゾーン。コンパクト プレースメント ポリシーと同じリージョン内のゾーンを使用する必要があります。リージョンの詳細については、リージョンおよびゾーン別の GPU の可用性 をご覧ください。
  • INSTANCE_NAME: A4X Max インスタンスの名前。
  • DISK_SIZE: ブートディスクのサイズ(GB)。
  • IMAGE_PROJECT: OS イメージのプロジェクト ID。
  • IMAGE_FAMILY: 使用する OS イメージのイメージ ファミリー。サポートされているオペレーティング システムのリストについては、オペレーティング システムの詳細をご覧ください。
  • NETWORK_PROJECT_ID: ネットワークのプロジェクト ID。
  • IDPF_NETWORK_PREFIX: IDPF NIC を使用する VPC ネットワークとサブネットの作成時に指定した名前の接頭辞。
  • REGION: サブネットワークのリージョン。
  • RDMA_NAME_PREFIX: RDMA NIC を使用する VPC ネットワークとサブネットの作成時に指定した名前の接頭辞。
  • RESERVATION: 予約名、ブロック、または予約内のサブブロック。予約名または使用可能なブロックを取得するには、予約容量を表示するをご覧ください。インスタンスの配置の要件に基づいて、次のいずれかを選択します。
    • 単一のブロックに A4X Max インスタンスを作成するには:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME
          
    • 特定のブロックに A4X Max インスタンスを作成するには:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME
          
    • 特定のサブブロックに A4X Max インスタンスを作成するには:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
          
  • TERMINATION_ACTION: 予約期間の終了時に Compute Engine によって A4X Max インスタンスを停止(STOP)するか削除(DELETE)するかの指定。

  • PROJECT_ID: コンパクト プレースメント ポリシーのプロジェクト ID。
  • REGION: コンパクト プレースメント ポリシーのリージョン。
  • POLICY_NAME: コンパクト プレースメント ポリシーの名前。

次のステップ