Membuat instance A3 Mega, A3 High, atau A3 Edge dengan GPUDirect diaktifkan

Dokumen ini menjelaskan penyiapan untuk instance mesin virtual (VM) A3 Mega, A3 High, atau A3 Edge yang memiliki delapan GPU NVIDIA H100 yang terpasang dan menggunakan salah satu teknologi GPUDirect berikut: GPUDirect-TCPX atau GPUDirect-TCPXO. Untuk membuat instance A3 High dengan kurang dari 8 GPU, lihat Membuat instance A3 High atau A2.

Teknologi GPUDirect yang Anda gunakan bergantung pada jenis mesin A3 yang Anda pilih.

  • GPUDirect-TCPXO: adalah stack jaringan yang di-offload dan mirip RDMA yang didukung pada jenis mesin A3 Mega (a3-megagpu-8g) yang memiliki delapan GPU H100.
  • GPUDirect-TCPX: adalah versi TCP tamu yang dioptimalkan yang memberikan latensi lebih rendah dan didukung pada jenis mesin A3 High (a3-highgpu-8g) dan A3 Edge (a3-edgegpu-8g) yang memiliki delapan GPU H100.

Seri mesin yang dioptimalkan untuk akselerator A3 memiliki 208 vCPU, dan memori hingga 1.872 GB. Jenis mesin a3-megagpu-8g, a3-highgpu-8g, dan a3-edgegpu-8g menawarkan memori GPU 80 GB per GPU. Jenis mesin ini dapat memperoleh bandwidth jaringan hingga 1.800 Gbps, sehingga ideal untuk model bahasa berbasis transformer besar, database, dan komputasi berperforma tinggi (HPC).

GPUDirect-TCPX dan GPUDirect-TCPXO menggunakan teknologi NVIDIA GPUDirect untuk meningkatkan performa dan mengurangi latensi untuk VM A3 Anda. Hal ini dicapai dengan memungkinkan payload paket data ditransfer langsung dari memori GPU ke antarmuka jaringan, dengan melewati CPU dan memori sistem. Ini adalah bentuk akses memori langsung jarak jauh (RDMA). Jika digabungkan dengan Google Virtual NIC (gVNIC), VM A3 dapat memberikan throughput tertinggi antar-VM dalam cluster jika dibandingkan dengan jenis mesin yang dioptimalkan akselerator A2 atau G2 generasi sebelumnya.

Dokumen ini menjelaskan cara membuat VM A3 Mega, A3 High, atau A3 Edge dan mengaktifkan GPUDirect-TCPX atau GPUDirect-TCPXO untuk menguji peningkatan performa jaringan GPU.

Sebelum memulai

  • Untuk meninjau batasan dan langkah-langkah prasyarat tambahan untuk membuat instance dengan GPU yang terpasang, seperti memilih image OS dan memeriksa kuota GPU, lihat Ringkasan pembuatan instance dengan GPU yang terpasang.
  • Siapkan autentikasi jika Anda belum melakukannya. Autentikasi memverifikasi identitas Anda untuk mengakses layanan Google Cloud dan API. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat mengautentikasi ke Compute Engine dengan memilih salah satu opsi berikut:
    1. Instal Google Cloud CLI. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:

      gcloud init

      Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

    2. Set a default region and zone.

Peran yang diperlukan

Agar 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 pada 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 menyetel akun layanan yang akan digunakan VM: compute.instances.setServiceAccount di VM
  • Untuk membuat disk baru bagi 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.

Ringkasan

Untuk menguji performa jaringan dengan GPUDirect, selesaikan langkah-langkah berikut:

  1. Siapkan satu atau beberapa jaringan Virtual Private Cloud (VPC) yang telah dikonfigurasi dengan MTU besar.
  2. Buat instance GPU Anda.

Menyiapkan jaringan VPC

Untuk mengaktifkan komunikasi yang efisien bagi VM GPU Anda, Anda perlu membuat jaringan pengelolaan dan satu atau beberapa jaringan data. Jaringan pengelolaan digunakan untuk akses eksternal, misalnya SSH, dan untuk sebagian besar komunikasi jaringan umum. Jaringan data digunakan untuk komunikasi berperforma tinggi antara GPU di VM yang berbeda, misalnya, untuk traffic Remote Direct Memory Access (RDMA).

Untuk jaringan VPC ini, sebaiknya tetapkan unit transmisi maksimum (MTU) ke nilai yang lebih besar. Nilai MTU yang lebih tinggi akan menambah ukuran paket dan mengurangi overhead header paket, sehingga meningkatkan throughput data payload. Untuk mengetahui informasi selengkapnya tentang cara membuat jaringan VPC, lihat Membuat dan memverifikasi jaringan MTU frame jumbo.

Membuat jaringan, subnet, dan aturan firewall pengelolaan

