Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Strategi untuk pelatihan terdistribusi
Pelatihan terdistribusi biasanya dibagi oleh dua pendekatan: data parallel dan model parallel. Data parallel adalah pendekatan yang paling umum untuk pelatihan terdistribusi: Anda memiliki banyak data, menggabungkannya, dan mengirim blok data ke beberapa CPUs atau GPUs (node) untuk diproses oleh jaringan saraf atau algoritma ML. kemudian menggabungkan hasilnya. Jaringan saraf sama pada setiap node. Pendekatan paralel model digunakan dengan model besar yang tidak akan muat dalam memori node dalam satu bagian; itu memecah model dan menempatkan bagian yang berbeda pada node yang berbeda. Dalam situasi ini, Anda perlu mengirim batch data Anda ke setiap node sehingga data diproses pada semua bagian model.
Istilah jaringan dan model sering digunakan secara bergantian: Model besar benar-benar jaringan besar dengan banyak lapisan dan parameter. Pelatihan dengan jaringan besar menghasilkan model yang besar, dan memuat model kembali ke jaringan dengan semua parameter Anda yang telah dilatih sebelumnya dan bobotnya memuat model besar ke dalam memori. Saat Anda memecah model untuk membaginya di seluruh node, Anda juga memecah jaringan yang mendasarinya. Jaringan terdiri dari lapisan, dan untuk membagi jaringan, Anda menempatkan lapisan pada perangkat komputasi yang berbeda.
Perangkap umum dari pemisahan lapisan secara naif di seluruh perangkat adalah pemanfaatan GPU yang parah. Pelatihan secara inheren berurutan dalam lintasan maju dan mundur, dan pada waktu tertentu, hanya satu GPU yang dapat secara aktif menghitung, sementara yang lain menunggu aktivasi yang akan dikirim. Pustaka paralel model modern memecahkan masalah ini dengan menggunakan jadwal eksekusi pipeline untuk meningkatkan pemanfaatan perangkat. Namun, hanya perpustakaan paralel model terdistribusi Amazon SageMaker AI yang menyertakan pemisahan model otomatis. Dua fitur inti perpustakaan, pemisahan model otomatis dan penjadwalan eksekusi pipa, menyederhanakan proses penerapan paralelisme model dengan membuat keputusan otomatis yang mengarah pada pemanfaatan perangkat yang efisien.
Berlatih dengan data parallel dan model parallel
Jika Anda berlatih dengan kumpulan data besar, mulailah dengan pendekatan paralel data. Jika Anda kehabisan memori selama pelatihan, Anda mungkin ingin beralih ke pendekatan paralel model, atau mencoba model hibrida dan paralelisme data. Anda juga dapat mencoba yang berikut ini untuk meningkatkan kinerja dengan data parallel:
-
Ubah hiperparameter model Anda.
-
Kurangi ukuran batch.
-
Terus kurangi ukuran batch hingga pas. Jika Anda mengurangi ukuran batch menjadi 1, dan masih kehabisan memori, maka Anda harus mencoba pelatihan model-paralel.
Coba kompresi gradien (FP16, INT8):
-
Pada perangkat keras TensorCore yang dilengkapi NVIDIA, menggunakan pelatihan presisi campuran
menciptakan pengurangan kecepatan dan konsumsi memori. -
SageMaker Pustaka paralelisme data terdistribusi AI mendukung Automatic Mixed Precision (AMP) di luar kotak. Tidak diperlukan tindakan tambahan untuk mengaktifkan AMP selain modifikasi tingkat kerangka kerja pada skrip pelatihan Anda. Jika gradien masuk FP16, perpustakaan paralelisme data SageMaker AI menjalankan operasinya
AllReduce
di. FP16 Untuk informasi selengkapnya tentang penerapan AMP APIs ke skrip pelatihan Anda, lihat sumber daya berikut:-
Kerangka kerja - PyTorch dalam dokumentasi
NVIDIA Deep Learning Performance -
Kerangka kerja - TensorFlow dalam dokumentasi
NVIDIA Deep Learning Performance -
Presisi Campuran Otomatis untuk Pembelajaran Mendalam
di Dokumen Pengembang NVIDIA -
Memperkenalkan presisi campuran PyTorch otomatis asli untuk pelatihan lebih cepat pada NVIDIA GPUs
di PyTorch Blog -
TensorFlow presisi campuran APIs
dalam TensorFlowdokumentasi
-
Coba kurangi ukuran input:
-
Kurangi panjang urutan NLP jika Anda menambah tautan urutan, perlu menyesuaikan ukuran batch ke bawah, atau menyesuaikan bagian GPUs atas untuk menyebarkan batch.
-
Kurangi resolusi gambar.
Periksa apakah Anda menggunakan normalisasi batch, karena ini dapat memengaruhi konvergensi. Saat Anda menggunakan pelatihan terdistribusi, batch Anda dibagi GPUs dan efek dari ukuran batch yang jauh lebih rendah bisa menjadi tingkat kesalahan yang lebih tinggi sehingga mengganggu model dari konvergen. Misalnya, jika Anda membuat prototipe jaringan pada satu GPU dengan ukuran batch 64, kemudian ditingkatkan hingga menggunakan empat p3dn.24xlarge, Anda sekarang memiliki 32 GPUs dan ukuran batch per GPU Anda turun dari 64 menjadi 2. Ini kemungkinan akan mematahkan konvergensi yang Anda lihat dengan satu simpul.
Mulailah dengan pelatihan model-paralel ketika:
-
Model Anda tidak muat pada satu perangkat.
-
Karena ukuran model Anda, Anda menghadapi keterbatasan dalam memilih ukuran batch yang lebih besar, seperti jika bobot model Anda menghabiskan sebagian besar memori GPU Anda dan Anda terpaksa memilih ukuran batch yang lebih kecil dan kurang optimal.
Untuk mempelajari lebih lanjut tentang pustaka terdistribusi SageMaker AI, lihat berikut ini: