Membuat instance yang dioptimalkan untuk AI dengan A4X

Dokumen ini menjelaskan langkah-langkah untuk membuat instance virtual machine (VM) mandiri yang menggunakan jenis mesin A4X. Untuk mempelajari lebih lanjut jenis mesin ini, lihat A4X.

Untuk mempelajari cara lain dalam membuat VM atau cluster, lihat Ringkasan opsi deployment.

Batasan

Saat Anda membuat VM A4X mandiri, batasan berikut berlaku:

Sebelum memulai

Sebelum membuat VM, jika Anda belum melakukannya, selesaikan langkah-langkah berikut:

  1. Pilih opsi pemakaian: pilihan opsi pemakaian menentukan cara Anda mendapatkan dan menggunakan resource GPU.

    Untuk mempelajari lebih lanjut, lihat Memilih opsi pemakaian.

  2. Mendapatkan kapasitas: proses untuk mendapatkan kapasitas berbeda untuk setiap opsi konsumsi.

    Untuk mempelajari proses mendapatkan kapasitas untuk opsi pemakaian yang Anda pilih, lihat Ringkasan kapasitas.

Select the tab for how you plan to use the samples on this page:

Console

When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

gcloud

In the Google Cloud console, activate Cloud Shell.

Activate Cloud Shell

At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

REST

Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

    Install the Google Cloud CLI. After installation, initialize the Google Cloud CLI by running the following command:

    gcloud init

    If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud .

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk membuat VM, minta administrator untuk memberi Anda peran IAM Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) di project. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk membuat VM. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk membuat VM:

  • compute.instances.create di project
  • Untuk menggunakan image kustom guna membuat VM: compute.images.useReadOnly pada image
  • Untuk menggunakan snapshot guna membuat VM: compute.snapshots.useReadOnly pada snapshot
  • Untuk menggunakan template instance guna membuat VM: compute.instanceTemplates.useReadOnly pada template instance
  • Untuk menentukan subnet bagi VM Anda: compute.subnetworks.use di project atau di subnet yang dipilih
  • Untuk menentukan alamat IP statis untuk VM: compute.addresses.use pada project
  • Untuk menetapkan alamat IP eksternal ke VM saat menggunakan jaringan VPC: compute.subnetworks.useExternalIp di project atau di subnet yang dipilih
  • Untuk menetapkan jaringan lama ke VM: compute.networks.use pada project
  • Untuk menetapkan alamat IP eksternal ke VM saat menggunakan jaringan lama: compute.networks.useExternalIp di project
  • Untuk menetapkan metadata instance VM bagi VM: compute.instances.setMetadata di project
  • Untuk menyetel tag untuk VM: compute.instances.setTags di VM
  • Untuk menetapkan label bagi VM: compute.instances.setLabels di VM
  • Untuk menetapkan akun layanan yang akan digunakan VM: compute.instances.setServiceAccount di VM
  • Untuk membuat disk baru untuk VM: compute.disks.create pada project
  • Untuk memasang disk yang ada dalam mode hanya baca atau baca-tulis: compute.disks.use pada disk
  • Untuk memasang disk yang ada dalam mode hanya baca: compute.disks.useReadOnly pada disk

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Dasar-dasar A4X

Cluster A4X disusun dalam hierarki blok dan sub-blok untuk memfasilitasi performa jaringan non-blocking skala besar. Memahami topologi ini sangat penting saat mencadangkan kapasitas dan men-deploy workload.

Instance A4X
Instance A4X adalah jenis mesin A4X tunggal yang memiliki 4 GPU yang terpasang.
Sub-block
Sub-blok adalah unit dasar kapasitas A4X. Untuk A4X, sub-blok terdiri dari 18 instance A4X (72 GPU); instance ini membentuk domain NVLink dan terhubung menggunakan sistem NVLink multi-node. Anda membuat sub-blok A4X dengan menerapkan kebijakan penempatan rapat yang menentukan topologi 1x72.
Blokir
Blok A4X terdiri dari 25 sub-blok (domain NVLink), dengan total hingga 450 instance A4X (1.800 GPU). Sub-blok disejajarkan dengan rel untuk penskalaan yang efisien. Setiap sub-blok memerlukan kebijakan penempatan compact. Oleh karena itu, untuk satu blok A4X, Anda dapat membuat 25 kebijakan penempatan rapat.

Tabel berikut menunjukkan opsi topologi yang didukung untuk instance A4X:

Topologi (gpuTopology) Jumlah GPU Jumlah instance
1x72 72 18

Ringkasan