Selesaikan langkah-langkah berikut untuk menyiapkan jaringan pengelolaan:

  1. Buat jaringan pengelolaan menggunakan perintah networks create:

    gcloud compute networks create NETWORK_NAME_PREFIX-mgmt-net \
        --project=PROJECT_ID \
        --subnet-mode=custom \
        --mtu=8244
    
  2. Buat subnet pengelolaan menggunakan perintah networks subnets create:

    gcloud compute networks subnets create NETWORK_NAME_PREFIX-mgmt-sub \
        --project=PROJECT_ID \
        --network=NETWORK_NAME_PREFIX-mgmt-net \
        --region=REGION \
        --range=192.168.0.0/24
    
  3. Buat aturan firewall menggunakan perintah firewall-rules create.

    1. Buat aturan firewall untuk jaringan pengelolaan.

      gcloud compute firewall-rules create NETWORK_NAME_PREFIX-mgmt-internal \
          --project=PROJECT_ID \
          --network=NETWORK_NAME_PREFIX-mgmt-net \
          --action=ALLOW \
          --rules=tcp:0-65535,udp:0-65535,icmp \
          --source-ranges=192.168.0.0/16
      
    2. Buat aturan firewall tcp:22 untuk membatasi alamat IP sumber yang dapat terhubung ke VM Anda menggunakan SSH.

      gcloud compute firewall-rules create NETWORK_NAME_PREFIX-mgmt-external-ssh \
          --project=PROJECT_ID \
          --network=NETWORK_NAME_PREFIX-mgmt-net \
          --action=ALLOW \
          --rules=tcp:22 \
          --source-ranges=SSH_SOURCE_IP_RANGE
      
    3. Buat aturan firewall icmp yang dapat digunakan untuk memeriksa masalah transmisi data di jaringan.

      gcloud compute firewall-rules create NETWORK_NAME_PREFIX-mgmt-external-ping \
          --project=PROJECT_ID \
          --network=NETWORK_NAME_PREFIX-mgmt-net \
          --action=ALLOW \
          --rules=icmp \
          --source-ranges=0.0.0.0/0
      

Ganti kode berikut:

  • NETWORK_NAME_PREFIX: awalan nama yang akan digunakan untuk jaringan dan subnet VPC.
  • PROJECT_ID: Project ID Anda.
  • REGION: region tempat Anda ingin membuat jaringan.
  • SSH_SOURCE_IP_RANGE: Rentang IP dalam format CIDR. Tindakan ini menentukan alamat IP sumber mana yang dapat terhubung ke VM Anda menggunakan SSH.

Membuat jaringan data, subnet, dan aturan firewall

Jumlah jaringan data bervariasi, bergantung pada jenis mesin GPU yang Anda buat.

A3 Mega

A3 Mega memerlukan delapan jaringan data. Gunakan perintah berikut untuk membuat delapan jaringan data, masing-masing dengan subnet dan aturan firewall.

for N in $(seq 1 8); do
gcloud compute networks create NETWORK_NAME_PREFIX-data-net-$N \
    --project=PROJECT_ID \
    --subnet-mode=custom \
    --mtu=8244

gcloud compute networks subnets create NETWORK_NAME_PREFIX-data-sub-$N \
    --project=PROJECT_ID \
    --network=NETWORK_NAME_PREFIX-data-net-$N \
    --region=REGION \
    --range=192.168.$N.0/24

gcloud compute firewall-rules create NETWORK_NAME_PREFIX-data-internal-$N \
    --project=PROJECT_ID \
    --network=NETWORK_NAME_PREFIX-data-net-$N \
    --action=ALLOW \
    --rules=tcp:0-65535,udp:0-65535,icmp \
    --source-ranges=192.168.0.0/16
done

A3 High dan A3 Edge

A3 High dan A3 Edge memerlukan empat jaringan data. Gunakan perintah berikut untuk membuat empat jaringan data, masing-masing dengan subnet dan aturan firewall.

for N in $(seq 1 4); do
gcloud compute networks create NETWORK_NAME_PREFIX-data-net-$N \
    --project=PROJECT_ID \
    --subnet-mode=custom \
    --mtu=8244

gcloud compute networks subnets create NETWORK_NAME_PREFIX-data-sub-$N \
    --project=PROJECT_ID \
    --network=NETWORK_NAME_PREFIX-data-net-$N \
    --region=REGION \
    --range=192.168.$N.0/24

gcloud compute firewall-rules create NETWORK_NAME_PREFIX-data-internal-$N \
    --project=PROJECT_ID \
    --network=NETWORK_NAME_PREFIX-data-net-$N \
    --action=ALLOW \
    --rules=tcp:0-65535,udp:0-65535,icmp \
    --source-ranges=192.168.0.0/16
done

Membuat instance A3 Mega (GPUDirect-TCPXO)

Buat instance A3 Mega Anda menggunakan image Container-Optimized OS cos-121-lts atau yang lebih baru.

COS

Untuk menguji performa jaringan dengan GPUDirect-TCPXO, buat minimal dua instance VM A3 Mega. Buat setiap VM menggunakan image Container-Optimized OS cos-121-lts atau yang lebih baru dan tentukan jaringan VPC yang Anda buat pada langkah sebelumnya.

VM A3 Mega memerlukan sembilan antarmuka jaringan Google Virtual NIC (gVNIC), satu untuk jaringan pengelolaan dan delapan untuk jaringan data.

Berdasarkan model penyediaan yang ingin Anda gunakan untuk membuat VM, pilih salah satu opsi berikut:

