Unit Pemrosesan Grafis (GPU) dapat mempercepat proses pelatihan secara signifikan untuk berbagai model deep learning. Melatih model untuk tugas seperti klasifikasi gambar, analisis video, dan natural language processing melibatkan perkalian matriks yang membutuhkan komputasi intensif serta operasi lain yang dapat memanfaatkan arsitektur paralel GPU yang masif.
Melatih model deep learning yang melibatkan tugas komputasi intensif pada set data yang sangat besar dapat memerlukan waktu berhari-hari untuk dijalankan pada satu prosesor. Namun, jika Anda mendesain program untuk mengalihkan tugas tersebut ke satu atau beberapa GPU, Anda dapat mengurangi waktu pelatihan menjadi jam, bukan hari.
Sebelum memulai
AI Platform Training memungkinkan Anda menjalankan aplikasi pelatihan TensorFlow pada mesin yang mendukung GPU. Baca panduan TensorFlow terkait penggunaan GPU dan bagian dari dokumen ini tentang menyesuaikan kode pelatihan untuk memanfaatkan GPU guna memastikan aplikasi Anda memanfaatkan GPU yang tersedia.
Anda juga dapat menggunakan GPU dengan framework machine learning selain TensorFlow, jika Anda menggunakan container kustom untuk pelatihan.
Beberapa model tidak mendapat manfaat dari berjalan menggunakan GPU. Kami merekomendasikan GPU untuk model besar dan kompleks yang memiliki banyak operasi matematika. Meski begitu, Anda harus menguji manfaat dukungan GPU dengan menjalankan sampel kecil data melalui pelatihan.
Meminta komputer yang mendukung GPU
Untuk menggunakan GPU di cloud, konfigurasikan tugas pelatihan Anda untuk mengakses mesin yang mendukung GPU dengan salah satu cara berikut:
- Gunakan tingkat skala
BASIC_GPU
. - Gunakan jenis mesin Compute Engine dan pasang GPU.
- Gunakan jenis mesin lama yang mengaktifkan GPU.
Mesin dasar yang mendukung 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 NVIDIA Tesla K80.
Jenis mesin Compute Engine dengan lampiran GPU
Jika mengonfigurasi tugas pelatihan dengan jenis mesin Compute Engine, Anda dapat menambahkan GPU dalam jumlah khusus untuk mempercepat tugas Anda:
- Tetapkan tingkat skala ke
CUSTOM
. - Konfigurasi 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 Anda inginkan kemasterConfig
,workerConfig
,parameterServerConfig
, atauevaluatorConfig
, bergantung pada instance mesin virtual (VM) mana yang ingin Anda akselerasi. Anda dapat menggunakan jenis GPU berikut:NVIDIA_TESLA_A100
NVIDIA_TESLA_K80
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 melihat jumlah yang valid untuk setiap jenis GPU, lihat tabel kompatibilitas di bawah.
Anda harus memastikan setiap konfigurasi GPU menyediakan CPU virtual dan memori yang cukup untuk jenis mesin tempat Anda memasangnya. 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 76 GB, Anda harus menambahkan minimal 4 ke setiap pekerjan1-standard-32
untuk mendukung persyaratannya. (2 GPU menyediakan resource yang tidak cukup, dan Anda tidak dapat menentukan 3 GPU.)Tinjau daftar jenis mesin untuk Pelatihan AI Platform dan perbandingan GPU untuk workload komputasi guna menentukan kompatibilitas ini, atau lihat tabel kompatibilitas di bawah.
Perhatikan batasan tambahan berikut terkait resource GPU untuk Pelatihan AI Platform dalam kasus tertentu:
- Konfigurasi dengan 8 GPU NVIDIA Tesla K80 hanya menyediakan memori hingga 208 GB di semua region dan zona.
- 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 tentang dukungan region di bawah ini.
Tabel berikut memberikan referensi cepat tentang jumlah setiap jenis akselerator yang dapat Anda pasang ke setiap jenis mesin Compute Engine:
Jumlah GPU yang valid untuk setiap jenis mesin | ||||||
---|---|---|---|---|---|---|
Machine type | 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 ini adalah contoh pengiriman tugas menggunakan jenis mesin Compute Engine dengan GPU yang terpasang.
Jenis mesin yang menyertakan GPU
Atau, daripada menggunakan acceleratorConfig
, Anda dapat memilih jenis mesin
lama yang menyertakan GPU:
- Tetapkan tingkat skala ke
CUSTOM
. - Konfigurasi pekerja master dan jenis tugas lainnya (pekerja, server parameter, atau evaluator) yang ingin Anda percepat untuk menggunakan salah satu jenis mesin berkemampuan GPU berikut, berdasarkan jumlah GPU dan jenis akselerator yang diperlukan untuk tugas Anda:
standard_gpu
: Satu GPU NVIDIA Tesla K80complex_model_m_gpu
: Empat GPU NVIDIA Tesla K80complex_model_l_gpu
: Delapan GPU NVIDIA Tesla K80standard_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 ini adalah contoh pengiriman tugas dengan jenis mesin
yang mendukung GPU menggunakan perintah gcloud
.
Lihat informasi selengkapnya tentang jenis mesin untuk Pelatihan AI Platform.
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 sepenuhnya memahami region yang tersedia untuk layanan Pelatihan AI Platform, 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 yang menggunakan
GPU NVIDIA Tesla P100. Meskipun semua GPU ini tersedia untuk tugas pelatihan di
us-central1
, tidak ada zona tunggal di region tersebut yang menyediakan ketiga jenis GPU tersebut. Untuk mempelajari lebih lanjut ketersediaan zona GPU, lihat perbandingan GPU untuk workload komputasi.
Mengirimkan 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 merepresentasikan resource Job. 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 serupa seperti 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 K80 GPUs masterType: complex_model_m_gpu # Configure 9 workers, each with 4 K80 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
Selain itu, Anda dapat menentukan detail konfigurasi cluster dengan flag command line, bukan di 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
yang 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 di file konfigurasi
(
config.yaml
) dan sebagai tanda command line, nilai pada command line akan menggantikan nilai dalam file konfigurasi. - Flag
--
yang kosong menandai akhir dari flag khususgcloud
dan awal dariUSER_ARGS
yang ingin diteruskan ke aplikasi Anda. - Tanda khusus untuk Pelatihan AI Platform, seperti
--module-name
,--runtime-version
, dan--job-dir
, harus ditempatkan sebelum tanda--
kosong. Layanan AI Platform Training menafsirkan tanda ini. - Flag
--job-dir
, jika ditentukan, harus ditempatkan sebelum flag--
kosong, karena AI Platform Training menggunakan--job-dir
untuk memvalidasi jalur. - Aplikasi Anda juga harus menangani flag
--job-dir
, jika ditentukan. Meskipun tanda ini ditempatkan sebelum--
kosong,--job-dir
juga diteruskan ke aplikasi Anda sebagai tanda 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 detail selengkapnya tentang opsi pengiriman tugas, lihat panduan untuk memulai tugas pelatihan.
Menyesuaikan kode pelatihan untuk memanfaatkan GPU
Jika Anda menggunakan Keras atau Estimator untuk tugas pelatihan TensorFlow dan ingin berlatih menggunakan satu VM dengan satu GPU, Anda tidak perlu menyesuaikan kode untuk GPU tersebut.
Jika cluster pelatihan Anda berisi beberapa GPU, gunakan tf.distribute.Strategy
API dalam kode pelatihan Anda:
- Untuk pelatihan pada satu VM dengan beberapa GPU, sebaiknya gunakan
MirroredStrategy
, yang sepenuhnya didukung untuk Keras di TensorFlow 2.1 dan yang lebih baru. - Untuk pelatihan tentang 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
GPU tunggal mesin standard_gpu
diidentifikasi sebagai "/gpu:0"
.
Mesin dengan beberapa GPU menggunakan ID yang diawali 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 mesin yang mendukung GPU
Mesin yang mendukung GPU sudah diinstal sebelumnya dengan tensorflow-gpu, yakni paket TensorFlow Python dengan dukungan GPU. Lihat daftar versi runtime untuk mengetahui daftar semua paket yang telah diinstal sebelumnya.
Peristiwa pemeliharaan
VM dengan kemampuan GPU yang menjalankan tugas Pelatihan AI Platform terkadang tunduk pada pemeliharaan host Compute Engine.
VM dikonfigurasi untuk otomatis dimulai ulang setelah peristiwa pemeliharaan tersebut terjadi, tetapi Anda mungkin harus melakukan beberapa pekerjaan tambahan untuk memastikan tugas Anda tahan terhadap penghentian 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 checkpoint ke model_dir
dan mencoba memuat dari checkpoint terbaru, sehingga Anda tidak perlu khawatir tentang peristiwa pemeliharaan pada pekerja GPU Anda.
Jika Anda berlatih dengan Keras, gunakan callback ModelCheckpoint
untuk menyimpan progres pelatihan secara rutin. Jika Anda menggunakan tf.distribute.Strategy
dengan Keras, VM Anda menggunakan checkpoint untuk melakukan pemulihan secara otomatis dari
mulai ulang.
Jika tidak, tambahkan logika ke kode pelatihan Anda untuk memeriksa keberadaan checkpoint terbaru dan memulihkan dari checkpoint jika ada.
Untuk kasus lanjutan, baca Panduan TensorFlow untuk checkpoint.
Langkah selanjutnya
- Baca ringkasan cara kerja pelatihan.
- Pahami batas penggunaan GPU serentak.
- Baca tentang menggunakan GPU dengan TensorFlow.
- Baca perbandingan performa dan biaya GPU yang lebih baru, seperti NVIDIA Tesla T4.