Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pelatihan terdistribusi di Amazon SageMaker
SageMaker menyediakan perpustakaan pelatihan terdistribusi dan mendukung berbagai opsi pelatihan terdistribusi untuk tugas pembelajaran mendalam seperti visi komputer (CV) dan pemrosesan bahasa alami (NLP). Dengan perpustakaan pelatihan SageMaker terdistribusi, Anda dapat menjalankan data kustom paralel yang sangat terukur dan hemat biaya serta memodelkan pekerjaan pelatihan pembelajaran mendalam paralel. Anda juga dapat menggunakan kerangka kerja dan paket pelatihan terdistribusi lainnya seperti PyTorch DistributedDataParallel (DDP),torchrun
, MPI (mpirun
), dan server parameter. Bagian berikut memberikan informasi tentang konsep pelatihan terdistribusi mendasar. Sepanjang dokumentasi, instruksi dan contoh berfokus pada cara mengatur opsi pelatihan terdistribusi untuk tugas pembelajaran mendalam menggunakan SageMaker PythonSDK.
Tip
Untuk mempelajari praktik terbaik untuk komputasi terdistribusi pelatihan pembelajaran mesin (ML) dan pekerjaan pemrosesan secara umum, lihatKomputasi terdistribusi dengan praktik SageMaker terbaik.
Konsep pelatihan terdistribusi
SageMakerPerpustakaan pelatihan terdistribusi menggunakan istilah dan fitur pelatihan terdistribusi berikut.
Dataset dan Batch
-
Dataset Pelatihan: Semua data yang Anda gunakan untuk melatih model.
-
Ukuran batch global: Jumlah record yang dipilih dari dataset pelatihan di setiap iterasi untuk dikirim ke GPUs dalam cluster. Ini adalah jumlah catatan di mana gradien dihitung pada setiap iterasi. Jika paralelisme data digunakan, itu sama dengan jumlah total replika model dikalikan dengan ukuran batch per replika:.
global batch size = (the number of model replicas) * (per-replica batch size)
Satu batch ukuran batch global sering disebut sebagai mini-batch dalam literatur pembelajaran mesin. -
Ukuran batch per replika: Ketika paralelisme data digunakan, ini adalah jumlah catatan yang dikirim ke setiap replika model. Setiap replika model melakukan pass maju dan mundur dengan batch ini untuk menghitung pembaruan bobot. Pembaruan bobot yang dihasilkan disinkronkan (dirata-ratakan) di semua replika sebelum kumpulan batch per replika berikutnya diproses.
-
Micro-batch: Subset dari mini-batch atau, jika model hibrida dan paralelisme data digunakan, itu adalah subset dari batch berukuran per replika. Saat Anda menggunakan SageMaker pustaka paralelisme model terdistribusi, setiap batch mikro dimasukkan ke dalam pipeline pelatihan one-by-one dan mengikuti jadwal eksekusi yang ditentukan oleh runtime pustaka.
Pelatihan
-
Epoch: Satu siklus pelatihan melalui seluruh kumpulan data. Adalah umum untuk memiliki beberapa iterasi per zaman. Jumlah epoch yang Anda gunakan dalam pelatihan unik pada model dan kasus penggunaan Anda.
-
Iterasi: Satu pass maju dan mundur dilakukan menggunakan batch data pelatihan berukuran batch global (batch mini). Jumlah iterasi yang dilakukan selama pelatihan ditentukan oleh ukuran batch global dan jumlah zaman yang digunakan untuk pelatihan. Misalnya, jika kumpulan data menyertakan 5.000 sampel, dan Anda menggunakan ukuran batch global 500, dibutuhkan 10 iterasi untuk menyelesaikan satu epoch.
-
Tingkat pembelajaran: Variabel yang mempengaruhi jumlah bobot diubah sebagai respons terhadap kesalahan model yang dihitung. Tingkat pembelajaran memainkan peran penting dalam kemampuan model untuk bertemu serta kecepatan dan optimalitas konvergensi.
Contoh dan GPUs
-
Instance: Instance komputasi pembelajaran AWS mesin
. Ini juga disebut sebagai node. -
Ukuran klaster: Saat menggunakan SageMaker pustaka pelatihan terdistribusi, ini adalah jumlah instance yang dikalikan dengan jumlah GPUs di setiap instance. Misalnya, jika Anda menggunakan dua instance ml.p3.8xlarge dalam pekerjaan pelatihan, yang GPUs masing-masing memiliki 4, ukuran klaster adalah 8. Sementara peningkatan ukuran cluster dapat menyebabkan waktu pelatihan yang lebih cepat, komunikasi antar instance harus dioptimalkan; Jika tidak, komunikasi antar node dapat menambah overhead dan menyebabkan waktu pelatihan lebih lambat. Pustaka pelatihan SageMaker terdistribusi dirancang untuk mengoptimalkan komunikasi antara instans komputasi Amazon EC2 ML, yang mengarah ke pemanfaatan perangkat yang lebih tinggi dan waktu pelatihan yang lebih cepat.
Solusi Pelatihan Terdistribusi
-
Paralelisme data: Strategi dalam pelatihan terdistribusi di mana kumpulan data pelatihan dibagi menjadi beberapa GPUs dalam klaster komputasi, yang terdiri dari beberapa Instans Amazon ML. EC2 Masing-masing GPU berisi replika model, menerima batch data pelatihan yang berbeda, melakukan pass maju dan mundur, dan berbagi pembaruan bobot dengan node lain untuk sinkronisasi sebelum pindah ke batch berikutnya dan akhirnya zaman lain.
-
Paralelisme model: Strategi dalam pelatihan terdistribusi di mana model dipartisi GPUs di beberapa klaster komputasi, yang terdiri dari beberapa Instans Amazon ML. EC2 Modelnya mungkin rumit dan memiliki sejumlah besar lapisan dan bobot tersembunyi, sehingga tidak dapat masuk ke dalam memori satu instance. Masing-masing GPU membawa subset dari model, di mana aliran data dan transformasi dibagikan dan dikompilasi. Efisiensi paralelisme model, dalam hal GPU pemanfaatan dan waktu pelatihan, sangat tergantung pada bagaimana model dipartisi dan jadwal eksekusi yang digunakan untuk melakukan operan maju dan mundur.
-
Jadwal Eksekusi Pipeline (Pipelining): Jadwal eksekusi pipeline menentukan urutan perhitungan (batch mikro) dibuat dan data diproses di seluruh perangkat selama pelatihan model. Pipelining adalah teknik untuk mencapai paralelisasi sejati dalam paralelisme model dan mengatasi kehilangan kinerja karena komputasi sekuensial dengan memiliki komputasi secara bersamaan pada sampel data yang berbeda. GPUs Untuk mempelajari selengkapnya, lihat Jadwal Eksekusi Pipeline.
Konsep lanjutan
Praktisi Machine Learning (ML) biasanya menghadapi dua tantangan penskalaan saat model pelatihan: skala ukuran model dan penskalaan data pelatihan. Meskipun ukuran dan kompleksitas model dapat menghasilkan akurasi yang lebih baik, ada batasan untuk ukuran model yang dapat Anda masukkan ke dalam satu CPU atauGPU. Selain itu, ukuran model penskalaan dapat menghasilkan lebih banyak perhitungan dan waktu pelatihan yang lebih lama.
Tidak semua model menangani penskalaan data pelatihan dengan sama baiknya karena mereka perlu menelan semua data pelatihan dalam memori untuk pelatihan. Mereka hanya menskalakan secara vertikal, dan ke jenis instance yang lebih besar dan lebih besar. Dalam kebanyakan kasus, penskalaan data pelatihan menghasilkan waktu pelatihan yang lebih lama.
Deep Learning (DL) adalah keluarga spesifik algoritma ML yang terdiri dari beberapa lapisan jaringan saraf tiruan. Metode pelatihan yang paling umum adalah dengan mini-batch Stochastic Gradient Descent (). SGD Dalam mini-batchSGD, model dilatih dengan melakukan perubahan iteratif kecil dari koefisiennya ke arah yang mengurangi kesalahannya. Iterasi tersebut dilakukan pada subsampel berukuran sama dari kumpulan data pelatihan yang disebut mini-batch. Untuk setiap mini-batch, model dijalankan di setiap catatan mini-batch, kesalahannya diukur dan gradien kesalahan diperkirakan. Kemudian gradien rata-rata diukur di semua catatan mini-batch dan memberikan arah pembaruan untuk setiap koefisien model. Satu lintasan penuh atas kumpulan data pelatihan disebut zaman. Pelatihan model biasanya terdiri dari puluhan hingga ratusan zaman. Mini-batch SGD memiliki beberapa manfaat: Pertama, desain iteratifnya membuat waktu pelatihan secara teoritis linier dari ukuran dataset. Kedua, dalam mini-batch tertentu setiap rekaman diproses secara individual oleh model tanpa perlu komunikasi antar-rekaman selain rata-rata gradien akhir. Pemrosesan batch mini akibatnya sangat cocok untuk paralelisasi dan distribusi.
SGDPelatihan paralelisasi dengan mendistribusikan catatan mini-batch melalui perangkat komputasi yang berbeda disebut pelatihan terdistribusi paralel data, dan merupakan paradigma distribusi DL yang paling umum digunakan. Pelatihan paralel data adalah strategi distribusi yang relevan untuk menskalakan ukuran batch mini dan memproses setiap batch mini lebih cepat. Namun, pelatihan paralel data hadir dengan kompleksitas ekstra karena harus menghitung rata-rata gradien batch mini dengan gradien yang berasal dari semua pekerja dan mengkomunikasikannya ke semua pekerja, sebuah langkah yang disebut allreduce yang dapat mewakili overhead yang berkembang, karena cluster pelatihan diskalakan, dan itu juga dapat secara drastis menghukum waktu pelatihan jika diterapkan atau diimplementasikan secara tidak benar pada pengurangan perangkat keras yang tidak tepat.
Data parallel SGD masih mengharuskan pengembang untuk dapat menyesuaikan setidaknya model dan satu catatan dalam perangkat komputasi, seperti satu CPU atauGPU. Saat melatih model yang sangat besar seperti transformator besar di Natural Language Processing (NLP), atau model segmentasi pada gambar resolusi tinggi, mungkin ada situasi di mana hal ini tidak layak. Cara alternatif untuk memecah beban kerja adalah dengan mempartisi model melalui beberapa perangkat komputasi, sebuah pendekatan yang disebut pelatihan terdistribusi model-paralel.