Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Komputasi terdistribusi dengan praktik terbaik SageMaker AI
Halaman praktik terbaik ini menyajikan berbagai rasa komputasi terdistribusi untuk pekerjaan pembelajaran mesin (ML) secara umum. Istilah komputasi terdistribusi di halaman ini mencakup pelatihan terdistribusi untuk tugas pembelajaran mesin dan komputasi paralel untuk pemrosesan data, pembuatan data, rekayasa fitur, dan pembelajaran penguatan. Di halaman ini, kami membahas tentang tantangan umum dalam komputasi terdistribusi, dan opsi yang tersedia di Pel SageMaker atihan dan Pem SageMaker rosesan. Untuk bahan bacaan tambahan tentang komputasi terdistribusi, lihat Apa itu Komputasi Terdistribusi?
Anda dapat mengonfigurasi tugas ML untuk dijalankan secara terdistribusi di beberapa node (instance), akselerator (GPU NVIDIA, chip AWS Trainium), dan inti vCPU. Dengan menjalankan komputasi terdistribusi, Anda dapat mencapai berbagai tujuan seperti operasi komputasi lebih cepat, menangani kumpulan data besar, atau melatih model ML besar.
Daftar berikut mencakup tantangan umum yang mungkin Anda hadapi saat menjalankan pekerjaan pelatihan ML dalam skala besar.
-
Anda perlu membuat keputusan tentang cara mendistribusikan komputasi tergantung pada tugas ML, pustaka perangkat lunak yang ingin Anda gunakan, dan sumber daya komputasi.
-
Tidak semua tugas ML mudah didistribusikan. Juga, tidak semua pustaka ML mendukung komputasi terdistribusi.
-
Komputasi terdistribusi mungkin tidak selalu menghasilkan peningkatan linier dalam efisiensi komputasi. Secara khusus, Anda perlu mengidentifikasi apakah data I/O dan komunikasi antar-GPU memiliki hambatan atau menyebabkan overhead.
-
Komputasi terdistribusi dapat mengganggu proses numerik dan mengubah akurasi model. Khusus untuk pelatihan jaringan saraf paralel data, ketika Anda mengubah ukuran batch global sambil meningkatkan ke cluster komputasi yang lebih besar, Anda juga perlu menyesuaikan tingkat pembelajaran yang sesuai.
SageMaker AI menyediakan solusi pelatihan terdistribusi untuk meringankan tantangan tersebut untuk berbagai kasus penggunaan. Pilih salah satu opsi berikut yang paling sesuai dengan kasus penggunaan Anda.
Topik
Opsi 1: Gunakan algoritma bawaan SageMaker AI yang mendukung pelatihan terdistribusi
Opsi 2: Jalankan kode ML khusus di lingkungan pelatihan atau pemrosesan yang dikelola SageMaker AI
Opsi 3: Tulis kode pelatihan terdistribusi khusus Anda sendiri
Opsi 4: Luncurkan beberapa pekerjaan secara paralel atau berurutan
Opsi 1: Gunakan algoritma bawaan SageMaker AI yang mendukung pelatihan terdistribusi
SageMaker AI menyediakan algoritma bawaan yang dapat Anda gunakan di luar kotak melalui konsol SageMaker AI atau SageMaker Python SDK. Dengan menggunakan algoritma bawaan, Anda tidak perlu menghabiskan waktu untuk penyesuaian kode, memahami ilmu di balik model, atau menjalankan Docker pada instans Amazon EC2 yang disediakan.
Bagian dari algoritma bawaan SageMaker AI mendukung pelatihan terdistribusi. Untuk memeriksa apakah algoritma pilihan Anda mendukung pelatihan terdistribusi, lihat kolom Paralelizable di tabel Informasi Umum Tentang Built-in Algoritma. Beberapa algoritma mendukung pelatihan terdistribusi multi-instance, sementara algoritma yang dapat disejajarkan lainnya mendukung paralelisasi di beberapa GPU dalam satu contoh, seperti yang ditunjukkan dalam kolom Paralelizable.
Opsi 2: Jalankan kode ML khusus di lingkungan pelatihan atau pemrosesan yang dikelola SageMaker AI
SageMaker Pekerjaan AI dapat membuat instance lingkungan pelatihan terdistribusi untuk kasus penggunaan dan kerangka kerja tertentu. Lingkungan ini bertindak sebagai papan tulis siap pakai, tempat Anda dapat membawa dan menjalankan kode ML Anda sendiri.
Jika kode ML Anda menggunakan kerangka pembelajaran mendalam
Anda dapat meluncurkan pekerjaan pelatihan terdistribusi menggunakan Deep Learning Containers (DLC)
-
Perpustakaan pelatihan SageMaker AI yang didistribusikan
Perpustakaan pelatihan terdistribusi SageMaker AI mengusulkan kode AWS yang dikelola untuk paralelisme data jaringan saraf dan paralelisme model. SageMaker Pelatihan terdistribusi AI juga dilengkapi dengan klien peluncur yang dibangun ke dalam SageMaker Python SDK, dan Anda tidak perlu membuat kode peluncuran paralel. Untuk mempelajari lebih lanjut, lihat pust SageMaker aka paralelisme data SageMaker AI dan perpustakaan paralelisme model AI.
-
Open-source perpustakaan pelatihan terdistribusi
Kerangka kerja open source memiliki mekanisme distribusi mereka sendiri seperti DistributedDataParallelism (DDP) di dalam PyTorch
atau tf.distributemodul di TensorFlow. Anda dapat memilih untuk menjalankan kerangka pelatihan terdistribusi ini dalam wadah SageMaker AI-managed kerangka kerja. Misalnya, kode sampel untuk mel atih MaskRCNN di SageMaker AImenunjukkan cara menggunakan PyTorch DDP dalam wadah PyTorch kerangka SageMaker AI dan Horovod dalam wadah kerangka kerja. SageMaker TensorFlow
SageMaker Kontainer AI ML juga dilengkapi dengan MPI yang sudah
Catatan untuk pelatihan jaringan saraf paralel data pada GPU
-
Skalakan ke multi-GPU dan paralelisme multi-mesin bila sesuai
Kami sering menjalankan pekerjaan pelatihan jaringan saraf pada beberapa instance CPU atau Multiple-GPU. Setiap GPU-based instance biasanya berisi beberapa perangkat GPU. Akibatnya, komputasi GPU terdistribusi dapat terjadi baik dalam satu instance GPU dengan beberapa GPU (pelatihan multi-GPU simpul tunggal), atau di beberapa instans GPU dengan beberapa inti GPU di masing-masing (pelatihan multi-node multi-GPU). Single-instance pelatihan lebih mudah untuk menulis kode dan debug, dan throughput intra-node biasanya lebih cepat daripada GPU-to-GPU throughput antar GPU-to-GPU node. Oleh karena itu, ada baiknya untuk menskalakan paralelisme data secara vertikal terlebih dahulu (gunakan satu instance GPU dengan beberapa GPU) dan memperluas ke beberapa instance GPU jika diperlukan. Ini mungkin tidak berlaku untuk kasus di mana anggaran CPU tinggi (misalnya, beban kerja yang besar untuk pra-pemrosesan data) dan ketika r CPU-to-GPU asio instance multi-GPU terlalu rendah. Dalam semua kasus, Anda perlu bereksperimen dengan kombinasi tipe instance yang berbeda berdasarkan kebutuhan pelatihan ML dan beban kerja Anda sendiri.
-
Pantau kualitas konvergensi
Saat melatih jaringan saraf dengan paralelisme data, meningkatkan jumlah GPU sambil menjaga ukuran batch mini per GPU konstan mengarah pada peningkatan ukuran batch mini global untuk proses penurunan gradien stochastic (MSGD) mini-batch. Ukuran batch mini untuk MSGD diketahui berdampak pada kebisingan penurunan dan konvergensi. Untuk penskalaan yang benar sambil mempertahankan akurasi, Anda perlu menyesuaikan hiperparameter lain seperti tingkat pembelajaran [Goyal et al.
(2017)]. -
Pantau kem I/O acetan
Saat Anda meningkatkan jumlah GPU, throughput untuk penyimpanan membaca dan menulis juga harus meningkat. Pastikan sumber data dan pipeline Anda tidak menjadi hambatan.
-
Ubah skrip pelatihan Anda sesuai kebutuhan
Skrip pelatihan yang ditulis untuk pelatihan GPU tunggal harus dimodifikasi untuk pelatihan multi-node multi-GPU. Di sebagian besar pustaka paralelisme data, modifikasi skrip diperlukan untuk melakukan hal berikut.
-
Tetapkan kumpulan data pelatihan ke setiap GPU.
-
Gunakan pengoptimal yang dapat menangani komputasi gradien dan pembaruan parameter di beberapa GPU.
-
Tetapkan tanggung jawab checkpointing ke host dan GPU tertentu.
-
Jika kode ML Anda melibatkan pemrosesan data tabular
PySpark adalah frontend Python dari Apache Spark, yang merupakan kerangka kerja komputasi terdistribusi sumber terbuka. PySpark telah diadopsi secara luas untuk pemrosesan data tabular terdistribusi untuk beban kerja produksi skala besar. Jika Anda ingin menjalankan kode pemrosesan data tabular, pertimbangkan untuk menggunakan PySpark wadah SageMaker pemrosesan dan menjalankan pekerjaan paralel. Anda juga dapat menjalankan pekerjaan pemrosesan data secara paralel menggunakan API Pel SageMaker atihan dan SageMaker Pemrosesan di Amazon SageMaker Studio Classic, yang terintegrasi dengan Amazon EMR
Opsi 3: Tulis kode pelatihan terdistribusi khusus Anda sendiri
Saat Anda mengirimkan pekerjaan pelatihan atau pemrosesan ke SageMaker AI, API Pel SageMaker atihan dan Pemrosesan SageMaker AI meluncurkan instans komputasi Amazon EC2. Anda dapat menyesuaikan lingkungan pelatihan dan pemrosesan dalam instance dengan menjalankan wadah Docker Anda sendiri atau menginstal pustaka tambahan di wadah terkel AWS ola. Untuk informasi selengkapnya tentang Docker with SageMaker Training, lihat Meng adaptasi wadah Docker Anda sendiri untuk bekerja dengan SageMaker AI dan Membuat wadah dengan algoritma dan model Anda sendiri. Untuk informasi selengkapnya tentang Docker dengan Pemro SageMaker sesan AI, lihat Menggunakan Kode Pemrosesan Anda Sendiri.
Setiap lingkungan pekerjaan SageMaker pelatihan berisi file konfigurasi di/opt/ml/input/config/resourceconfig.json, dan setiap SageMaker lingkungan pekerjaan Pemrosesan berisi file konfigurasi serupa di/opt/ml/config/resourceconfig.json. Kode Anda dapat membaca file ini untuk menemukan hostnames dan membangun komunikasi antar node. Untuk mempelajari selengkapnya, termasuk skema file JSON, lihat Konfigurasi Pelatihan Ter distribusi dan Bagaimana Pemro SageMaker sesan Amazon Mengkonfigurasi W adah Pemrosesan Anda. Anda juga dapat menginstal dan menggunakan pustaka komputasi terdistribusi pihak ketiga seperti Ray
Anda juga dapat menggunakan Pel SageMaker atihan dan Pem SageMaker rosesan untuk menjalankan perhitungan terdistribusi kustom yang tidak memerlukan komunikasi antar pekerja. Dalam literatur komputasi, tugas-tugas tersebut sering digambarkan sebagai paralel yang memalukan atau tidak berbagi apa-apa. Contohnya termasuk pemrosesan paralel file data, model pelatihan secara paralel pada konfigurasi yang berbeda, atau menjalankan inferensi batch pada kumpulan catatan. Anda dapat secara sepele memparalelkan kasus penggunaan berbagi tanpa apa-apa dengan Amazon AI. SageMaker Saat Anda meluncurkan pekerjaan Pel SageMaker atihan atau SageMaker Pemrosesan pada cluster dengan beberapa node, SageMaker AI secara default mereplikasi dan meluncurkan kode pelatihan Anda (dalam Python atau Docker) di semua node. Tugas yang membutuhkan penyebaran acak data input S3DataDistributionType=ShardedByS3Key di beberapa node tersebut dapat difasilitasi dengan mengatur konfigurasi input data InputData API SageMaker AI.
Opsi 4: Luncurkan beberapa pekerjaan secara paralel atau berurutan
Anda juga dapat mendistribusikan alur kerja komputasi ML ke dalam tugas komputasi paralel atau berurutan yang lebih kecil, masing-masing diwakili oleh tugas Pel SageMaker atihan atau Pemro SageMaker sesan sendiri. Membagi tugas menjadi beberapa pekerjaan dapat bermanfaat untuk situasi atau tugas berikut:
-
Bila Anda memiliki saluran data tertentu dan entri metadata (seperti hyperparameter, konfigurasi model, atau jenis instance) untuk setiap sub-tugas.
-
Saat Anda menerapkan langkah-langkah coba lagi di tingkat sub-tugas.
-
Saat Anda memvariasikan konfigurasi sub-tugas selama beban kerja, seperti saat melatih tentang peningkatan ukuran batch.
-
Ketika Anda perlu menjalankan tugas ML yang membutuhkan waktu lebih lama dari waktu pelatihan maksimum yang diizinkan untuk satu pekerjaan pelatihan (maksimum 28 hari).
-
Ketika langkah-langkah yang berbeda dari alur kerja komputasi memerlukan jenis instans yang berbeda.
Untuk kasus spesifik pencarian hyperparameter, gunakan SageMaker AI Automated Model Tuning. SageMaker AI Automated Model Tuning adalah orkestrator pencarian parameter tanpa server yang meluncurkan beberapa pekerjaan pelatihan atas nama Anda, sesuai dengan logika pencarian yang bisa acak, Bayesian, atau. HyperBand
Selain itu, untuk mengatur beberapa pekerjaan pelatihan, Anda juga dapat mempertimbangkan alat orkestrasi alur kerja, seperti Pipelines, AWS Step SageMaker Functions