Membuat instance dengan jenis mesin A4X mencakup langkah-langkah berikut:

  1. Membuat jaringan VPC
  2. Membuat kebijakan penempatan rapat
  3. Membuat instance

Membuat jaringan VPC

Untuk menyiapkan jaringan bagi jenis mesin A4X, buat tiga jaringan VPC untuk antarmuka jaringan berikut:

  • 2 jaringan VPC reguler untuk antarmuka jaringan (NIC) gVNIC. Ini digunakan untuk komunikasi host ke host.
  • 1 jaringan VPC dengan profil jaringan RoCE untuk NIC CX-7 saat membuat beberapa subblok A4X. Jaringan VPC RoCE harus memiliki 4 subnet, satu subnet untuk setiap NIC CX-7. NIC ini menggunakan RDMA over Converged Ethernet (RoCE), yang menyediakan komunikasi bandwidth tinggi dan latensi rendah yang penting untuk menskalakan beberapa subblok A4X. Untuk satu subblok A4X, Anda dapat melewati jaringan VPC ini karena dalam satu subblok, komunikasi GPU ke GPU langsung ditangani oleh NVLink multi-node.

Untuk mengetahui informasi selengkapnya tentang pengaturan NIC, lihat Meninjau bandwidth jaringan dan pengaturan NIC.

Buat jaringan secara manual dengan mengikuti panduan petunjuk atau secara otomatis menggunakan skrip yang disediakan.

Panduan petunjuk

Untuk membuat jaringan, Anda dapat menggunakan petunjuk berikut:

Untuk jaringan VPC ini, sebaiknya tetapkan unit transmisi maksimum (MTU) ke nilai yang lebih besar. Untuk jenis mesin A4X, MTU yang direkomendasikan adalah 8896 byte. Untuk meninjau setelan MTU yang direkomendasikan untuk jenis mesin GPU lainnya, lihat Setelan MTU untuk jenis mesin GPU.

Skrip

Untuk membuat jaringan, ikuti langkah-langkah berikut.

Untuk jaringan VPC ini, sebaiknya tetapkan unit transmisi maksimum (MTU) ke nilai yang lebih besar. Untuk jenis mesin A4X, MTU yang direkomendasikan adalah 8896 byte. Untuk meninjau setelan MTU yang direkomendasikan untuk jenis mesin GPU lainnya, lihat Setelan MTU untuk jenis mesin GPU.

  1. Gunakan skrip berikut untuk membuat jaringan VPC reguler untuk gVNIC.

      
        #!/bin/bash
    
        # Create regular VPC networks and subnets for the gVNICs
        for N in $(seq 0 1); do
          gcloud compute networks create GVNIC_NAME_PREFIX-net-$N \
            --subnet-mode=custom \
            --mtu=8896
    
          gcloud compute networks subnets create GVNIC_NAME_PREFIX-sub-$N \
            --network=GVNIC_NAME_PREFIX-net-$N \
            --region=REGION \
            --range=192.168.$N.0/24
    
          gcloud compute firewall-rules create GVNIC_NAME_PREFIX-internal-$N \
            --network=GVNIC_NAME_PREFIX-net-$N \
            --action=ALLOW \
            --rules=tcp:0-65535,udp:0-65535,icmp \
            --source-ranges=192.168.0.0/16
        done
    
        # Create SSH firewall rules
        gcloud compute firewall-rules create GVNIC_NAME_PREFIX-ssh \
          --network=GVNIC_NAME_PREFIX-net-0 \
          --action=ALLOW \
          --rules=tcp:22 \
          --source-ranges=IP_RANGE
    
        # Assumes that an external IP is only created for vNIC 0
        gcloud compute firewall-rules create GVNIC_NAME_PREFIX-allow-ping-net-0 \
          --network=GVNIC_NAME_PREFIX-net-0 \
          --action=ALLOW \
          --rules=icmp \
          --source-ranges=IP_RANGE
    
      
  2. Jika Anda memerlukan beberapa subblok A4X, gunakan skrip berikut untuk membuat jaringan dan subnet VPC RoCE untuk empat NIC CX-7 di setiap instance A4X.

      
        #!/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-mrdma \
          --network-profile=ZONE-vpc-roce \
          --subnet-mode custom \
          --mtu=8896
    
        # Create subnets
        for N in $(seq 0 3); do
          gcloud compute networks subnets create RDMA_NAME_PREFIX-mrdma-sub-$N \
            --network=RDMA_NAME_PREFIX-mrdma \
            --region=REGION \
            --range=192.168.$((N+2)).0/24 # offset to avoid overlap with gVNICs
        done
    
      

    Ganti kode berikut:

    • GVNIC_NAME_PREFIX: awalan nama kustom yang akan digunakan untuk jaringan VPC dan subnet reguler untuk gVNIC.
    • RDMA_NAME_PREFIX: awalan nama kustom yang akan digunakan untuk jaringan VPC dan subnet RoCE bagi NIC CX-7.
    • ZONE: tentukan zona tempat jenis mesin yang ingin Anda gunakan tersedia, seperti us-central1-a. Untuk mengetahui informasi tentang region, lihat Ketersediaan GPU menurut region dan zona.
    • REGION: region tempat Anda ingin membuat subnet. Wilayah ini harus sesuai dengan zona yang ditentukan. Misalnya, jika zona Anda adalah us-central1-a, maka region Anda adalah us-central1.
    • IP_RANGE: rentang IP yang akan digunakan untuk aturan firewall SSH.
  3. Opsional: Untuk memverifikasi bahwa resource jaringan VPC berhasil dibuat, periksa setelan jaringan di konsol Google Cloud :
    1. Di konsol Google Cloud , buka halaman VPC networks.

      Buka VPC networks

    2. Telusuri daftar untuk menemukan jaringan yang Anda buat di langkah sebelumnya.
    3. Untuk melihat subnet, aturan firewall, dan setelan jaringan lainnya, klik nama jaringan.

