Dokumen ini menunjukkan cara menggunakan jaringan otomatis untuk VM akselerator, seperti GPU dan TPU, guna menyederhanakan konfigurasi jaringan untuk workload akselerator Google Kubernetes Engine (GKE). Hal ini penting untuk menjalankan kecerdasan buatan (AI), machine learning (ML), dan komputasi berperforma tinggi (HPC) pada mesin yang dioptimalkan untuk akselerator.
Dokumen ini mengasumsikan pemahaman tentang konsep dasar GKE, workload GPU dan TPU, serta jaringan VPC. Secara khusus, Anda harus memahami:
Halaman ini ditujukan untuk Cloud Architect dan Networking Specialist yang mendesain dan merancang jaringan organisasi mereka. Untuk ringkasan semua set dokumentasi GKE, lihat Mempelajari dokumentasi GKE. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang dirujuk dalam kontenGoogle Cloud , lihat Peran dan tugas pengguna GKE umum.
GKE menyederhanakan proses menjalankan AI dan ML berperforma tinggi di akselerator khusus. Dengan jaringan otomatis untuk VM akselerator, Anda dapat mengaktifkan konektivitas multi-jaringan berkecepatan tinggi—yang penting untuk protokol seperti RDMA—dengan satu flag konfigurasi. Otomatisasi ini menghilangkan proses manual yang rumit dalam menyiapkan beberapa jaringan VPC, mengelola rentang alamat IP, dan mengonfigurasi antarmuka jaringan untuk setiap node pool dan Pod. Dengan menggunakan satu parameter saat membuat node pool, GKE menyediakan semua resource jaringan cloud dan Kubernetes yang diperlukan.
Terminologi
Istilah berikut adalah kunci untuk memahami arsitektur jaringan untuk VM akselerator.
- Virtual Private Cloud (VPC): VPC adalah versi virtual dari jaringan fisik, yang diimplementasikan di dalam jaringan produksi Google. Jaringan ini menyediakan konektivitas untuk instance virtual machine (VM) Compute Engine, cluster GKE, dan resource lainnya.
- NIC Titanium: NIC cerdas yang mengurangi beban tugas pemrosesan jaringan dari CPU, sehingga CPU dapat fokus pada workload Anda. Pada mesin GPU, NIC menangani semua traffic yang bukan komunikasi langsung GPU-ke-GPU. Di mesin TPU, semua NIC adalah NIC Titanium.
- Subnetwork: subnetwork adalah bagian tersegmentasi dari VPC yang lebih besar. Setiap subnetwork dikaitkan dengan region dan memiliki rentang alamat IP yang ditentukan.
- Network Interface Controller (NIC): NIC adalah antarmuka jaringan virtual yang menghubungkan instance VM ke jaringan. Setiap NIC terpasang ke VPC dan subnetwork tertentu.
- Jaringan host: jaringan utama yang digunakan oleh antarmuka jaringan (NIC) utama node untuk komunikasi cluster umum, seperti traffic bidang kontrol dan jaringan Pod reguler.
- Jaringan data: jaringan khusus untuk transfer data berperforma tinggi antara VM akselerator. Untuk GPU, ini sering kali berupa VPC GPUDirect dengan RDMA. Untuk TPU, ini mungkin merupakan jaringan host kedua.
- Remote Direct Memory Access(RDMA): RDMA adalah teknologi yang memungkinkan perangkat jaringan bertukar data secara langsung dengan memori utama komputer tanpa melibatkan sistem operasi atau CPU. Hal ini secara signifikan mengurangi latensi dan meningkatkan throughput, yang sangat penting untuk workload HPC dan ML.
- NVLink: NVLink adalah teknologi interkoneksi berkecepatan tinggi yang dikembangkan oleh NVIDIA untuk menghubungkan beberapa GPU dalam satu node, sehingga memungkinkan GPU tersebut berbagi memori dan bekerja sama dalam set data besar.
- Alokasi resource dinamis (DRA) Kubernetes: DRA adalah fitur Kubernetes yang menyediakan cara yang lebih fleksibel bagi Pod untuk meminta dan menggunakan resource, seperti GPU dan hardware khusus lainnya. Memungkinkan kontrol yang mendetail atas alokasi resource.
Cara kerja jaringan otomatis
Mesin yang dioptimalkan untuk akselerator memiliki arsitektur jaringan khusus untuk mendukung komunikasi ber-throughput tinggi dan berlatensi rendah antara GPU dan TPU. Setiap mesin fisik berisi beberapa GPU atau TPU, yang sering kali dihubungkan oleh interkoneksi berkecepatan tinggi seperti NVLink. Mesin ini juga memiliki satu atau beberapa NIC untuk jaringan umum dan beberapa NIC GPU untuk interkoneksi berkecepatan tinggi.
Saat Anda membuat node GKE yang menggunakan jenis mesin yang dioptimalkan akselerator, GKE akan mengonfigurasi beberapa NIC pada VM yang mendasarinya. NIC host terhubung ke jaringan VPC host untuk komunikasi dan pengelolaan cluster umum guna berkomunikasi dengan bidang kontrol. NIC GPU terhubung ke jaringan VPC khusus berperforma tinggi, sering kali dengan RDMA diaktifkan dan setelan MTU tinggi (8896), untuk memfasilitasi komunikasi GPUDirect.
Saat Pod meminta GPU atau TPU, Anda dapat mengonfigurasinya untuk mengakses antarmuka jaringan berperforma tinggi di node. Anda dapat meminta semua NIC yang tersedia atau subset tertentu. Setiap antarmuka jaringan yang diklaim dikhususkan untuk satu Pod dan tidak dibagikan. Konfigurasi jaringan ini membantu memastikan Pod memiliki akses tunggal ke bandwidth dan resource penuh antarmuka tersebut, yang merupakan manfaat utama untuk workload yang sensitif terhadap performa.
Batasan
- Jaringan otomatis mengharuskan cluster menggunakan GKE Dataplane V2.
- Jaringan otomatis didukung pada kelompok mesin yang dioptimalkan akselerator A3, A4, dan TPU Trillium (v6e), serta seri mesin yang dioptimalkan penyimpanan Z4M.
- Anda harus menggunakan node pool dengan satu zona.
- Anda tidak dapat menggunakan jaringan otomatis di cluster yang menggunakan VPC Bersama.
- Saat menggunakan DRANET terkelola GKE untuk mengonfigurasi workload, lihat pertimbangan utama dan batasan untuk DRANET terkelola GKE.
- Anda tidak dapat menggunakan API multi-jaringan dan DRANET di nodepool yang sama. Anda harus memilih satu metode untuk lampiran jaringan bagi Pod Anda.
- Untuk cluster regional, Anda harus menentukan zona target saat mengaktifkan profil jaringan akselerator. Jika workload Anda mencakup beberapa zona, Anda harus mengaktifkan profil jaringan untuk setiap zona secara independen.
Konfigurasi jaringan mesin
Mesin yang dioptimalkan untuk akselerator dan penyimpanan memiliki konfigurasi jaringan yang bervariasi, bergantung pada jenisnya. Tabel berikut merangkum spesifikasi jaringan untuk berbagai jenis mesin.
VM akselerator GPU
| Jenis mesin | Jumlah GPU | Jumlah NIC Titanium | Jumlah NIC GPU | Teknologi GPUDirect | VPC tambahan |
|---|---|---|---|---|---|
| A3 | 8 (H100) | 1 | 4 | TCPX | 4 untuk NIC GPU |
| A3 Mega | 8 (H100) | 1 | 8 | TCPXO | 8 untuk NIC GPU |
| A3 Ultra | 8 (H200) | 2 | 8 | RDMA | 2 (1 untuk NIC kedua, 1 untuk NIC GPU) |
| A4 | 8 (B200) | 2 | 8 | RDMA | 2 (1 untuk NIC kedua, 1 untuk NIC GPU) |
| A4X | 4 (GB200) | 2 | 4 | RDMA | 2 (1 untuk NIC kedua, 1 untuk NIC GPU) |
| A4X BM | 8 | 2 | 8 | BM-RDMA | 2 (1 untuk NIC kedua, 1 untuk NIC GPU) |
VM akselerator TPU
| Jenis mesin | Jumlah TPU chip | Jumlah NIC | VPC tambahan |
|---|---|---|---|
| TPU Trillium (v6e) (ct6e-standard-1t) | 1 | 0,25 | 1 |
| TPU Trillium (v6e) (ct6e-standard-4t) | 4 | 2 | 2 (1 untuk NIC ke-2, 1 untuk VNIC tambahan di NIC ke-1) |
| TPU Trillium (v6e) (ct6e-standard-8t) | 8 | 4 | 4 |
| tpu7x-standard-4t | 4 | 2 | 2 |
VM yang dioptimalkan untuk penyimpanan
Pada instance Z4M, dua NIC Titanium fisik mendukung traffic jaringan umum (gVNIC) dan hingga dua antarmuka jaringan virtual (vNIC) IRDMA untuk komunikasi Cloud RDMA.
| Jenis mesin | Jumlah NIC Titanium fisik | Jumlah vNIC RDMA | Teknologi jaringan | VPC tambahan |
|---|---|---|---|---|
Z4M (z4m-highmem-192) |
2 | Hingga 2 (dibagikan di NIC fisik) | RDMA | 2 untuk vNIC RDMA |
Sebelum memulai
Sebelum memulai, pastikan Anda telah melakukan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Untuk menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah
gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung menjalankan perintah dalam dokumen ini.
- Pastikan cluster Anda menggunakan GKE versi 1.34.1-gke.2037000 atau yang lebih baru.
Untuk mengaktifkan node auto-provisioning dan ComputeClass kustom, pastikan cluster Anda menggunakan GKE versi 1.35.2-gke.1302000 atau yang lebih baru.
Pastikan akun layanan GKE di project Anda memiliki peran
compute.networkAdmin.Pastikan cluster Anda telah mengaktifkan GKE Dataplane V2. Anda hanya dapat mengaktifkan GKE Dataplane V2 saat membuat cluster baru di GKE versi 1.34.1-gke.2037000 atau yang lebih baru. Anda tidak dapat mengaktifkan GKE Dataplane V2 di cluster sebelum versi ini.
gcloud container clusters create CLUSTER_NAME \ --cluster-version=CLUSTER_VERSION \ --enable-dataplane-v2Jika Anda berencana men-deploy workload GPU atau Z4M yang menggunakan RDMA, verifikasi keberadaan resource
DeviceClass(mrdma.google.comuntuk GPU atauirdma.google.comuntuk Z4M):kubectl get deviceclass mrdma.google.com
Mengonfigurasi jaringan otomatis
Anda dapat mengaktifkan jaringan otomatis dengan menentukan profil jaringan akselerator saat membuat node pool. Anda juga dapat membuat resource ComputeClass untuk cluster yang menggunakan node auto-provisioning.
Membuat node pool dengan profil jaringan default
Untuk membuat jaringan yang menghubungkan semua mesin GPU atau TPU dalam satu zona secara otomatis, buat node pool dengan profil jaringan akselerator auto.
gcloud
Untuk membuat node pool dengan profil jaringan yang dikonfigurasi secara otomatis, jalankan perintah berikut:
gcloud beta container node-pools create NODE_POOL_NAME \
--accelerator-network-profile=auto \
--node-locations=ZONE \
--machine-type=MACHINE_TYPE
Saat Anda membuat node pool dengan flag --accelerator-network-profile=auto,
GKE akan otomatis menambahkan
label gke.networks.io/accelerator-network-profile: auto ke node. Untuk menjadwalkan workload pada node ini, Anda harus menyertakan label ini dalam nodeSelector workload Anda.
Untuk mengetahui informasi selengkapnya tentang cara membuat node pool dengan akselerator, lihat Menjalankan GPU di node pool Autopilot dan Men-deploy workload TPU di Autopilot. Saat Anda mengikuti
petunjuk dalam dokumen ini, tambahkan flag --accelerator-network-profile=auto
ke perintah gcloud container node-pools create.
Untuk node pool slice TPU multi-host, Anda juga perlu menambahkan flag --tpu-topology.
Ganti kode berikut:
NODE_POOL_NAME: nama node pool baru.ZONE: zona untuk node pool.MACHINE_TYPE: jenis mesin untuk node, misalnya,a3-ultragpu-8g.
REST
Dalam permintaan ke metode nodePools.create, tentukan kolom accelerator_network_profile:
{
"nodePool": {
"name": "NODE_POOL_NAME",
"machineType": "MACHINE_TYPE",
...
"accelerator_network_profile": "auto"
}
}
Ganti kode berikut:
NODE_POOL_NAME: nama node pool baru.MACHINE_TYPE: jenis mesin untuk node, misalnya,a3-ultragpu-8g.
Mengaktifkan jaringan otomatis dengan node auto-provisioning
Untuk mengonfigurasi jaringan otomatis di cluster Autopilot atau cluster Standard yang menggunakan node auto-provisioning, tambahkan kolom acceleratorNetworkProfile ke resource ComputeClass.
Manifes ComputeClass berikut mengaktifkan jaringan otomatis untuk mesin A3 Mega. Simpan manifes berikut sebagai
anp-compute-class.yaml:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: anp-a3-mega-class spec: autopilot: enabled: true nodePoolAutoCreation: enabled: true priorities: # Priority 1: A3 Mega in us-central1-a - machineType: a3-megagpu-8g gpu: count: 8 driverVersion: default type: nvidia-h100-mega-80gb flexStart: enabled: true location: zones: [us-central1-a] acceleratorNetworkProfile: auto whenUnsatisfiable: DoNotScaleUpTerapkan manifes ke cluster Anda:
kubectl apply -f anp-compute-class.yaml
Saat Anda men-deploy workload yang memilih resource ComputeClass ini, GKE akan otomatis mengonfigurasi antarmuka jaringan yang diperlukan untuk node yang disediakan.
Menjadwalkan workload yang menggunakan GPU
Bagian berikut menunjukkan cara mengonfigurasi node pool GPU dan workload untuk menggunakan antarmuka jaringan RDMA dengan DRANET yang dikelola GKE. Untuk mengetahui detail selengkapnya, lihat Mengalokasikan resource jaringan menggunakan DRANET terkelola GKE.
Mengaktifkan driver DRANET yang dikelola GKE di node pool GPU
Untuk mengaktifkan driver GKE DRANET pada node pool GPU yang mendukung
RDMA, tambahkan label cloud.google.com/gke-networking-dra-driver=true saat Anda
membuat node pool.
gcloud beta container node-pools create NODE_POOL_NAME \
--region=REGION \
--cluster=CLUSTER_NAME \
--node-locations=NODE_LOCATIONS \
--accelerator type=ACCELERATOR_TYPE,count=ACCELERATOR_COUNT,gpu-driver-version=DRIVER_VERSION \
--machine-type=MACHINE_TYPE \
--num-nodes=NUM_NODES \
--reservation-affinity=specific \
--reservation=projects/RESERVATION_PROJECT/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK \
--accelerator-network-profile=auto \
--node-labels=cloud.google.com/gke-networking-dra-driver=true
Ganti kode berikut:
NODE_POOL_NAME: nama node pool baru.REGION: region Google Cloud untuk cluster Anda.CLUSTER_NAME: nama cluster Anda.ACCELERATOR_TYPE: jenis akselerator GPU:Contoh:
- VM A4: masukkan
nvidia-b200. - VM A3 Ultra: masukkan
nvidia-h200-141gb.
- VM A4: masukkan
ACCELERATOR_COUNT: jumlah GPU yang akan dipasang ke node di node pool. Misalnya, untuk VM a4-highgpu-8g dan a3-ultragpu-8g, jumlah GPU adalah 8.DRIVER_VERSION: versi driver GPU yang akan digunakan. Misalnyadefaultataulatest.MACHINE_TYPE: jenis mesin untuk node pool, misalnya,a3-ultragpu-8g.NUM_NODES: jumlah node untuk node pool. Untuk flex-start, nilai ini harus ditetapkan ke 0.RESERVATION_PROJECT: project ID pemesanan.RESERVATION_NAME: nama pemesanan Anda. Untuk menemukan nilai ini, lihat Melihat permintaan pemesanan untuk masa mendatang.RESERVATION_BLOCK: nama blok tertentu dalam pemesanan. Untuk menemukan nilai ini, lihat Melihat permintaan pemesanan untuk masa mendatang.
Perintah ini menggunakan profil jaringan akselerator untuk mengonfigurasi jaringan VPC dan subnet secara otomatis untuk VM akselerator Anda. Atau, Anda dapat secara eksplisit menentukan jaringan VPC dan subnet.
Men-deploy resource RDMA workload
Untuk mengalokasikan resource RDMA untuk Pod, tentukan ResourceClaimTemplate.
Buat
ResourceClaimTemplateuntuk menentukan cara mengalokasikan perangkat RDMA. Manifes berikut meminta semua perangkatmrdmayang tersedia di node. Simpan manifes sebagaiall-mrdma-template.yaml:apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: all-mrdma spec: spec: devices: requests: - name: req-mrdma exactly: deviceClassName: mrdma.google.com allocationMode: AllTerapkan manifes:
kubectl apply -f all-mrdma-template.yamlDeploy workload Anda dan referensikan
ResourceClaimTemplate. Manifes berikut men-deploy Pod yang mereferensikan templateall-mrdma, yang memberi Pod akses ke antarmuka RDMA di node. Simpan manifes sebagaiagnhost-rdma-pod.yaml:apiVersion: v1 kind: Pod metadata: name: agnhost-rdma namespace: default labels: app: agnhost spec: containers: - name: agnhost image: registry.k8s.io/e2e-test-images/agnhost:2.39 args: ["netexec", "--http-port", "80"] ports: - name: agnhost-port containerPort: 80 resources: claims: - name: rdma limits: nvidia.com/gpu: 1 resourceClaims: - name: rdma resourceClaimTemplateName: all-mrdmaTerapkan manifes:
kubectl apply -f agnhost-rdma-pod.yamlPastikan antarmuka jaringan tambahan yang dialokasikan terlihat di dalam Pod.
kubectl exec agnhost-rdma -- ls /sys/class/netContoh output berikut menunjukkan antarmuka
eth0danlodefault, serta antarmuka RDMA yang dialokasikan, sepertigpu0rdma0. Jumlah dan nama antarmuka jaringan (NIC) bervariasi berdasarkan jenis mesin node GKE.eth0 gpu0rdma0 gpu1rdma0 gpu2rdma0 gpu3rdma0 lo
Menjadwalkan workload yang menggunakan TPU
Bagian berikut menunjukkan cara mengonfigurasi node pool dan workload TPU untuk menggunakan antarmuka jaringan non-RDMA dengan DRANET yang dikelola GKE. Untuk mengetahui detail selengkapnya, lihat Mengalokasikan resource jaringan menggunakan DRANET terkelola GKE.
Memverifikasi DeviceClasses jaringan
Pastikan resource DeviceClass untuk jaringan ada di cluster Anda.
kubectl get deviceclass netdev.google.com
Outputnya mirip dengan hal berikut ini:
NAME AGE
netdev.google.com 2d22h
Mengaktifkan driver DRANET yang dikelola GKE di node pool slice TPU
Untuk mengaktifkan driver GKE DRANET saat membuat node pool slice TPU, tambahkan label cloud.google.com/gke-networking-dra-driver=true.
gcloud beta container node-pools create NODE_POOL_NAME \
--location=LOCATION \
--cluster=CLUSTER_NAME \
--node-locations=NODE_LOCATIONS \
--machine-type=MACHINE_TYPE \
--tpu-topology=TPU_TOPOLOGY \
--num-nodes=NUM_NODES \
--accelerator-network-profile=auto \
--node-labels=cloud.google.com/gke-networking-dra-driver=true
Ganti kode berikut:
NODE_POOL_NAME: Nama node pool baru.LOCATION: Region atau zona Google Cloud untuk cluster Anda.CLUSTER_NAME: Nama cluster Anda.NODE_LOCATIONS: Google Cloud Zona untuk node dalam node pool.MACHINE_TYPE: Jenis mesin yang akan digunakan untuk node. Untuk mengetahui informasi selengkapnya tentang jenis mesin yang kompatibel dengan TPU, lihat Memilih versi TPU.TPU_TOPOLOGY: Topologi TPU, misalnya,2x4x4. Format topologi bergantung pada versi TPU. Untuk mempelajari lebih lanjut topologi TPU, lihat Memilih topologi.NUM_NODES: Jumlah node di node pool.
Untuk mengetahui informasi selengkapnya, lihat Membuat node pool slice TPU host tunggal.
Men-deploy workload yang mengklaim semua perangkat jaringan
Untuk mengalokasikan perangkat jaringan non-RDMA untuk Pod, tentukan ResourceClaimTemplate.
Buat
ResourceClaimTemplateyang mereferensikannetdev.google.comDeviceClass. Manifes berikut meminta semua perangkat jaringan non-RDMA yang tersedia di node.Simpan manifes sebagai
all-netdev-template.yaml:apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: all-netdev spec: spec: devices: requests: - name: req-netdev exactly: deviceClassName: netdev.google.com allocationMode: AllTerapkan manifes:
kubectl apply -f all-netdev-template.yamlDeploy workload Anda dan referensikan
ResourceClaimTemplate. Manifes berikut men-deploy Pod yang menggunakan templateall-netdevuntuk memberi Pod akses ke semua perangkat jaringan non-RDMA di node. Simpan manifes sebagainetdev-pod.yaml:apiVersion: v1 kind: Pod metadata: name: agnhost-netdev namespace: default labels: app: agnhost spec: containers: - name: agnhost image: registry.k8s.io/e2e-test-images/agnhost:2.39 args: ["netexec", "--http-port", "80"] ports: - name: agnhost-port containerPort: 80 resources: claims: - name: netdev limits: google.com/tpu: 4 nodeSelector: cloud.google.com/gke-tpu-accelerator: TPU_ACCELERATOR cloud.google.com/gke-tpu-topology: TPU_TOPOLOGY resourceClaims: - name: netdev resourceClaimTemplateName: all-netdevGanti kode berikut:
TPU_ACCELERATOR: Jenis akselerator TPU, misalnya,tpu-v5p-slice.TPU_TOPOLOGY: Topologi TPU, misalnya,2x4x4.
Terapkan manifes:
kubectl apply -f netdev-pod.yamlPastikan antarmuka jaringan tambahan yang dialokasikan terlihat di dalam Pod.
kubectl exec agnhost-netdev -- ls /sys/class/netContoh output berikut menunjukkan antarmuka
eth0danlodefault, bersama dengan perangkat jaringan yang dialokasikan, yang memiliki nama sepertieth1daneth2. Jumlah NIC dan namanya akan bervariasi berdasarkan jenis mesin node GKE.eth0 eth1 eth2 lo
Memecahkan masalah
Untuk memeriksa penyiapan jaringan node pool, jalankan perintah berikut:
gcloud beta container node-pools describe NODE_POOL_NAME \
--zone=ZONE \
--cluster=CLUSTER_NAME
Ganti kode berikut:
NODE_POOL_NAME: nama node pool Anda.ZONE: zona node pool.CLUSTER_NAME: nama cluster Anda.
Output menunjukkan jaringan dan subnetwork tambahan yang terpasang ke node pool.
Langkah berikutnya
- Baca tentang mesin yang dioptimalkan akselerator.
- Pelajari cara Menyediakan GPU dengan DRA.
- Pelajari cara Menyiapkan dukungan multi-jaringan untuk pod.
- Pelajari cara Mengalokasikan resource jaringan menggunakan DRANET yang dikelola GKE