Standar

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --machine-type=a3-megagpu-8g \
    --maintenance-policy=TERMINATE \
    --restart-on-failure \
    --image-family=cos-121-lts \
    --image-project=cos-cloud \
    --boot-disk-size=BOOT_DISK_SIZE \
    --metadata=cos-update-strategy=update_disabled \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-5,subnet=NETWORK_NAME_PREFIX-data-sub-5,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-6,subnet=NETWORK_NAME_PREFIX-data-sub-6,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-7,subnet=NETWORK_NAME_PREFIX-data-sub-7,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-8,subnet=NETWORK_NAME_PREFIX-data-sub-8,no-address

Ganti kode berikut:

  • VM_NAME: nama instance VM Anda.
  • PROJECT_ID: ID project Anda.
  • ZONE: zona yang mendukung jenis mesin Anda.
  • BOOT_DISK_SIZE: ukuran boot disk dalam GB—misalnya, 50.
  • NETWORK_NAME_PREFIX: awalan nama yang akan digunakan untuk jaringan dan subnet VPC.

Spot

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --machine-type=a3-megagpu-8g \
    --maintenance-policy=TERMINATE \
    --restart-on-failure \
    --image-family=cos-121-lts \
    --image-project=cos-cloud \
    --boot-disk-size=BOOT_DISK_SIZE \
    --metadata=cos-update-strategy=update_disabled \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-5,subnet=NETWORK_NAME_PREFIX-data-sub-5,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-6,subnet=NETWORK_NAME_PREFIX-data-sub-6,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-7,subnet=NETWORK_NAME_PREFIX-data-sub-7,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-8,subnet=NETWORK_NAME_PREFIX-data-sub-8,no-address \
    --provisioning-model=SPOT \
    --instance-termination-action=TERMINATION_ACTION

Ganti kode berikut:

  • VM_NAME: nama instance VM Anda.
  • PROJECT_ID: ID project Anda.
  • ZONE: zona yang mendukung jenis mesin Anda.
  • BOOT_DISK_SIZE: ukuran boot disk dalam GB—misalnya, 50.
  • NETWORK_NAME_PREFIX: awalan nama yang akan digunakan untuk jaringan dan subnet VPC.
  • TERMINATION_ACTION: apakah akan menghentikan atau menghapus VM saat di-preempt. Tentukan salah satu nilai berikut:
    • Untuk menghentikan VM: STOP
    • Untuk menghapus VM: DELETE

Flex-start

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --machine-type=a3-megagpu-8g \
    --maintenance-policy=TERMINATE \
    --restart-on-failure \
    --image-family=cos-121-lts \
    --image-project=cos-cloud \
    --boot-disk-size=BOOT_DISK_SIZE \
    --metadata=cos-update-strategy=update_disabled \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-5,subnet=NETWORK_NAME_PREFIX-data-sub-5,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-6,subnet=NETWORK_NAME_PREFIX-data-sub-6,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-7,subnet=NETWORK_NAME_PREFIX-data-sub-7,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-8,subnet=NETWORK_NAME_PREFIX-data-sub-8,no-address \
    --provisioning-model=FLEX_START \
    --instance-termination-action=TERMINATION_ACTION \
    --max-run-duration=RUN_DURATION \
    --request-valid-for-duration=VALID_FOR_DURATION \
    --reservation-affinity=none

Ganti kode berikut:

  • VM_NAME: nama instance VM Anda.
  • PROJECT_ID: ID project Anda.
  • ZONE: zona yang mendukung jenis mesin Anda.
  • BOOT_DISK_SIZE: ukuran boot disk dalam GB—misalnya, 50.
  • NETWORK_NAME_PREFIX: awalan nama yang akan digunakan untuk jaringan dan subnet VPC.
  • TERMINATION_ACTION: apakah akan menghentikan atau menghapus VM di akhir durasi berjalan. Tentukan salah satu nilai berikut:
    • Untuk menghentikan VM: STOP
    • Untuk menghapus VM: DELETE
  • RUN_DURATION: waktu maksimum VM berjalan sebelum Compute Engine menghentikan atau menghapusnya. Anda harus memformat nilai sebagai jumlah hari, jam, menit, atau detik, diikuti dengan d, h, m, dan s. Misalnya, nilai 30m menentukan waktu 30 menit, dan nilai 1h2m3s menentukan waktu satu jam, dua menit, dan tiga detik. Anda dapat menentukan nilai antara 10 menit dan tujuh hari.
  • VALID_FOR_DURATION`: waktu maksimum untuk menunggu penyediaan resource yang Anda minta. Anda harus memformat nilai sebagai jumlah hari, jam, menit, atau detik diikuti dengan d, h, m, dan s. Berdasarkan persyaratan zona untuk beban kerja Anda, tentukan salah satu durasi berikut untuk membantu meningkatkan peluang keberhasilan permintaan pembuatan VM Anda:
    • Jika workload Anda mengharuskan Anda membuat VM di zona tertentu, tentukan durasi antara 90 detik (90s) dan dua jam (2h). Durasi yang lebih lama memberi Anda peluang yang lebih tinggi untuk mendapatkan resource.
    • Jika VM dapat berjalan di zona mana pun dalam region, tentukan durasi nol detik (0s). Nilai ini menentukan bahwa Compute Engine hanya mengalokasikan resource jika resource tersebut segera tersedia. Jika permintaan pembuatan gagal karena resource tidak tersedia, coba lagi permintaan di zona lain.

Terikat dengan reservasi

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --machine-type=a3-megagpu-8g \
    --maintenance-policy=TERMINATE \
    --restart-on-failure \
    --image-family=cos-121-lts \
    --image-project=cos-cloud \
    --boot-disk-size=BOOT_DISK_SIZE \
    --metadata=cos-update-strategy=update_disabled \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-5,subnet=NETWORK_NAME_PREFIX-data-sub-5,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-6,subnet=NETWORK_NAME_PREFIX-data-sub-6,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-7,subnet=NETWORK_NAME_PREFIX-data-sub-7,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-8,subnet=NETWORK_NAME_PREFIX-data-sub-8,no-address \
    --provisioning-model=RESERVATION_BOUND \
    --instance-termination-action=TERMINATION_ACTION \
    --reservation-affinity=specific \
    --reservation=RESERVATION_URL

Ganti kode berikut:

  • VM_NAME: nama instance VM Anda.
  • PROJECT_ID: ID project Anda.
  • ZONE: zona yang mendukung jenis mesin Anda.
  • BOOT_DISK_SIZE: ukuran boot disk dalam GB—misalnya, 50.
  • NETWORK_NAME_PREFIX: awalan nama yang akan digunakan untuk jaringan dan subnet VPC.
  • TERMINATION_ACTION: apakah akan menghentikan atau menghapus VM di akhir periode reservasi. Tentukan salah satu nilai berikut:
    • Untuk menghentikan VM: STOP
    • Untuk menghapus VM: DELETE
  • RESERVATION_URL: URL reservasi yang ingin Anda gunakan. Tentukan salah satu nilai berikut:
    • Jika Anda membuat pemesanan di project yang sama: example-reservation
    • Jika reservasi berada di project lain, dan project Anda dapat menggunakannya: projects/PROJECT_ID/reservations/example-reservation.

Menginstal driver GPU

Di setiap VM A3 Mega, instal driver GPU.

  1. Instal driver GPU NVIDIA.

    sudo cos-extensions install gpu -- --version=latest
    
  2. Pasang kembali jalur.

    sudo mount --bind /var/lib/nvidia /var/lib/nvidia
    sudo mount -o remount,exec /var/lib/nvidia
    

Memberikan akses NIC ke GPU

Di setiap VM A3 Mega, berikan akses NIC ke GPU.

  1. Sesuaikan setelan firewall untuk menerima semua koneksi TCP masuk dan mengaktifkan komunikasi antara node di cluster Anda:
    sudo /sbin/iptables -I INPUT -p tcp -m tcp -j ACCEPT
  2. Konfigurasi modul dmabuf. Muat modul import-helper, yang merupakan bagian dari framework dmabuf. Framework ini memungkinkan berbagi memori berkecepatan tinggi dan tanpa penyalinan antara GPU dan kartu antarmuka jaringan (NIC), yang merupakan komponen penting untuk teknologi GPUDirect:
    sudo modprobe import-helper
  3. Konfigurasi Docker untuk mengautentikasi permintaan ke Artifact Registry.
    docker-credential-gcr configure-docker --registries us-docker.pkg.dev
  4. Luncurkan RxDM di container. RxDM adalah layanan pengelolaan yang berjalan bersama aplikasi GPU untuk mengelola memori GPU. Layanan ini melakukan pra-alokasi dan mengelola memori GPU untuk traffic jaringan yang masuk, yang merupakan elemen utama teknologi GPUDirect dan penting untuk jaringan berperforma tinggi. Mulai container Docker bernama rxdm:
    docker run --pull=always --rm --detach --name rxdm \
        --network=host  --cap-add=NET_ADMIN  \
        --privileged \
        --volume /var/lib/nvidia:/usr/local/nvidia \
        --device /dev/nvidia0:/dev/nvidia0 \
        --device /dev/nvidia1:/dev/nvidia1 \
        --device /dev/nvidia2:/dev/nvidia2 \
        --device /dev/nvidia3:/dev/nvidia3 \
        --device /dev/nvidia4:/dev/nvidia4 \
        --device /dev/nvidia5:/dev/nvidia5 \
        --device /dev/nvidia6:/dev/nvidia6 \
        --device /dev/nvidia7:/dev/nvidia7 \
        --device /dev/nvidia-uvm:/dev/nvidia-uvm \
        --device /dev/nvidiactl:/dev/nvidiactl \
        --device /dev/dmabuf_import_helper:/dev/dmabuf_import_helper \
        --env LD_LIBRARY_PATH=/usr/local/nvidia/lib64 \
        us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpxo/tcpgpudmarxd-dev:v1.0.19 \
        --num_hops=2 --num_nics=8

    Untuk memverifikasi bahwa RxDM telah berhasil dimulai, jalankan perintah. Tunggu hingga pesan "Buffer manager initialization complete" untuk mengonfirmasi keberhasilan inisialisasi RxDM.

    docker container logs --follow  rxdm

    Atau, periksa log penyelesaian inisialisasi RxDM.

    docker container logs rxdm 2>&1 | grep "Buffer manager initialization complete"

Menyiapkan lingkungan NCCL

Di setiap VM A3 Mega, selesaikan langkah-langkah berikut:

  1. Instal library nccl-net, plugin untuk NCCL yang memungkinkan komunikasi GPUDirect melalui jaringan.Perintah berikut menarik image penginstal dan menginstal file library yang diperlukan ke /var/lib/tcpxo/lib64/.
    NCCL_NET_IMAGE="us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpxo/nccl-plugin-gpudirecttcpx-dev:v1.0.13-1"
    
    docker run --pull=always --rm --privileged \
        --network=host --cap-add=NET_ADMIN \
        --volume /var/lib/nvidia:/usr/local/nvidia  \
        --volume /var/lib:/var/lib \
        --device /dev/nvidia0:/dev/nvidia0   \
        --device /dev/nvidia1:/dev/nvidia1  \
        --device /dev/nvidia2:/dev/nvidia2  \
        --device /dev/nvidia3:/dev/nvidia3  \
        --device /dev/nvidia4:/dev/nvidia4  \
        --device /dev/nvidia5:/dev/nvidia5  \
        --device /dev/nvidia6:/dev/nvidia6  \
        --device /dev/nvidia7:/dev/nvidia7  \
        --device /dev/nvidia-uvm:/dev/nvidia-uvm  \
        --device /dev/nvidiactl:/dev/nvidiactl  \
        --device /dev/dmabuf_import_helper:/dev/dmabuf_import_helper  \
        --env LD_LIBRARY_PATH=/usr/local/nvidia/lib64:/var/lib/tcpxo/lib64 \
        ${NCCL_NET_IMAGE} install  --install-nccl
    
    sudo mount --bind /var/lib/tcpxo /var/lib/tcpxo && sudo mount -o remount,exec /var/lib/tcpxo
    
  2. Luncurkan container khusus nccl-tests untuk pengujian NCCL. Container ini telah dikonfigurasi sebelumnya dengan alat dan skrip utilitas yang diperlukan, sehingga memastikan lingkungan yang bersih dan konsisten untuk memverifikasi performa penyiapan GPUDirect.

    Perintah ini menggunakan kembali variabel NCCL_NET_IMAGE yang Anda tetapkan di langkah sebelumnya.

    docker run --pull=always --rm --detach --name nccl \
        --network=host --cap-add=NET_ADMIN \
        --privileged \
        --volume /var/lib/nvidia:/usr/local/nvidia  \
        --volume /var/lib/tcpxo:/var/lib/tcpxo \
        --shm-size=8g \
        --device /dev/nvidia0:/dev/nvidia0 \
        --device /dev/nvidia1:/dev/nvidia1 \
        --device /dev/nvidia2:/dev/nvidia2 \
        --device /dev/nvidia3:/dev/nvidia3 \
        --device /dev/nvidia4:/dev/nvidia4 \
        --device /dev/nvidia5:/dev/nvidia5 \
        --device /dev/nvidia6:/dev/nvidia6 \
        --device /dev/nvidia7:/dev/nvidia7 \
        --device /dev/nvidia-uvm:/dev/nvidia-uvm \
        --device /dev/nvidiactl:/dev/nvidiactl \
        --device /dev/dmabuf_import_helper:/dev/dmabuf_import_helper \
        --env LD_LIBRARY_PATH=/usr/local/nvidia/lib64:/var/lib/tcpxo/lib64 \
        ${NCCL_NET_IMAGE} daemon

Menjalankan benchmark nccl-tests

Untuk menjalankan benchmark nccl-tests, di satu VM A3 Mega, selesaikan langkah-langkah berikut:

  1. Buka shell bash interaktif di dalam container nccl-tests.
    docker exec -it nccl bash
  2. Dari dalam shell bash container nccl-tests, selesaikan langkah-langkah berikut.

    1. Konfigurasi lingkungan untuk menjalankan multi-node dengan menyiapkan SSH dan membuat file host. Ganti VM_NAME_1 dan VM_NAME_2 dengan nama setiap VM.
      /scripts/init_ssh.sh VM_NAME_1 VM_NAME_2
      /scripts/gen_hostfiles.sh VM_NAME_1 VM_NAME_2
        

      Tindakan ini akan membuat direktori bernama /scripts/hostfiles2.

    2. Jalankan benchmark all_gather_perf untuk mengukur performa komunikasi kolektif:
      /scripts/run-nccl-tcpxo.sh all_gather_perf "${LD_LIBRARY_PATH}" 8 eth1,eth2,eth3,eth4,eth5,eth6,eth7,eth8 1M 512M 3 2 10 8 2 10

Membuat instance A3 High dan Edge (GPUDirect-TCPX)

Buat instance A3 High dan Edge Anda menggunakan image Container-Optimized OS cos-121-lts atau yang lebih baru.

COS

Untuk menguji performa jaringan dengan GPUDirect-TCPX, Anda harus membuat minimal dua VM A3 High atau Edge. Buat setiap VM menggunakan image Container-Optimized OS cos-121-lts atau yang lebih baru dan tentukan jaringan VPC yang Anda buat pada langkah sebelumnya.

VM harus menggunakan antarmuka jaringan Google Virtual NIC (gVNIC). Untuk VM A3 High atau Edge, Anda harus menggunakan driver gVNIC versi 1.4.0rc3 atau yang lebih baru. Versi driver ini tersedia di Container-Optimized OS. NIC virtual pertama digunakan sebagai NIC utama untuk jaringan dan penyimpanan umum, empat NIC virtual lainnya selaras NUMA dengan dua dari delapan GPU pada switch PCIe yang sama.

Berdasarkan model penyediaan yang ingin Anda gunakan untuk membuat VM, pilih salah satu opsi berikut:

Standar

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE --restart-on-failure \
    --image-family=cos-121-lts \
    --image-project=cos-cloud \
    --boot-disk-size=BOOT_DISK_SIZE \
    --metadata=cos-update-strategy=update_disabled \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address

Ganti kode berikut:

  • VM_NAME: nama VM Anda.
  • PROJECT_ID: ID project Anda.
  • ZONE: zona yang mendukung jenis mesin Anda.
  • MACHINE_TYPE: jenis mesin untuk VM. Tentukan a3-highgpu-8g atau a3-edgegpu-8g.
  • BOOT_DISK_SIZE: ukuran boot disk dalam GB—misalnya, 50.
  • NETWORK_NAME_PREFIX: awalan nama yang akan digunakan untuk jaringan dan subnet VPC.

Spot

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE --restart-on-failure \
    --image-family=cos-121-lts \
    --image-project=cos-cloud \
    --boot-disk-size=BOOT_DISK_SIZE \
    --metadata=cos-update-strategy=update_disabled \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address \
    --provisioning-model=SPOT \
    --instance-termination-action=TERMINATION_ACTION

Ganti kode berikut:

  • VM_NAME: nama VM Anda.
  • PROJECT_ID: ID project Anda.
  • ZONE: zona yang mendukung jenis mesin Anda.
  • MACHINE_TYPE: jenis mesin untuk VM. Tentukan a3-highgpu-8g atau a3-edgegpu-8g.
  • BOOT_DISK_SIZE: ukuran boot disk dalam GB—misalnya, 50.
  • NETWORK_NAME_PREFIX: awalan nama yang akan digunakan untuk jaringan dan subnet VPC.
  • TERMINATION_ACTION: apakah akan menghentikan atau menghapus VM saat di-preempt. Tentukan salah satu nilai berikut:
    • Untuk menghentikan VM: STOP
    • Untuk menghapus VM: DELETE

Flex-start

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE --restart-on-failure \
    --image-family=cos-121-lts \
    --image-project=cos-cloud \
    --boot-disk-size=BOOT_DISK_SIZE \
    --metadata=cos-update-strategy=update_disabled \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address \
    --provisioning-model=FLEX_START \
    --instance-termination-action=TERMINATION_ACTION \
    --max-run-duration=RUN_DURATION \
    --request-valid-for-duration=VALID_FOR_DURATION \
    --reservation-affinity=none

Ganti kode berikut:

  • VM_NAME: nama VM Anda.
  • PROJECT_ID: ID project Anda.
  • ZONE: zona yang mendukung jenis mesin Anda.
  • MACHINE_TYPE: jenis mesin untuk VM. Tentukan a3-highgpu-8g atau a3-edgegpu-8g.
  • BOOT_DISK_SIZE: ukuran boot disk dalam GB—misalnya, 50.
  • NETWORK_NAME_PREFIX: awalan nama yang akan digunakan untuk jaringan dan subnet VPC.
  • TERMINATION_ACTION: apakah akan menghentikan atau menghapus VM di akhir durasi berjalan. Tentukan salah satu nilai berikut:
    • Untuk menghentikan VM: STOP
    • Untuk menghapus VM: DELETE
  • RUN_DURATION: waktu maksimum VM berjalan sebelum Compute Engine menghentikan atau menghapusnya. Anda harus memformat nilai sebagai jumlah hari, jam, menit, atau detik, diikuti dengan d, h, m, dan s. Misalnya, nilai 30m menentukan waktu 30 menit, dan nilai 1h2m3s menentukan waktu satu jam, dua menit, dan tiga detik. Anda dapat menentukan nilai antara 10 menit dan tujuh hari.
  • VALID_FOR_DURATION`: waktu maksimum untuk menunggu penyediaan resource yang Anda minta. Anda harus memformat nilai sebagai jumlah hari, jam, menit, atau detik diikuti dengan d, h, m, dan s. Berdasarkan persyaratan zona untuk beban kerja Anda, tentukan salah satu durasi berikut untuk membantu meningkatkan peluang keberhasilan permintaan pembuatan VM Anda:
    • Jika workload Anda mengharuskan Anda membuat VM di zona tertentu, tentukan durasi antara 90 detik (90s) dan dua jam (2h). Durasi yang lebih lama memberi Anda peluang yang lebih tinggi untuk mendapatkan resource.
    • Jika VM dapat berjalan di zona mana pun dalam region, tentukan durasi nol detik (0s). Nilai ini menentukan bahwa Compute Engine hanya mengalokasikan resource jika resource tersebut segera tersedia. Jika permintaan pembuatan gagal karena resource tidak tersedia, coba lagi permintaan di zona lain.

Terikat dengan reservasi

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE --restart-on-failure \
    --image-family=cos-121-lts \
    --image-project=cos-cloud \
    --boot-disk-size=BOOT_DISK_SIZE \
    --metadata=cos-update-strategy=update_disabled \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-mgmt-net,subnet=NETWORK_NAME_PREFIX-mgmt-sub \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-1,subnet=NETWORK_NAME_PREFIX-data-sub-1,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-2,subnet=NETWORK_NAME_PREFIX-data-sub-2,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-3,subnet=NETWORK_NAME_PREFIX-data-sub-3,no-address \
    --network-interface=nic-type=GVNIC,network=NETWORK_NAME_PREFIX-data-net-4,subnet=NETWORK_NAME_PREFIX-data-sub-4,no-address \
    --provisioning-model=RESERVATION_BOUND \
    --instance-termination-action=TERMINATION_ACTION \
    --reservation-affinity=specific \
    --reservation=RESERVATION_URL

Ganti kode berikut:

  • VM_NAME: nama VM Anda.
  • PROJECT_ID: ID project Anda.
  • ZONE: zona yang mendukung jenis mesin Anda.
  • MACHINE_TYPE: jenis mesin untuk VM. Tentukan a3-highgpu-8g atau a3-edgegpu-8g.
  • BOOT_DISK_SIZE: ukuran boot disk dalam GB—misalnya, 50.
  • NETWORK_NAME_PREFIX: awalan nama yang akan digunakan untuk jaringan dan subnet VPC.
  • TERMINATION_ACTION: apakah akan menghentikan atau menghapus VM di akhir periode reservasi. Tentukan salah satu nilai berikut:
    • Untuk menghentikan VM: STOP
    • Untuk menghapus VM: DELETE
  • RESERVATION_URL: URL reservasi yang ingin Anda gunakan. Tentukan salah satu nilai berikut:
    • Jika Anda membuat pemesanan di project yang sama: example-reservation
    • Jika reservasi berada di project lain, dan project Anda dapat menggunakannya: projects/PROJECT_ID/reservations/example-reservation.

