View a markdown version of this page

Kiat konfigurasi untuk perpustakaan paralelisme data terdistribusi 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.

Kiat konfigurasi untuk perpustakaan paralelisme data terdistribusi SageMaker AI

Tinjau tips berikut sebelum menggunakan pustaka paralelisme data terdistribusi SageMaker AI (SMDDP). Daftar ini mencakup tips yang berlaku di seluruh kerangka kerja.

Prapemrosesan data

Jika Anda memproses data selama pelatihan menggunakan pustaka eksternal yang menggunakan CPU, Anda mungkin mengalami hambatan CPU karena data terdistribusi SageMaker AI secara paralel menggunakan CPU untuk operasi. AllReduce Anda mungkin dapat meningkatkan waktu pelatihan dengan memindahkan langkah-langkah prapemrosesan ke pustaka yang menggunakan GPU atau dengan menyelesaikan semua prapemrosesan sebelum pelatihan.

Node tunggal versus beberapa

Kami menyarankan Anda menggunakan pustaka ini dengan beberapa node. Pustaka dapat digunakan dengan pengaturan host tunggal, multi-perangkat (misalnya, satu instance komputasi ML dengan beberapa GPU); namun, ketika Anda menggunakan dua atau lebih node, AllReduce operasi pustaka memberi Anda peningkatan kinerja yang signifikan. Juga, pada satu host, NVLink sudah berkontribusi pada efisiensi dalam nodeAllReduce.

Efisiensi penskalaan debug dengan Debugger

Anda dapat menggunakan Amazon SageMaker Debugger untuk memantau dan memvisualisasikan pemanfaatan CPU dan GPU serta metrik lain yang menarik selama pelatihan. Anda dapat menggunakan aturan bawaan Debugger untuk memantau masalah kinerja komputasi, sepertiCPUBottleneck,LoadBalancing, danLowGPUUtilization. Anda dapat menentukan aturan ini dengan konfigurasi Debugger saat menentukan Amazon SageMaker Python SDK ModelTrainer. Jika Anda menggunakan AWS CLI dan AWS SDK untuk Python (Boto3) untuk pelatihan tentang SageMaker AI, Anda dapat mengaktifkan Debugger seperti yang ditunjukkan dalam Konfigurasi SageMaker Debugger Menggunakan Amazon SageMaker API.

Untuk melihat contoh menggunakan Debugger dalam pekerjaan SageMaker pelatihan, Anda dapat mereferensikan salah satu contoh buku catatan di GitHub repositori Contoh SageMaker Notebook. Untuk mempelajari selengkapnya tentang Debugger, lihat Amazon SageMaker Debugger.

Ukuran batch

Dalam pelatihan terdistribusi, karena lebih banyak node ditambahkan, ukuran batch harus meningkat secara proporsional. Untuk meningkatkan kecepatan konvergensi saat Anda menambahkan lebih banyak node ke pekerjaan pelatihan Anda dan meningkatkan ukuran batch global, tingkatkan tingkat pembelajaran.

Salah satu cara untuk mencapai hal ini adalah dengan menggunakan pemanasan tingkat pembelajaran bertahap di mana tingkat pembelajaran dinaikkan dari nilai kecil ke nilai besar saat pekerjaan pelatihan berlangsung. Jalan ini menghindari peningkatan tingkat pembelajaran yang tiba-tiba, memungkinkan konvergensi yang sehat pada awal pelatihan. Misalnya, Anda dapat menggunakan Aturan Penskalaan Linear di mana setiap kali ukuran batch mini dikalikan dengan k, tingkat pembelajaran juga dikalikan dengan k. Untuk mempelajari lebih lanjut tentang teknik ini, lihat makalah penelitian, A kurat, Besar Minibatch SGD: Pelatihan ImageNet dalam 1 Jam, Bagian 2 dan 3.

Opsi MPI khusus

Pustaka paralel data terdistribusi SageMaker AI menggunakan Message Passing Interface (MPI), standar populer untuk mengelola komunikasi antar node dalam cluster berkinerja tinggi, dan menggunakan pustaka NCCL NVIDIA untuk GPU-level komunikasi. Saat Anda menggunakan pustaka paralel data dengan TensorFlow atau PytorchModelTrainer, wadah masing-masing mengatur lingkungan MPI dan menjalankan mpirun perintah untuk memulai pekerjaan pada node cluster.

