Panduan ini menunjukkan cara mengoptimalkan penyediaan GPU untuk workload pelatihan skala sedang dan kecil menggunakan mode penyediaan mulai fleksibel. Dalam panduan ini, Anda menggunakan flex-start untuk men-deploy workload yang terdiri dari dua Tugas Kubernetes. Setiap Job memerlukan satu GPU. GKE secara otomatis menyediakan satu node dengan dua GPU A100 untuk menjalankan kedua Tugas.
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 mulai fleksibel dengan penyediaan dalam antrean.
Panduan ini ditujukan untuk Engineer machine learning (ML), Admin dan operator platform, serta Spesialis Data dan AI yang tertarik untuk menggunakan kemampuan orkestrasi container Kubernetes dalam menjalankan beban kerja batch. Untuk mengetahui informasi selengkapnya tentang peran umum dan contoh tugas yang kami rujuk dalam Google Cloud konten, lihat Peran dan tugas pengguna GKE umum.
Harga mulai fleksibel
Mulai fleksibel direkomendasikan jika workload Anda memerlukan penyediaan dinamis sumber daya sesuai kebutuhan, hingga tujuh hari dengan reservasi jangka pendek, tanpa pengelolaan kuota yang rumit, dan akses yang hemat biaya. Mulai fleksibel 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
gcloud components update
.
- Verifikasi bahwa Anda memiliki cluster Autopilot atau cluster Standard yang menjalankan versi 1.33.0-gke.1712000 atau yang lebih baru.
- Pastikan Anda memahami batasan mulai fleksibel.
- Saat menggunakan cluster Standar, pastikan Anda mempertahankan setidaknya satu node pool tanpa mengaktifkan flex-start agar cluster berfungsi dengan benar.
- Verifikasi bahwa Anda memiliki kuota untuk GPU yang dapat di-preempt 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 tanda berikut agar Anda dapat mempelajari flex-start:
--location=us-central1 \
--node-locations=us-central1-a,us-central1-b \
--machine-type=g2-standard-8
Saat Anda membuat node pool mulai fleksibel, gunakan
flag yang disebutkan sebelumnya dan --accelerator type=nvidia-l4,count=1
.
Jika Anda memiliki cluster Standard 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 Standard regional, zona tempat jenis akselerator GPU tersedia harus berada di region tempat cluster berada. Saat membuat kumpulan node, 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 cluster:
gcloud container clusters list
Outputnya 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 IPV4
Mencantumkan jenis akselerator GPU yang tersedia, tidak termasuk Workstation Virtual di lokasi:
gcloud compute accelerator-types list | grep LOCATION_NAME | grep -v "Workstation"
Ganti
LOCATION_NAME
dengan 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 Anda gunakan.
- Untuk melihat nama jenis mesin yang dapat Anda tentukan, klik link pada 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 Anda pilih.
Sebelum menggunakan mesin yang dioptimalkan untuk akselerator, pastikan mesin tersebut didukung dengan mode penyediaan mulai fleksibel, 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 dilampirkan ke setiap node di node pool. Nilai yang valid bergantung pada jenis akselerator dan jenis mesin Anda. Setiap jenis mesin memiliki batasan jumlah GPU yang dapat didukungnya. Untuk menentukan nilai yang akan digunakan (selain nilai default 1
):
- Lihat jenis mesin GPU.
- Dalam tabel, telusuri jenis akselerator untuk jenis seri mesin Anda.
- Gunakan nilai di kolom "GPU count".
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
Membuat node pool dengan flex-start:
gcloud container node-pools create NODE_POOL_NAME \ --cluster CLUSTER_NAME \ --location LOCATION_NAME \ --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
Ganti kode berikut:
NODE_POOL_NAME
: nama yang Anda pilih untuk node pool.CLUSTER_NAME
: nama cluster Standar yang ingin Anda ubah.LOCATION_NAME
: region komputasi untuk bidang kontrol cluster.PROJECT_ID
: project ID Anda.ACCELERATOR_TYPE
: jenis akselerator tertentu (misalnya,nvidia-tesla-t4
untuk NVIDIA T4) yang akan dilampirkan 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
: optional. Waktu proses maksimum node dalam detik, hingga default tujuh hari. Nomor yang Anda masukkan harus berakhirans
. Misalnya, untuk menentukan satu hari, masukkan86400s
.NODE_ZONES
: daftar yang dipisahkan koma untuk satu atau beberapa zona tempat GKE membuat node pool.
Dalam perintah ini, flag
--flex-start
menginstruksikangcloud
untuk membuat node pool dengan flex-start yang diaktifkan.GKE membuat node pool dengan node yang berisi dua instance jenis akselerator yang ditentukan. Node pool awalnya memiliki nol node dan penskalaan otomatis diaktifkan
Verifikasi status mulai fleksibel di node pool:
gcloud container node-pools describe NODE_POOL_NAME \ --cluster CLUSTER_NAME \ --location LOCATION_NAME \ --format="get(config.flexStart)"
Jika flex-start diaktifkan di node pool, kolom
flexStart
akan disetel keTrue
.
Terraform
Anda dapat menggunakan mulai fleksibel dengan GPU menggunakan modul Terraform.
- Tambahkan blok berikut ke konfigurasi Terraform Anda:
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-t4
untuk 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 beberapa zona tempat GKE membuat node pool.
Terraform memanggil API untuk membuat cluster dengan node pool yang menggunakan flex-start dengan GPU. Google Cloud 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.
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 memastikan bahwa Pod tersebut berhasil menjalankan tugas tertentu.Di Google Cloud konsol, luncurkan sesi Cloud Shell dengan mengklik
Activate Cloud Shell. Sesi akan terbuka di panel bawah konsol Google Cloud .
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: OnFailure
Terapkan manifes
dws-flex-start.yaml
:kubectl apply -f dws-flex-start.yaml
Pastikan bahwa Job berjalan di node yang sama:
kubectl get pods -l "job-name in (job-1,job-2)" -o wide
Outputnya 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 akun Anda untuk resource yang Anda gunakan di halaman ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource. Google Cloud
Menghapus project
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the 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 LOCATION_NAME
Hapus cluster:
gcloud container clusters delete CLUSTER_NAME
Langkah berikutnya
- Pelajari lebih lanjut GPU di GKE.
- Pelajari lebih lanjut penyediaan otomatis node.
- Pelajari lebih lanjut Praktik terbaik untuk menjalankan workload batch di GKE.