Menginstal driver GPU

Di setiap VM A3 High atau Edge, selesaikan langkah-langkah berikut.

  1. Instal driver GPU NVIDIA dengan menjalankan perintah berikut:
    sudo cos-extensions install gpu -- --version=latest
  2. Pasang kembali jalur dengan menjalankan perintah berikut:
    sudo mount --bind /var/lib/nvidia /var/lib/nvidia
    sudo mount -o remount,exec /var/lib/nvidia

Memberikan akses NIC ke GPU

Di setiap VM A3 High atau Edge, berikan akses NIC ke GPU dengan menyelesaikan langkah-langkah berikut:

  1. Konfigurasi registri.
    • Jika Anda menggunakan Container Registry, jalankan perintah berikut:
      docker-credential-gcr configure-docker
    • Jika Anda menggunakan Artifact Registry, jalankan perintah berikut:
      docker-credential-gcr configure-docker --registries us-docker.pkg.dev
  2. Konfigurasi pengelola jalur data penerimaan. Layanan pengelolaan, GPUDirect-TCPX Receive Data Path Manager, harus berjalan bersama aplikasi yang menggunakan GPUDirect-TCPX. Untuk memulai layanan di setiap VM Container-Optimized OS, jalankan perintah berikut:
    docker run --pull=always --rm \
        --name receive-datapath-manager \
        --detach \
        --privileged \
        --cap-add=NET_ADMIN --network=host \
        --volume /var/lib/nvidia/lib64:/usr/local/nvidia/lib64 \
        --device /dev/nvidia0:/dev/nvidia0 \
        --device /dev/nvidia1:/dev/nvidia1 \
        --device /dev/nvidia2:/dev/nvidia2 \
        --device /dev/nvidia3:/dev/nvidia3 \
        --device /dev/nvidia4:/dev/nvidia4 \
        --device /dev/nvidia5:/dev/nvidia5 \
        --device /dev/nvidia6:/dev/nvidia6 \
        --device /dev/nvidia7:/dev/nvidia7 \
        --device /dev/nvidia-uvm:/dev/nvidia-uvm \
        --device /dev/nvidiactl:/dev/nvidiactl \
        --env LD_LIBRARY_PATH=/usr/local/nvidia/lib64 \
        --volume /run/tcpx:/run/tcpx \
        --entrypoint /tcpgpudmarxd/build/app/tcpgpudmarxd \
        us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpx/tcpgpudmarxd \
        --gpu_nic_preset a3vm --gpu_shmem_type fd --uds_path "/run/tcpx" --setup_param "--verbose 128 2 0"
       
  3. Verifikasi bahwa container receive-datapath-manager telah dimulai.
    docker container logs --follow receive-datapath-manager

    Output akan terlihat seperti berikut:

    I0000 00:00:1687813309.406064       1 rx_rule_manager.cc:174] Rx Rule Manager server(s) started...
  4. Untuk berhenti melihat log, tekan ctrl-c.
  5. Instal aturan tabel IP.
    sudo iptables -I INPUT -p tcp -m tcp -j ACCEPT
  6. Mengonfigurasi NVIDIA Collective Communications Library (NCCL) dan plugin GPUDirect-TCPX.

    Kombinasi biner plugin GPUDirect-TCPX dan versi library NCCL tertentu diperlukan untuk menggunakan NCCL dengan dukungan GPUDirect-TCPX. Google Cloud telah menyediakan paket yang memenuhi persyaratan ini.

    Untuk menginstal paket Google Cloud , jalankan perintah berikut:

    docker run --rm -v /var/lib:/var/lib us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpx/nccl-plugin-gpudirecttcpx install --install-nccl
    sudo mount --bind /var/lib/tcpx /var/lib/tcpx
    sudo mount -o remount,exec /var/lib/tcpx

    Jika perintah ini berhasil, file libnccl-net.so dan libnccl.so akan ditempatkan di direktori /var/lib/tcpx/lib64.

