View a markdown version of this page

Pelatihan terdistribusi di Amazon SageMaker AI - Amazon SageMaker AI

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 AI

SageMaker AI 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 terdistribusi SageMaker AI, Anda dapat menjalankan data kustom yang sangat skalabel dan hemat biaya secara paralel dan 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 fokus pada cara mengatur opsi pelatihan terdistribusi untuk tugas pembelajaran mendalam menggunakan SageMaker Python SDK.

Tip

Untuk mempelajari praktik terbaik untuk komputasi terdistribusi pelatihan pembelajaran mesin (ML) dan pekerjaan pemrosesan secara umum, lihatKomputasi terdistribusi dengan praktik terbaik SageMaker AI.

Konsep pelatihan terdistribusi

SageMaker Perpustakaan pelatihan terdistribusi AI menggunakan istilah dan fitur pelatihan terdistribusi berikut.

Kumpulan Data dan Batch

  • Dataset Pelatihan: Semua data yang Anda gunakan untuk melatih model.

  • Ukuran batch global: Jumlah catatan yang dipilih dari kumpulan data pelatihan di setiap iterasi untuk dikirim ke GPU di 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 batch mini dalam literatur pembelajaran mesin.

  • Per-replica ukuran batch: Ketika paralelisme data digunakan, ini adalah jumlah catatan yang dikirim ke setiap replika model. Setiap replika model melakukan lintasan maju dan mundur dengan batch ini untuk menghitung pembaruan berat. Pembaruan berat yang dihasilkan disinkronkan (dirata-ratakan) di semua replika sebelum kumpulan batch per-replika berikutnya diproses.

  • Micro-batch: Subset dari batch mini atau, jika model hibrida dan paralelisme data digunakan, itu adalah subset dari batch berukuran per-replika. Saat Anda menggunakan pust SageMaker aka paralelisme model terdistribusi AI, setiap batch mikro dimasukkan ke dalam pipeline pelatihan satu per satu dan mengikuti jadwal eksekusi yang ditentukan oleh runtime pustaka.

Pelatihan

  • Epoch: Satu siklus pelatihan melalui seluruh dataset. Adalah umum untuk memiliki beberapa iterasi per zaman. Jumlah zaman yang Anda gunakan dalam pelatihan unik pada model dan kasus penggunaan Anda.

  • Iterasi: Satu pass maju dan mundur dilakukan menggunakan batch berukuran batch global (batch mini) data pelatihan. Jumlah iterasi yang dilakukan selama pelatihan ditentukan oleh ukuran batch global dan jumlah zaman yang digunakan untuk pelatihan. Misalnya, jika dataset mencakup 5.000 sampel, dan Anda menggunakan ukuran batch global 500, dibutuhkan 10 iterasi untuk menyelesaikan satu zaman.

  • Tingkat pembelajaran: Variabel yang mempengaruhi jumlah perubahan bobot sebagai respons terhadap kesalahan model yang dihitung. Tingkat pembelajaran memainkan peran penting dalam kemampuan model untuk bertemu serta kecepatan dan optimalitas konvergensi.

Instans dan GPU

  • Instans : Instance komputasi pembelajaran AWS mesin. Ini juga disebut sebagai node.

  • Ukuran cluster: Saat menggunakan SageMaker pustaka pelatihan terdistribusi AI, ini adalah jumlah instance dikalikan dengan jumlah GPU di setiap instance. Misalnya, jika Anda menggunakan dua instance ml.p3.8xlarge dalam pekerjaan pelatihan, yang masing-masing memiliki 4 GPU, ukuran cluster adalah 8. Meskipun peningkatan ukuran cluster dapat menyebabkan waktu pelatihan yang lebih cepat, komunikasi antar instans harus dioptimalkan; Jika tidak, komunikasi antar node dapat menambah overhead dan menyebabkan waktu pelatihan yang lebih lambat. Pustaka pelatihan terdistribusi SageMaker AI 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 di beberapa GPU dalam cluster komputasi, yang terdiri dari beberapa Instans ML Amazon EC2. Setiap GPU berisi replika model, menerima kum pulan data pelatihan yang berbeda, melakukan pass maju dan mundur, dan berbagi pembaruan bobot dengan node lain untuk sinkronisasi sebelum beralih ke batch berikutnya dan akhirnya zaman lain.

  • Paralelisme model: Strategi dalam pelatihan terdistribusi di mana model dipartisi di beberapa GPU dalam cluster komputasi, yang terdiri dari beberapa Instans ML Amazon EC2. Model mungkin kompleks dan memiliki sejumlah besar lapisan dan bobot tersembunyi, sehingga tidak dapat masuk ke dalam memori satu instance. Setiap GPU membawa subset model, di mana data mengalir dan transformasi dibagikan dan dikompilasi. Efisiensi paralelisme model, dalam hal pemanfaatan GPU dan waktu pelatihan, sangat tergantung pada bagaimana model dipartisi dan jadwal eksekusi yang digunakan untuk melakukan lintasan maju dan mundur.

  • Jadwal Eksekusi Pipeline (Pipelining): Jadwal eksekusi pipeline menentukan urutan di mana 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 perhitungan sekuensial dengan membuat GPU menghitung secara bersamaan pada sampel data yang berbeda. Untuk mempelajari selengkapnya, lihat Jadwal Ek sekusi Pipeline.

Konsep lanjutan

Praktisi Machine Learning (ML) biasanya menghadapi dua tantangan penskalaan saat melatih model: penskalaan ukuran model dan penskalaan data pelatihan. Sementara ukuran dan kompleksitas model dapat menghasilkan akurasi yang lebih baik, ada batasan ukuran model yang dapat Anda masukkan ke dalam satu CPU atau GPU. 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 buatan. Metode pelatihan yang paling umum adalah dengan mini-batch Stochastic Gradient Descent (SGD). Dalam mini-batch SGD, 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 batch mini. Untuk setiap batch mini, model dijalankan di setiap catatan batch mini, kesalahannya diukur dan gradien kesalahan diperkirakan. Kemudian gradien rata-rata diukur di semua catatan batch mini dan memberikan arah pembaruan untuk setiap koefisien model. Satu kelulusan penuh dari 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 batch mini tertentu setiap catatan 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. 

Paralelisasi pelatihan SGD dengan mendistribusikan catatan batch mini 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 kepada semua pekerja, 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 diterapkan secara tidak benar melalui pengurangan perangkat keras yang tidak tepat. 

Data paralel SGD masih mengharuskan pengembang untuk dapat menyesuaikan setidaknya model dan satu catatan dalam perangkat komputasi, seperti CPU tunggal atau GPU. Saat melatih model yang sangat besar seperti transformator besar dalam Pemrosesan Bahasa Alami (NLP), atau model segmentasi di atas gambar resolusi tinggi, mungkin ada situasi di mana ini tidak layak. Cara alternatif untuk memecah beban kerja adalah dengan mempartisi model di beberapa perangkat komputasi, pendekatan yang disebut pelatihan ter distribusi model-paralel.