Anda dapat mengatur operasi MPI kustom menggunakan custom_mpi_options parameter diModelTrainer. Setiap mpirun bendera yang dilewatkan di bidang ini ditambahkan ke mpirun perintah dan dijalankan oleh SageMaker AI untuk pelatihan. Misalnya, Anda dapat menentukan distribution parameter ModelTrainer menggunakan berikut untuk menggunakan NCCL_DEBUG variabel untuk mencetak versi NCCL pada awal program:

distribution = {'smdistributed':{'dataparallel':{'enabled': True, "custom_mpi_options": "-verbose -x NCCL_DEBUG=VERSION"}}}

Gunakan Amazon FSx dan siapkan kapasitas penyimpanan dan throughput yang optimal

Saat melatih model pada beberapa node dengan paralelisme data terdistribusi, sangat disarankan untuk menggunakan FSx untuk Lustre. Amazon FSx adalah layanan penyimpanan yang dapat diskalakan dan berkinerja tinggi yang mendukung penyimpanan file bersama dengan throughput yang lebih cepat. Menggunakan penyimpanan Amazon FSx dalam skala besar, Anda dapat mencapai kecepatan pemuatan data yang lebih cepat di seluruh node komputasi.

Biasanya, dengan paralelisme data terdistribusi, Anda akan mengharapkan bahwa total throughput pelatihan berskala hampir linier dengan jumlah GPU. Namun, jika Anda menggunakan penyimpanan Amazon FSx yang kurang optimal, kinerja pelatihan mungkin melambat karena throughput Amazon FSx yang rendah.

Misalnya, jika Anda menggunakan tipe penerapan SCRATCH_2 dari sistem file Amazon FSx dengan kapasitas penyimpanan minimum 1,2 TiB, kapasitas throughput adalah 240. I/O MB/s Penyimpanan Amazon FSx bekerja sedemikian rupa sehingga Anda dapat menetapkan perangkat penyimpanan fisik, dan semakin banyak perangkat yang ditetapkan, semakin besar throughput yang Anda dapatkan. Kenaikan penyimpanan terkecil untuk tipe SRATCH_2 adalah 1,2 TiB, dan gain throughput yang sesuai adalah 240. MB/s

Asumsikan bahwa Anda memiliki model untuk dilatih pada cluster 4-node di atas kumpulan data 100 GB. Dengan ukuran batch tertentu yang dioptimalkan untuk cluster, asumsikan bahwa model dapat menyelesaikan satu zaman dalam waktu sekitar 30 detik. Dalam hal ini, I/O kecepatan minimum yang diperlukan adalah sekitar 3 GB/s (100 GB/30 s). Ini tampaknya merupakan persyaratan throughput yang jauh lebih tinggi daripada 240 MB/s. Dengan kapasitas Amazon FSx yang terbatas, penskalaan pekerjaan pelatihan terdistribusi Anda hingga cluster yang lebih besar dapat memperburuk masalah kem I/O acetan; throughput pelatihan model mungkin meningkat di zaman selanjutnya ketika cache menumpuk, tetapi throughput Amazon FSx masih bisa menjadi hambatan.

Untuk mengatasi masalah ham I/O batan seperti itu, Anda harus meningkatkan ukuran penyimpanan Amazon FSx untuk mendapatkan kapasitas throughput yang lebih tinggi. Biasanya, untuk menemukan I/O throughput yang optimal, Anda dapat bereksperimen dengan kapasitas throughput Amazon FSx yang berbeda, menetapkan throughput yang sama atau sedikit lebih rendah dari perkiraan Anda, sampai Anda menemukan bahwa itu cukup untuk menyelesaikan masalah I/O bottleneck. Dalam kasus contoh yang disebutkan di atas, penyimpanan Amazon FSx dengan GB/s throughput 2,4 dan cache RAM 67 GB akan cukup. Jika sistem file memiliki throughput yang optimal, throughput pelatihan model harus mencapai maksimum baik segera atau setelah zaman pertama karena cache telah menumpuk.

Untuk mempelajari selengkapnya tentang cara meningkatkan jenis penyimpanan dan penyebaran Amazon FSx, lihat halaman berikut dalam dokumentasi Amazon FSx for Lustre: