Jika workload Anda memerlukan pemrosesan terdistribusi multi-node, pertimbangkan untuk menggunakan flex-start dengan penyediaan dalam antrean. Untuk mengetahui informasi selengkapnya, lihat Menjalankan workload skala besar dengan flex-start dengan penyediaan dalam antrean.
Panduan ini ditujukan untuk Engineer machine learning (ML), Admin dan operator platform, serta Spesialis Data dan AI yang tertarik menggunakan kemampuan orkestrasi container Kubernetes untuk menjalankan workload batch. Untuk mengetahui informasi selengkapnya tentang peran umum dan contoh tugas yang kami referensikan dalam Google Cloud konten, lihat Peran dan tugas pengguna GKE umum.
Harga flex-start
Flex-start direkomendasikan jika workload Anda memerlukan resource yang disediakan secara dinamis sesuai kebutuhan, hingga tujuh hari dengan reservasi jangka pendek, tanpa pengelolaan kuota yang kompleks, dan akses yang hemat biaya. Flex-start didukung oleh Dynamic Workload Scheduler dan ditagih menggunakan harga Dynamic Workload Scheduler:
- Diskon (hingga 53%) untuk vCPU, GPU, dan TPU.
- Anda membayar sesuai penggunaan.
Sebelum memulai
Sebelum memulai, pastikan Anda telah melakukan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin 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 perintah yang dijalankan dalam dokumen ini.
- Pastikan Anda memiliki cluster Autopilot atau cluster Standar yang menjalankan versi 1.33.0-gke.1712000 atau yang lebih baru.
- Pastikan Anda memahami batasan flex-start.
- Saat menggunakan cluster Standar, pastikan Anda mempertahankan setidaknya satu node pool tanpa flex-start yang diaktifkan agar cluster berfungsi dengan benar.
- Pastikan Anda memiliki kuota untuk GPU preemptible di lokasi node Anda.
Jika Anda tidak memiliki cluster atau cluster Anda tidak memenuhi persyaratan, Anda dapat membuat cluster regional Standar menggunakan gcloud CLI. Tambahkan flag berikut agar Anda dapat mempelajari flex-start:
--location=us-central1 \
--node-locations=us-central1-a,us-central1-b \
--machine-type=g2-standard-8
Saat membuat node pool flex-start, gunakan
flag yang disebutkan sebelumnya dan --accelerator type=nvidia-l4,count=1.
Jika Anda memiliki cluster Standar yang memenuhi persyaratan, bagian berikutnya akan memandu Anda memilih jenis akselerator GPU dan jenis mesin untuk cluster Anda.
Memilih jenis akselerator GPU
Jika Anda menggunakan cluster dalam mode Autopilot, lewati bagian ini dan buka bagian Menjalankan workload batch.
Ketersediaan GPU khusus untuk setiap zona. Anda perlu menemukan jenis akselerator GPU yang tersedia di zona tempat cluster Standar berada. Jika Anda memiliki cluster Standar regional, zona tempat jenis akselerator GPU tersedia harus berada di region tempat cluster berada. Saat membuat node pool, Anda menentukan jenis akselerator dan zona untuk node. Jika Anda menentukan jenis akselerator yang tidak tersedia di lokasi cluster, pembuatan node pool akan gagal.
Jalankan perintah berikut untuk mendapatkan lokasi cluster dan jenis akselerator GPU yang didukung.
Dapatkan lokasi tempat cluster berada:
gcloud container clusters listOutputnya mirip dengan hal berikut ini:
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS STACK_TYPE example-cluster-1 us-west2 1.33.2-gke.1111000 34.102.3.122 e2-medium 1.33.2-gke.1111000 9 RUNNING IPV4Buat daftar jenis akselerator GPU yang tersedia, tidak termasuk Workstation Virtual di lokasi:
gcloud compute accelerator-types list | grep CONTROL_PLANE_LOCATION | grep -v "Workstation"Ganti
CONTROL_PLANE_LOCATIONdengan lokasi cluster.Misalnya, untuk mendapatkan daftar jenis akselerator GPU di region
us-west2, jalankan perintah berikut:gcloud compute accelerator-types list | grep us-west2 | grep -v "Workstation"Outputnya mirip dengan hal berikut ini:
nvidia-b200 us-west2-c NVIDIA B200 180GB nvidia-tesla-p4 us-west2-c NVIDIA Tesla P4 nvidia-tesla-t4 us-west2-c NVIDIA T4 nvidia-tesla-p4 us-west2-b NVIDIA Tesla P4 nvidia-tesla-t4 us-west2-b NVIDIA T4
Memilih jenis mesin yang kompatibel
Jika Anda menggunakan cluster dalam mode Autopilot, lewati bagian ini dan buka bagian Menjalankan workload batch.
Setelah mengetahui GPU mana yang tersedia di lokasi cluster, Anda dapat menentukan jenis mesin yang kompatibel. Google Cloud membatasi GPU ke seri mesin tertentu. Gunakan langkah-langkah berikut untuk menemukan jenis mesin:
- Lihat tabel model GPU yang tersedia.
- Temukan baris untuk jenis akselerator GPU yang telah Anda pilih.
- Lihat kolom "Seri mesin" untuk baris tersebut. Kolom ini memberi tahu Anda seri mesin yang harus digunakan.
- Untuk melihat nama jenis mesin yang dapat Anda tentukan, klik link di seri mesin.
Satu-satunya pengecualian adalah seri mesin N1, yang memberikan panduan tambahan tentang jenis mesin N1 yang dapat Anda gunakan dengan jenis akselerator yang dipilih.
Sebelum menggunakan mesin yang dioptimalkan akselerator, pastikan mesin tersebut didukung dengan mode penyediaan flex-start, seperti yang ditunjukkan dalam Ketersediaan opsi konsumsi menurut jenis mesin.
Menentukan jumlah akselerator
Jika Anda menggunakan cluster dalam mode Autopilot, lewati bagian ini dan buka bagian Menjalankan workload batch.
Untuk membuat node pool, Anda perlu menentukan jumlah akselerator yang akan dipasang ke setiap node di node pool. Nilai yang valid bergantung pada jenis akselerator dan jenis mesin Anda. Setiap jenis mesin memiliki batas jumlah GPU yang dapat didukungnya. Untuk menentukan nilai yang akan digunakan (selain default 1):
- Lihat jenis mesin GPU.
- Dalam tabel, telusuri jenis akselerator untuk jenis seri mesin Anda.
- Gunakan nilai di kolom "Jumlah GPU".
Membuat node pool dengan flex-start
Jika Anda menggunakan cluster dalam mode Autopilot, lewati bagian ini dan buka bagian Menjalankan workload batch.
Untuk membuat node pool dengan flex-start yang diaktifkan pada cluster Standar yang ada, Anda dapat menggunakan gcloud CLI atau Terraform.
gcloud
Buat node pool dengan flex-start:
gcloud container node-pools create NODE_POOL_NAME \ --cluster CLUSTER_NAME \ --location CONTROL_PLANE_LOCATION \ --project PROJECT_ID \ --accelerator type=ACCELERATOR_TYPE,count=COUNT \ --machine-type MACHINE_TYPE \ --max-run-duration MAX_RUN_DURATION \ --flex-start \ --node-locations NODE_ZONES \ --num-nodes 0 \ --enable-autoscaling \ --total-min-nodes 0 \ --total-max-nodes 5 \ --location-policy ANY \ --reservation-affinity none \ --no-enable-autorepair \ --consolidation-delay=CONSOLIDATION_DELAYGanti kode berikut:
NODE_POOL_NAME: nama yang Anda pilih untuk node pool.CLUSTER_NAME: nama cluster Standar yang ingin Anda ubah.CONTROL_PLANE_LOCATION: region komputasi untuk control plane cluster.PROJECT_ID: project ID Anda.ACCELERATOR_TYPE: jenis akselerator tertentu (misalnya,nvidia-tesla-t4untuk NVIDIA T4) yang akan dipasang ke instance.COUNT: jumlah akselerator yang akan dipasang ke instance. Nilai defaultnya adalah1.MACHINE_TYPE: jenis mesin yang akan digunakan untuk node.MAX_RUN_DURATION: opsional. Runtime maksimum node dalam detik, hingga default tujuh hari. Angka yang Anda masukkan harus diakhiri dengans. Misalnya, untuk menentukan satu hari, masukkan86400s.CONSOLIDATION_DELAY: opsional. Durasi yang ditunggu Cluster Autoscaler sebelum dapat menurunkan skala node yang kurang dimanfaatkan. Gunakan setelan ini untuk menunda penurunan skala dan menyimpan node pool untuk digunakan kembali oleh Pod lain. Angka yang Anda masukkan harus diakhiri dengans. Misalnya, untuk menentukan satu jam, masukkan3600s. Tersedia di GKE versi1.34.1-gke.2364000dan yang lebih baru.NODE_ZONES: daftar yang dipisahkan koma untuk satu atau beberapa zona tempat GKE membuat node pool.
Dalam perintah ini, flag
--flex-startmenginstruksikangclouduntuk membuat node pool dengan VM Flex-start.GKE membuat node pool dengan node yang berisi dua instance dari jenis akselerator yang ditentukan. Node pool awalnya memiliki nol node dan penskalaan otomatis diaktifkan
Terraform
Anda dapat menggunakan flex-start dengan GPU menggunakan modul Terraform.
- Tambahkan blok berikut ke konfigurasi Terraform:
resource "google_container_node_pool" " "gpu_dws_pool" {
name = "gpu-dws-pool"
queued_provisioning {
enabled = false
}
}
node_config {
machine_type = "MACHINE_TYPE"
accelerator_type = "ACCELERATOR_TYPE"
accelerator_count = COUNT
node_locations = ["NODE_ZONES"]
flex_start = true
}
Ganti kode berikut:
MACHINE_TYPE: jenis mesin yang akan digunakan untuk node.ACCELERATOR_TYPE: jenis akselerator tertentu (misalnya,nvidia-tesla-t4untuk NVIDIA T4) yang akan dipasang ke instance.COUNT: jumlah akselerator yang akan dipasang ke instance. Nilai defaultnya adalah1.NODE_ZONES: daftar yang dipisahkan koma untuk satu atau atau lebih zona tempat GKE membuat node pool.
Terraform memanggil Google Cloud API untuk membuat cluster dengan node
pool yang menggunakan VM Flex-start dengan GPU. Node pool awalnya memiliki nol node dan penskalaan otomatis diaktifkan. Untuk mempelajari Terraform lebih lanjut, lihat spesifikasi resource
google_container_node_pool di terraform.io.
Memverifikasi status flex-start di node pool
Jalankan perintah berikut:
gcloud container node-pools describe NODE_POOL_NAME \
--cluster CLUSTER_NAME \
--location CONTROL_PLANE_LOCATION \
--format="get(config.flexStart)"
Jika flex-start diaktifkan di node pool, kolom flexStart akan ditetapkan ke True.
Menjalankan workload batch
Di bagian ini, Anda akan membuat dua Tugas Kubernetes yang masing-masing memerlukan satu GPU. Pengontrol Tugas di Kubernetes membuat satu atau beberapa Pod dan membantu memastikan bahwa Pod tersebut berhasil menjalankan tugas tertentu.Di Google Cloud konsol, luncurkan sesi Cloud Shell dengan mengklik
Aktifkan Cloud Shell. Sesi akan terbuka di panel bawah Google Cloud konsol.
Buat file bernama
dws-flex-start.yaml:apiVersion: batch/v1 kind: Job metadata: name: job-1 spec: template: spec: nodeSelector: cloud.google.com/gke-flex-start: "true" cloud.google.com/gke-accelerator: ACCELERATOR_TYPE containers: - name: container-1 image: gcr.io/k8s-staging-perf-tests/sleep:latest args: ["10s"] # Sleep for 10 seconds resources: requests: nvidia.com/gpu: 1 limits: nvidia.com/gpu: 1 restartPolicy: OnFailure --- apiVersion: batch/v1 kind: Job metadata: name: job-2 spec: template: spec: nodeSelector: cloud.google.com/gke-flex-start: "true" cloud.google.com/gke-accelerator: ACCELERATOR_TYPE containers: - name: container-2 image: gcr.io/k8s-staging-perf-tests/sleep:latest args: ["10s"] # Sleep for 10 seconds resources: requests: nvidia.com/gpu: 1 limits: nvidia.com/gpu: 1 restartPolicy: OnFailureTerapkan manifes
dws-flex-start.yaml:kubectl apply -f dws-flex-start.yamlVerifikasi bahwa Tugas berjalan di node yang sama:
kubectl get pods -l "job-name in (job-1,job-2)" -o wideOutputnya mirip dengan hal berikut ini:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES job-1 0/1 Completed 0 19m 10.(...) gke-flex-zonal-a2 <none> <none> job-2 0/1 Completed 0 19m 10.(...) gke-flex-zonal-a2 <none> <none>
Pembersihan
Agar tidak dikenai biaya pada Google Cloud akun Anda untuk resource yang Anda gunakan di halaman ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project
- Di Google Cloud konsol, buka halaman Manage resources.
- Pada daftar project, pilih project yang Anda ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus resource satu per satu
Hapus Tugas:
kubectl delete job -l "job-name in (job-1,job-2)"Hapus node pool:
gcloud container node-pools delete NODE_POOL_NAME \ --location CONTROL_PLANE_LOCATIONHapus cluster:
gcloud container clusters delete CLUSTER_NAME
Langkah berikutnya
- Pelajari lebih lanjut GPU di GKE.
- Pelajari penyediaan otomatis node lebih lanjut.
- Pelajari lebih lanjut Praktik terbaik untuk menjalankan workload batch di GKE.