View a markdown version of this page

Komputasi terdistribusi dengan praktik terbaik 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.

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.

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) untuk Pel SageMaker atihan, yang dapat Anda atur baik melalui modul Python khusus di SageMaker AI Python SDK, atau melalui SageMaker API dengan AWS CLI,. AWS SDK untuk Python (Boto3) SageMaker AI menyediakan wadah pelatihan untuk kerangka kerja pembelajaran mesin, termasuk PyTorch TensorFlow, Hugging Face Transformers, dan Apache MX Net. Anda memiliki dua opsi untuk menulis kode pembelajaran mendalam untuk pelatihan terdistribusi.

  • 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.distribute modul 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 AI menunjukkan 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 diinstal sebelumnya, sehingga Anda dapat memparalelkan skrip titik masuk Anda menggunakan mpi4py. https://mpi4py.readthedocs.io/en/stable/ Menggunakan wadah pelatihan terintegrasi MPI adalah pilihan yang bagus saat Anda meluncurkan peluncur pelatihan terdistribusi pihak ketiga atau menulis kode paralel ad-hoc di lingkungan pelatihan yang dikelola SageMaker AI.

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 dan AWS Glue.

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 atau DeepSpeed di SageMaker AI.

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 , dan Apache Airflow yang didukung oleh Amazon Managed Workflow untuk Apache Airflow (MWAA) dan AI Workflow. SageMaker