Pelatihan terdistribusi dengan Azure Machine Learning

Dalam artikel ini, Anda belajar tentang pelatihan terdistribusi dan bagaimana Azure Machine Learning mendukungnya untuk model pembelajaran mendalam.

Dalam pelatihan terdistribusi, beban kerja untuk melatih model dibagi dan dibagikan di antara beberapa prosesor mini, yang disebut simpul pekerja. Simpul pekerja ini bekerja secara paralel untuk mempercepat pelatihan model. Pelatihan terdistribusi dapat digunakan untuk model pembelajaran mesin tradisional, tetapi lebih cocok untuk tugas komputasi dan intensif waktu, seperti pembelajaran mendalam untuk melatih jaringan saraf mendalam.

Pembelajaran mendalam dan pelatihan terdistribusi

Ada dua jenis utama pelatihan terdistribusi: paralelisme data dan paralelisme model. Untuk pelatihan terdistribusi tentang model pembelajaran mendalam, Azure Pembelajaran Mesin SDK di Python mendukung integrasi dengan PyTorch dan TensorFlow. Keduanya adalah kerangka kerja populer yang menggunakan paralelisme data untuk pelatihan terdistribusi, dan dapat menggunakan Horovod untuk mengoptimalkan kecepatan komputasi.

Untuk model pembelajaran mesin yang tidak memerlukan pelatihan terdistribusi, lihat Melatih model dengan Azure Pembelajaran Mesin untuk berbagai cara melatih model menggunakan Python SDK.

Paralelisme data

Paralelisme data adalah yang paling mudah diterapkan dari dua pendekatan pelatihan yang didistribusikan, dan cukup untuk sebagian besar kasus penggunaan.

Dalam pendekatan ini, data dibagi menjadi partisi, di mana jumlah partisi sama dengan jumlah total simpul yang tersedia, dalam kluster komputasi atau komputasi tanpa server. Model ini disalin di setiap simpul pekerja ini, dan setiap simpul beroperasi pada subset datanya sendiri. Perlu diingat bahwa setiap simpul harus memiliki kapasitas untuk mendukung model yang sedang dilatih, yaitu seluruh model harus sesuai pada setiap simpul.

Diagram berikut menunjukkan pendekatan ini.

Diagram parrallelisme data memperlihatkan model yang disalin ke simpul pekerja.

Setiap simpul secara independen menghitung kesalahan antara prediksinya untuk sampel pelatihan dan output berlabel. Pada gilirannya, setiap simpul memperbarui modelnya berdasarkan kesalahan dan harus mengkomunikasikan semua perubahannya ke simpul lain untuk memperbarui model yang sesuai. Simpul pekerja perlu menyinkronkan parameter model, atau gradien, di akhir komputasi batch untuk memastikan mereka melatih konsis mode tenda l.

Paralelisme model

Dalam paralelisme model, juga dikenal sebagai paralelisme jaringan, model disegmentasi menjadi berbagai bagian yang dapat berjalan secara bersamaan dalam simpul yang berbeda, dan masing-masing berjalan pada data yang sama. Skalabilitas metode ini tergantung pada tingkat paralelisasi tugas algoritma, dan lebih kompleks untuk diterapkan daripada paralelisme data.

Dalam paralelisme model, simpul pekerja hanya perlu menyinkronkan parameter bersama, biasanya sekali untuk setiap langkah maju atau propagasi mundur. Selain itu, model yang lebih besar tidak menjadi perhatian karena setiap simpul beroperasi pada subbagian model pada data pelatihan yang sama.