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 melakukan pra-proses data selama pelatihan menggunakan pustaka eksternal yang memanfaatkannyaCPU, Anda mungkin mengalami CPU kemacetan karena AI SageMaker distributed data parallel menggunakan for operations. CPU AllReduce Anda mungkin dapat meningkatkan waktu pelatihan dengan memindahkan langkah-langkah pra-pemrosesan ke perpustakaan yang menggunakan GPUs atau dengan menyelesaikan semua pra-pemrosesan sebelum pelatihan.

Tunggal versus beberapa node

Kami menyarankan Anda menggunakan pustaka ini dengan beberapa node. Pustaka dapat digunakan dengan satu host, penyiapan multi-perangkat (misalnya, satu instance komputasi ML dengan beberapaGPUs); Namun, ketika Anda menggunakan dua atau lebih node, AllReduce operasi perpustakaan memberi Anda peningkatan kinerja yang signifikan. Juga, pada satu host, NVLink sudah berkontribusi pada AllReduce efisiensi in-node.

Efisiensi penskalaan debug dengan Debugger

Anda dapat menggunakan Amazon SageMaker Debugger untuk memantau dan memvisualisasikan serta GPU pemanfaatan CPU serta metrik minat lainnya selama pelatihan. Anda dapat menggunakan aturan bawaan Debugger untuk memantau masalah kinerja komputasi, sepertiCPUBottleneck,, dan. LoadBalancing LowGPUUtilization Anda dapat menentukan aturan ini dengan konfigurasi Debugger saat menentukan estimator Amazon Python SageMaker . SDK Jika Anda menggunakan AWS CLI dan AWS SDK for Python (Boto3) untuk pelatihan tentang SageMaker AI, Anda dapat mengaktifkan Debugger seperti yang ditunjukkan pada 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 repositori Contoh SageMaker GitHub Notebook. Untuk mempelajari lebih lanjut 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 ditingkatkan dari nilai kecil ke nilai besar saat pekerjaan pelatihan berlangsung. Jalan ini menghindari peningkatan kecepatan belajar yang tiba-tiba, memungkinkan konvergensi yang sehat pada awal pelatihan. Misalnya, Anda dapat menggunakan Aturan Penskalaan Linear di mana setiap kali ukuran mini-batch dikalikan dengan k, tingkat pembelajaran juga dikalikan dengan k. Untuk mempelajari lebih lanjut tentang teknik ini, lihat paper penelitian, Accurate, Large MinibatchSGD: Training ImageNet in 1 Hour, Section 2 dan 3.

MPIOpsi kustom

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

Anda dapat mengatur MPI operasi kustom menggunakan custom_mpi_options parameter diEstimator. mpirunBendera apa pun yang diteruskan di bidang ini ditambahkan ke mpirun perintah dan dijalankan oleh SageMaker AI untuk pelatihan. Misalnya, Anda dapat menentukan distribution parameter dari Estimator menggunakan berikut ini untuk menggunakan NCCL_DEBUGvariabel untuk mencetak NCCL versi di 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 digunakan FSxuntuk Lustre. Amazon FSx adalah layanan penyimpanan yang dapat diskalakan dan berkinerja tinggi yang mendukung penyimpanan file bersama dengan throughput yang lebih cepat. Menggunakan FSx penyimpanan Amazon 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 mendekati linier dengan jumlah. GPUs Namun, jika Anda menggunakan penyimpanan FSx Amazon yang kurang optimal, kinerja pelatihan mungkin melambat karena throughput Amazon yang rendah. FSx

Misalnya, jika Anda menggunakan tipe penyebaran SCRATCH_2 sistem FSx file Amazon dengan kapasitas penyimpanan minimum 1,2 TiB, kapasitas throughput I/O adalah 240. MB/s. Amazon FSx storage works in a way that you can assign physical storage devices, and the more devices assigned, the larger throughput you get. The smallest storage increment for the SRATCH_2 type is 1.2 TiB, and the corresponding throughput gain is 240 MB/s

Asumsikan bahwa Anda memiliki model untuk dilatih pada cluster 4-node lebih dari kumpulan data 100 GB. Dengan ukuran batch tertentu yang dioptimalkan ke cluster, asumsikan bahwa model dapat menyelesaikan satu epoch dalam waktu sekitar 30 detik. Dalam hal ini, kecepatan I/O minimum yang diperlukan adalah sekitar 3 masalah GB/s (100 GB / 30 s). This is apparently a much higher throughput requirement than 240 MB/s. With such a limited Amazon FSx capacity, scaling your distributed training job up to larger clusters might aggravate I/O hambatan; throughput pelatihan model mungkin meningkat di zaman selanjutnya saat cache menumpuk, tetapi throughput Amazon masih bisa menjadi hambatan. FSx

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

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