Menjalankan pengujian

Di setiap VM A3 High atau Edge, jalankan pengujian NCCL dengan menyelesaikan langkah-langkah berikut:

  1. Mulai penampung.
    #!/bin/bash
    
    function run_tcpx_container() {
    docker run \
       -u 0 --network=host \
       --cap-add=IPC_LOCK \
       --userns=host \
       --volume /run/tcpx:/tmp \
       --volume /var/lib/nvidia/lib64:/usr/local/nvidia/lib64 \
       --volume /var/lib/tcpx/lib64:/usr/local/tcpx/lib64 \
       --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 \
       --device /dev/nvidia0:/dev/nvidia0 \
       --device /dev/nvidia1:/dev/nvidia1 \
       --device /dev/nvidia2:/dev/nvidia2 \
       --device /dev/nvidia3:/dev/nvidia3 \
       --device /dev/nvidia4:/dev/nvidia4 \
       --device /dev/nvidia5:/dev/nvidia5 \
       --device /dev/nvidia6:/dev/nvidia6 \
       --device /dev/nvidia7:/dev/nvidia7 \
       --device /dev/nvidia-uvm:/dev/nvidia-uvm \
       --device /dev/nvidiactl:/dev/nvidiactl \
       --env LD_LIBRARY_PATH=/usr/local/nvidia/lib64:/usr/local/tcpx/lib64 \
       "$@"
    }
    

    Perintah sebelumnya menyelesaikan hal berikut:

    • Memasang perangkat NVIDIA dari /dev ke dalam container
    • Menetapkan namespace jaringan container ke host
    • Menetapkan namespace pengguna container ke host
    • Menambahkan CAP_IPC_LOCK ke kemampuan penampung
    • Memasang /tmp host ke /tmp container
    • Memasang jalur penginstalan plugin NCCL dan GPUDirect-TCPX NCCL ke dalam penampung dan menambahkan jalur yang dipasang ke LD_LIBRARY_PATH
  2. Setelah Anda memulai container, aplikasi yang menggunakan NCCL dapat berjalan dari dalam container. Misalnya, untuk menjalankan pengujian run-allgather, selesaikan langkah-langkah berikut:
    1. Di setiap VM A3 High atau Edge, jalankan perintah berikut:
      $ run_tcpx_container -it --rm us-docker.pkg.dev/gce-ai-infra/gpudirect-tcpx/nccl-plugin-gpudirecttcpx shell
    2. Di salah satu VM, jalankan perintah berikut:
      1. Siapkan koneksi antar-VM. Ganti VM-0 dan VM-1 dengan nama setiap VM.
        /scripts/init_ssh.sh VM-0 VM-1
        pushd /scripts && /scripts/gen_hostfiles.sh VM-0 VM-1; popd

        Tindakan ini akan membuat direktori /scripts/hostfiles2 di setiap VM.

      2. Jalankan skrip.
        /scripts/run-allgather.sh 8 eth1,eth2,eth3,eth4 1M 512M 2

    Skrip run-allgather memerlukan waktu sekitar dua menit untuk dijalankan. Di akhir log, Anda akan melihat hasil all-gather.

    Jika Anda melihat baris berikut dalam log NCCL, hal ini memverifikasi bahwa GPUDirect-TCPX berhasil diinisialisasi.

    NCCL INFO NET/GPUDirectTCPX ver. 3.1.1.
    