Membuat kebijakan penempatan rapat.

Untuk membuat kebijakan penempatan ringkas, pilih salah satu opsi berikut:

gcloud

Untuk membuat kebijakan penempatan rapat, gunakan perintah 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

Ganti kode berikut:

  • POLICY_NAME: nama kebijakan penempatan yang ringkas.
  • REGION: region tempat Anda ingin membuat kebijakan penempatan yang ringkas. Tentukan region tempat jenis mesin yang ingin Anda gunakan tersedia. Untuk mengetahui informasi tentang region, lihat Ketersediaan GPU menurut region dan zona.

REST

Untuk membuat kebijakan penempatan ringkas, buat permintaan POST ke metode beta resourcePolicies.insert.

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

Ganti kode berikut:

  • PROJECT_ID: project ID Anda.
  • POLICY_NAME: nama kebijakan penempatan yang ringkas.
  • REGION: region tempat Anda ingin membuat kebijakan penempatan yang ringkas. Tentukan region tempat jenis mesin yang ingin Anda gunakan tersedia. Untuk mengetahui informasi tentang region, lihat Ketersediaan GPU menurut region dan zona.

Membuat instance A4X

Untuk mendapatkan topologi GPU 1x72, buat 18 instance A4X. Saat membuat instance, terapkan kebijakan penempatan rapat yang menentukan kolom gpuTopology. Penerapan kebijakan ini memastikan bahwa Compute Engine membuat semua 18 instance A4X dalam satu sub-blok untuk menggunakan domain NVLink. Jika sub-blok tidak memiliki kapasitas untuk instance A4X, permintaan untuk membuat instance akan gagal.

Untuk membuat instance A4X, pilih salah satu opsi berikut.

Perintah berikut juga menetapkan cakupan akses untuk instance Anda. Untuk menyederhanakan pengelolaan izin, Google merekomendasikan agar Anda menetapkan cakupan akses pada instance ke akses cloud-platform, lalu menggunakan peran IAM untuk menentukan layanan yang dapat diakses instance. Untuk mengetahui informasi selengkapnya, lihat Praktik terbaik cakupan.

gcloud

Untuk membuat instance A4X, gunakan perintah gcloud compute instances create.

gcloud compute instances create INSTANCE_NAME  \
    --machine-type=a4x-highgpu-4g \
    --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=GVNIC,network=GVNIC_NAME_PREFIX-net-0,subnet=GVNIC_NAME_PREFIX-sub-0 \
    --network-interface=nic-type=GVNIC,network=GVNIC_NAME_PREFIX-net-1,subnet=GVNIC_NAME_PREFIX-sub-1,no-address 
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-0,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-1,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-2,no-address \
    --network-interface=nic-type=MRDMA,network=RDMA_NAME_PREFIX-mrdma,subnet=RDMA_NAME_PREFIX-mrdma-sub-3,no-address \
    --reservation-affinity=specific \
    --reservation=RESERVATION \
    --provisioning-model=RESERVATION_BOUND \
    --instance-termination-action=TERMINATION_ACTION \
    --maintenance-policy=TERMINATE \
    --restart-on-failure \
    --resource-policies=POLICY_NAME

