Unit Pemrosesan Grafik (GPU) dapat mempercepat proses pelatihan untuk banyak model deep learning secara signifikan. Melatih model untuk tugas seperti klasifikasi gambar, analisis video, dan natural language processing melibatkan perkalian matriks yang intensif komputasi dan operasi lainnya yang dapat memanfaatkan arsitektur paralel masif GPU.
Melatih model deep learning yang melibatkan tugas komputasi intensif pada set data yang sangat besar dapat memerlukan waktu berhari-hari untuk dijalankan di satu prosesor. Namun, jika Anda mendesain program untuk memindahkan tugas tersebut ke satu atau beberapa GPU, Anda dapat mengurangi waktu pelatihan menjadi beberapa jam, bukan beberapa hari.
Sebelum memulai
AI Platform Training memungkinkan Anda menjalankan aplikasi pelatihan TensorFlow di mesin yang mendukung GPU. Baca panduan TensorFlow untuk menggunakan GPU dan bagian dokumen ini tentang menyesuaikan kode pelatihan untuk menggunakan GPU guna memastikan aplikasi Anda menggunakan GPU yang tersedia.
Anda juga dapat menggunakan GPU dengan framework machine learning selain TensorFlow, jika menggunakan penampung kustom untuk pelatihan.
Beberapa model tidak mendapatkan manfaat dari pengoperasian di GPU. Sebaiknya gunakan GPU untuk model besar dan kompleks yang memiliki banyak operasi matematika. Meskipun demikian, Anda harus menguji manfaat dukungan GPU dengan menjalankan sampel kecil data melalui pelatihan.
Meminta mesin yang dilengkapi GPU
Untuk menggunakan GPU di cloud, konfigurasikan tugas pelatihan Anda untuk mengakses mesin yang mengaktifkan GPU dengan salah satu cara berikut:
- Gunakan tingkat skala
BASIC_GPU
. - Gunakan jenis mesin Compute Engine dan pasang GPU.
- Gunakan jenis mesin lama yang mendukung GPU.
Mesin dasar yang dilengkapi GPU
Jika Anda mempelajari cara menggunakan AI Platform Training atau
bereksperimen dengan mesin yang mendukung GPU, Anda dapat menetapkan tingkat skala ke
BASIC_GPU
untuk mendapatkan satu instance pekerja dengan satu GPU.
Jenis mesin Compute Engine dengan lampiran GPU
Jika mengonfigurasi tugas pelatihan dengan jenis mesin Compute Engine, Anda dapat memasang jumlah GPU kustom untuk mempercepat tugas:
- Tetapkan tingkat skala ke
CUSTOM
. - Konfigurasikan pekerja master dan jenis tugas lainnya (pekerja, server parameter, atau evaluator) yang merupakan bagian dari tugas Anda untuk menggunakan jenis mesin Compute Engine yang valid.
- Tambahkan kolom
acceleratorConfig
dengan jenis dan jumlah GPU yang ingin AndamasterConfig
,workerConfig
,parameterServerConfig
, atauevaluatorConfig
, bergantung pada instance virtual machine (VM) yang ingin Anda percepat. Anda dapat menggunakan jenis GPU berikut:NVIDIA_TESLA_A100
NVIDIA_TESLA_P4
NVIDIA_TESLA_P100
NVIDIA_TESLA_T4
NVIDIA_TESLA_V100
Untuk membuat acceleratorConfig
yang valid, Anda harus memperhitungkan beberapa batasan:
Anda hanya dapat menggunakan jumlah GPU tertentu dalam konfigurasi. Misalnya, Anda dapat memasang 2 atau 4 NVIDIA Tesla T4, tetapi tidak dapat memasang 3. Untuk mengetahui jumlah yang valid untuk setiap jenis GPU, lihat tabel kompatibilitas di bawah.
Anda harus memastikan setiap konfigurasi GPU menyediakan CPU dan memori virtual yang memadai untuk jenis mesin yang Anda gunakan. Misalnya, jika Anda menggunakan
n1-standard-32
untuk pekerja, setiap pekerja memiliki 32 CPU virtual dan memori sebesar 120 GB. Karena setiap NVIDIA Tesla V100 dapat menyediakan hingga 12 CPU virtual dan memori sebesar 76 GB, Anda harus memasang minimal 4 ke setiap pekerjan1-standard-32
untuk mendukung persyaratannya. (2 GPU memberikan resource yang tidak memadai, dan Anda tidak dapat menentukan 3 GPU.)Tinjau daftar jenis mesin untuk AI Platform Training dan perbandingan GPU untuk workload komputasi untuk menentukan kompatibilitas ini, atau lihat tabel kompatibilitas di bawah.
Perhatikan batasan tambahan berikut pada resource GPU untuk Pelatihan Platform AI dalam kasus tertentu:
- Konfigurasi dengan 4 GPU NVIDIA Tesla P100 hanya mendukung hingga 64 CPU virtual dan memori hingga 208 GB di semua region dan zona.
Anda harus mengirimkan tugas pelatihan ke region yang mendukung konfigurasi GPU Anda. Baca dukungan wilayah di bawah.
Tabel berikut memberikan referensi cepat tentang jumlah setiap jenis akselerator yang dapat Anda lampirkan ke setiap jenis mesin Compute Engine:
Jumlah GPU yang valid untuk setiap jenis mesin | ||||||
---|---|---|---|---|---|---|
Jenis mesin | NVIDIA A100 | NVIDIA Tesla K80 | NVIDIA Tesla P4 | NVIDIA Tesla P100 | NVIDIA Tesla T4 | NVIDIA Tesla V100 |
n1-standard-4 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 | |
n1-standard-8 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 | |
n1-standard-16 |
2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 2, 4, 8 | |
n1-standard-32 |
4, 8 | 2, 4 | 2, 4 | 2, 4 | 4, 8 | |
n1-standard-64 |
4 | 4 | 8 | |||
n1-standard-96 |
4 | 4 | 8 | |||
n1-highmem-2 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 | |
n1-highmem-4 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 | |
n1-highmem-8 |
1, 2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4, 8 | |
n1-highmem-16 |
2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 2, 4, 8 | |
n1-highmem-32 |
4, 8 | 2, 4 | 2, 4 | 2, 4 | 4, 8 | |
n1-highmem-64 |
4 | 4 | 8 | |||
n1-highmem-96 |
4 | 4 | 8 | |||
n1-highcpu-16 |
2, 4, 8 | 1, 2, 4 | 1, 2, 4 | 1, 2, 4 | 2, 4, 8 | |
n1-highcpu-32 |
4, 8 | 2, 4 | 2, 4 | 2, 4 | 4, 8 | |
n1-highcpu-64 |
8 | 4 | 4 | 4 | 8 | |
n1-highcpu-96 |
4 | 4 | 8 | |||
a2-highgpu-1g |
1 | |||||
a2-highgpu-2g |
2 | |||||
a2-highgpu-4g |
4 | |||||
a2-highgpu-8g |
8 | |||||
a2-megagpu-16g |
16 |
Di bawah adalah contoh pengiriman tugas menggunakan jenis mesin Compute Engine dengan GPU terpasang.
Jenis mesin dengan GPU disertakan
Atau, daripada menggunakan acceleratorConfig
, Anda dapat memilih jenis mesin
lama yang menyertakan GPU:
- Tetapkan tingkat skala ke
CUSTOM
. - Konfigurasikan pekerja master dan jenis tugas lainnya (pekerja, server parameter, atau evaluator) yang ingin Anda percepat untuk menggunakan salah satu jenis mesin berikut yang mendukung GPU, berdasarkan jumlah GPU dan jenis akselerator yang diperlukan untuk tugas Anda:
standard_gpu
: Satu GPUcomplex_model_m_gpu
: Empat GPUcomplex_model_l_gpu
: Delapan GPUstandard_p100
: Satu GPU NVIDIA Tesla P100complex_model_m_p100
: Empat GPU NVIDIA Tesla P100standard_v100
: Satu GPU NVIDIA Tesla V100large_model_v100
: Satu GPU NVIDIA Tesla V100complex_model_m_v100
: Empat GPU NVIDIA Tesla V100complex_model_l_v100
: Delapan GPU NVIDIA Tesla V100
Di bawah adalah contoh pengiriman tugas dengan jenis mesin yang mendukung GPU menggunakan perintah gcloud
.
Lihat informasi selengkapnya tentang jenis mesin untuk AI Platform Training.
Region yang mendukung GPU
Anda harus menjalankan tugas di region yang mendukung GPU. Region berikut saat ini menyediakan akses ke GPU:
us-west1
us-west2
us-central1
us-east1
us-east4
northamerica-northeast1
southamerica-east1
europe-west1
europe-west2
europe-west4
asia-south1
asia-southeast1
asia-east1
asia-northeast1
asia-northeast3
australia-southeast1
Selain itu, beberapa region ini hanya menyediakan akses ke jenis GPU tertentu. Untuk memahami sepenuhnya region yang tersedia untuk layanan AI Platform Training, termasuk pelatihan model dan prediksi online/batch, baca panduan untuk region.
Jika tugas pelatihan Anda menggunakan beberapa jenis GPU, semuanya harus tersedia dalam satu zona di region Anda. Misalnya, Anda tidak dapat menjalankan tugas di us-central1
dengan pekerja master menggunakan GPU NVIDIA Tesla T4, server parameter menggunakan GPU NVIDIA Tesla K80, dan pekerja menggunakan GPU NVIDIA Tesla P100. Meskipun semua GPU ini tersedia untuk tugas pelatihan di us-central1
, tidak ada satu zona pun di region tersebut yang menyediakan ketiga jenis GPU sekaligus. Untuk mempelajari ketersediaan zona GPU lebih lanjut, lihat perbandingan GPU untuk beban kerja komputasi.
Mengirim tugas pelatihan
Anda dapat mengirimkan tugas pelatihan menggunakan perintah gcloud ai-platform jobs submit
training
.
Tentukan file
config.yaml
yang menjelaskan opsi GPU yang Anda inginkan. Struktur file YAML mewakili Resource tugas. Berikut adalah dua contoh fileconfig.yaml
.Contoh pertama menunjukkan file konfigurasi untuk tugas pelatihan yang menggunakan jenis mesin Compute Engine, beberapa di antaranya memiliki GPU yang terpasang:
trainingInput: scaleTier: CUSTOM # Configure a master worker with 4 T4 GPUs masterType: n1-highcpu-16 masterConfig: acceleratorConfig: count: 4 type: NVIDIA_TESLA_T4 # Configure 9 workers, each with 4 T4 GPUs workerCount: 9 workerType: n1-highcpu-16 workerConfig: acceleratorConfig: count: 4 type: NVIDIA_TESLA_T4 # Configure 3 parameter servers with no GPUs parameterServerCount: 3 parameterServerType: n1-highmem-8
Contoh berikutnya menunjukkan file konfigurasi untuk tugas dengan konfigurasi yang mirip dengan yang di atas. Namun, konfigurasi ini menggunakan jenis mesin lama yang menyertakan GPU, bukan melampirkan GPU dengan
acceleratorConfig
:trainingInput: scaleTier: CUSTOM # Configure a master worker with 4 GPUs masterType: complex_model_m_gpu # Configure 9 workers, each with 4 GPUs workerCount: 9 workerType: complex_model_m_gpu # Configure 3 parameter servers with no GPUs parameterServerCount: 3 parameterServerType: large_model
Gunakan perintah
gcloud
untuk mengirimkan tugas, termasuk argumen--config
yang mengarah ke fileconfig.yaml
Anda. Contoh berikut mengasumsikan Anda telah menyiapkan variabel lingkungan, yang ditunjukkan dengan tanda$
diikuti dengan huruf besar, untuk nilai beberapa argumen:gcloud ai-platform jobs submit training $JOB_NAME \ --package-path $APP_PACKAGE_PATH \ --module-name $MAIN_APP_MODULE \ --job-dir $JOB_DIR \ --region us-central1 \ --config config.yaml \ -- \ --user_arg_1 value_1 \ ... --user_arg_n value_n
Atau, Anda dapat menentukan detail konfigurasi cluster dengan flag command line, bukan dalam file konfigurasi. Pelajari lebih lanjut cara menggunakan flag ini.
Contoh berikut menunjukkan cara mengirimkan tugas dengan konfigurasi yang sama seperti
contoh pertama (menggunakan jenis mesin Compute Engine dengan GPU
terpasang), tetapi melakukannya tanpa menggunakan file config.yaml
:
gcloud ai-platform jobs submit training $JOB_NAME \
--package-path $APP_PACKAGE_PATH \
--module-name $MAIN_APP_MODULE \
--job-dir $JOB_DIR \
--region us-central1 \
--scale-tier custom \
--master-machine-type n1-highcpu-16 \
--master-accelerator count=4,type=nvidia-tesla-t4 \
--worker-count 9 \
--worker-machine-type n1-highcpu-16 \
--worker-accelerator count=4,type=nvidia-tesla-t4 \
--parameter-server-count 3 \
--parameter-server-machine-type n1-highmem-8 \
-- \
--user_arg_1 value_1 \
...
--user_arg_n value_n
Catatan:
- Jika Anda menentukan opsi dalam file konfigurasi
(
config.yaml
) dan sebagai tanda command line, nilai pada command line akan menggantikan nilai dalam file konfigurasi. - Flag
--
kosong menandai akhir flag spesifikgcloud
dan awalUSER_ARGS
yang ingin Anda teruskan ke aplikasi. - Flag khusus untuk AI Platform Training, seperti
--module-name
,--runtime-version
, dan--job-dir
, harus ditempatkan sebelum flag--
kosong. Layanan AI Platform Training menafsirkan flag ini. - Flag
--job-dir
, jika ditentukan, harus berada sebelum flag--
kosong, karena AI Platform Training menggunakan--job-dir
untuk memvalidasi jalur. - Aplikasi Anda juga harus menangani flag
--job-dir
, jika ditentukan. Meskipun flag muncul sebelum--
kosong,--job-dir
juga diteruskan ke aplikasi Anda sebagai flag command line. - Anda dapat menentukan
USER_ARGS
sebanyak yang Anda butuhkan. AI Platform Training meneruskan--user_first_arg
,--user_second_arg
, dan seterusnya, ke aplikasi Anda.
Untuk mengetahui detail selengkapnya tentang opsi pengiriman tugas, lihat panduan untuk memulai tugas pelatihan.
Menyesuaikan kode pelatihan untuk menggunakan GPU
Jika menggunakan Keras atau Estimator untuk tugas pelatihan TensorFlow dan ingin berlatih menggunakan satu VM dengan satu GPU, Anda tidak perlu menyesuaikan kode untuk GPU.
Jika cluster pelatihan Anda berisi beberapa GPU, gunakan
API tf.distribute.Strategy
dalam kode pelatihan Anda:
- Untuk pelatihan di satu VM dengan beberapa GPU, sebaiknya gunakan
MirroredStrategy
, yang sepenuhnya didukung untuk Keras di TensorFlow 2.1 dan yang lebih baru. - Untuk pelatihan di beberapa VM dengan GPU, lihat rekomendasi untuk pelatihan terdistribusi.
Untuk menyesuaikan cara TensorFlow menetapkan operasi tertentu ke GPU, baca
panduan TensorFlow untuk menggunakan
GPU. Dalam hal ini, sebaiknya pelajari cara Pelatihan AI Platform menetapkan variabel lingkungan TF_CONFIG
di setiap VM.
String perangkat GPU
Satu GPU mesin standard_gpu
diidentifikasi sebagai "/gpu:0"
.
Mesin dengan beberapa GPU menggunakan ID yang dimulai dengan "/gpu:0"
, lalu
"/gpu:1"
, dan seterusnya. Misalnya, mesin complex_model_m_gpu
memiliki empat
GPU yang diidentifikasi sebagai "/gpu:0"
hingga "/gpu:3"
.
Paket Python di komputer yang mendukung GPU
Komputer yang dilengkapi GPU sudah diinstal sebelumnya dengan tensorflow-gpu, paket TensorFlow Python dengan dukungan GPU. Lihat daftar versi runtime untuk mengetahui daftar semua paket pra-instal.
Peristiwa pemeliharaan
VM yang mendukung GPU dan menjalankan tugas AI Platform Training terkadang akan terpengaruh oleh pemeliharaan host Compute Engine.
VM dikonfigurasi untuk dimulai ulang secara otomatis setelah peristiwa pemeliharaan tersebut, tetapi Anda mungkin harus melakukan beberapa pekerjaan tambahan untuk memastikan tugas Anda tahan terhadap penonaktifan ini. Konfigurasikan aplikasi pelatihan Anda untuk menyimpan checkpoint
model secara rutin (biasanya di sepanjang jalur Cloud Storage yang Anda tentukan melalui
argumen --job-dir
ke gcloud ai-platform jobs submit training
) dan untuk
memulihkan checkpoint terbaru jika checkpoint sudah ada.
TensorFlow Estimator
menerapkan fungsi ini untuk Anda, selama Anda menentukan model_dir
.
Estimator secara rutin menyimpan titik pemeriksaan ke model_dir
dan mencoba memuat
dari titik pemeriksaan terbaru, sehingga Anda tidak perlu khawatir dengan peristiwa pemeliharaan
pada pekerja GPU.
Jika Anda melakukan pelatihan dengan Keras, gunakan callback
ModelCheckpoint
untuk menyimpan progres pelatihan secara rutin. Jika Anda menggunakan tf.distribute.Strategy
dengan Keras, VM Anda akan menggunakan checkpoint untuk otomatis pulih dari
mulai ulang.
Jika tidak, tambahkan logika ke kode pelatihan untuk memeriksa keberadaan checkpoint
terbaru
dan memulihkan dari checkpoint jika
ada.
Untuk kasus lanjutan lainnya, baca panduan TensorFlow untuk titik pemeriksaan.
Langkah selanjutnya
- Baca ringkasan cara kerja pelatihan.
- Pahami batasan penggunaan GPU serentak.
- Baca artikel tentang menggunakan GPU dengan TensorFlow.
- Baca perbandingan performa dan biaya GPU yang lebih baru, seperti NVIDIA Tesla T4.