GPU Multi-Instance

Multi-Instance GPU mempartisi satu GPU NVIDIA H100 dalam VM yang sama ke dalam hingga tujuh instance GPU independen. Keduanya berjalan secara bersamaan, masing-masing dengan memori, cache, dan multiprosesor streaming sendiri. Penyiapan ini memungkinkan GPU NVIDIA H100 memberikan kualitas layanan (QoS) yang konsisten dengan pemanfaatan hingga 7x lebih tinggi dibandingkan dengan model GPU sebelumnya.

Anda dapat membuat hingga tujuh GPU Multi-instance. Dengan GPU H100 80 GB, setiap GPU Multi-instance dialokasikan memori 10 GB.

Untuk mengetahui informasi selengkapnya tentang penggunaan GPU Multi-Instance, lihat Panduan Pengguna Multi-Instance GPU NVIDIA.

Untuk membuat GPU Multi-Instance, selesaikan langkah-langkah berikut:

  1. Buat instance A3 Mega, A3 High, atau A3 Edge Anda.

  2. Instal driver GPU.

  3. Aktifkan mode MIG. Untuk mengetahui petunjuknya, lihat Mengaktifkan MIG.

  4. Konfigurasi partisi GPU Anda. Untuk mengetahui petunjuknya, lihat Bekerja dengan partisi GPU.