Ganti kode berikut:

  • INSTANCE_NAME: nama instance A4X.
  • IMAGE_FAMILY: kelompok image dari image OS yang ingin Anda gunakan. Untuk mengetahui daftar sistem operasi yang didukung, lihat Detail sistem operasi.
  • IMAGE_PROJECT: project ID image OS.
  • ZONE: zona tempat jenis mesin yang ingin Anda gunakan tersedia. Anda harus menggunakan zona di region yang sama dengan kebijakan penempatan rapat. Untuk mengetahui informasi tentang region, lihat Ketersediaan GPU menurut region dan zona.
  • DISK_SIZE: ukuran boot disk dalam GB.
  • GVNIC_NAME_PREFIX: awalan nama yang Anda tentukan saat membuat jaringan dan subnet VPC standar yang menggunakan gVNIC.
  • RDMA_NAME_PREFIX: awalan nama yang Anda tentukan saat membuat jaringan dan subnet VPC yang menggunakan NIC RDMA.
  • RESERVATION: nama pemesanan, blok, atau subblok dalam pemesanan. Untuk mendapatkan nama reservasi atau blok yang tersedia, lihat Melihat kapasitas yang dicadangkan. Berdasarkan persyaratan penempatan instance, pilih salah satu opsi berikut:
    • Untuk membuat instance A4X di satu blok:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME
          
    • Untuk membuat instance A4X pada blok tertentu:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME
          
    • Untuk membuat instance A4X di subblok tertentu:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
          
  • TERMINATION_ACTION: apakah Compute Engine menghentikan (STOP) atau menghapus (DELETE) instance A4X di akhir periode pemesanan.

  • POLICY_NAME: nama kebijakan penempatan yang ringkas.

REST

Untuk membuat instance A4X, buat permintaan POST ke metode instances.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "machineType": "projects/PROJECT_ID/zones/ZONE/machineTypes/a4x-highgpu-4g",
  "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/GVNIC_NAME_PREFIX-net-0",
        "nicType": "GVNIC",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/GVNIC_NAME_PREFIX-sub-0"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/GVNIC_NAME_PREFIX-net-1",
        "nicType": "GVNIC",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/GVNIC_NAME_PREFIX-sub-1"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-0"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-1"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-2"
      },
      {
        "network": "projects/NETWORK_PROJECT_ID/global/networks/RDMA_NAME_PREFIX-mrdma",
        "nicType": "MRDMA",
        "subnetwork": "projects/NETWORK_PROJECT_ID/region/REGION/subnetworks/RDMA_NAME_PREFIX-mrdma-sub-3"
      }
     ],
  "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"
  ]
}

Ganti kode berikut:

  • PROJECT_ID: project ID project tempat Anda ingin membuat instance A4X.
  • ZONE: zona tempat jenis mesin yang ingin Anda gunakan tersedia. Anda harus menggunakan zona di region yang sama dengan kebijakan penempatan rapat. Untuk mengetahui informasi tentang region, lihat Ketersediaan GPU menurut region dan zona.
  • INSTANCE_NAME: nama instance A4X.
  • DISK_SIZE: ukuran boot disk dalam GB.
  • IMAGE_PROJECT: project ID image OS.
  • IMAGE_FAMILY: kelompok image dari image OS yang ingin Anda gunakan. Untuk mengetahui daftar sistem operasi yang didukung, lihat Detail sistem operasi.
  • NETWORK_PROJECT_ID: project ID jaringan.
  • GVNIC_NAME_PREFIX: awalan nama yang Anda tentukan saat membuat jaringan dan subnet VPC standar yang menggunakan gVNIC.
  • REGION: region subnetwork.
  • RDMA_NAME_PREFIX: awalan nama yang Anda tentukan saat membuat jaringan dan subnet VPC yang menggunakan NIC RDMA.
  • RESERVATION: nama pemesanan, blok, atau subblok dalam pemesanan. Untuk mendapatkan nama reservasi atau blok yang tersedia, lihat Melihat kapasitas yang dicadangkan. Berdasarkan persyaratan penempatan instance, pilih salah satu opsi berikut:
    • Untuk membuat instance A4X di satu blok:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME
          
    • Untuk membuat instance A4X pada blok tertentu:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME
          
    • Untuk membuat instance A4X di subblok tertentu:
          projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME/reservationSubBlocks/RESERVATION_SUBBLOCK_NAME
          
  • TERMINATION_ACTION: apakah Compute Engine menghentikan (STOP) atau menghapus (DELETE) instance A4X di akhir periode pemesanan.

  • PROJECT_ID: project ID kebijakan penempatan ringkas.
  • REGION: region kebijakan penempatan yang ringkas.
  • POLICY_NAME: nama kebijakan penempatan yang ringkas.

Langkah berikutnya