SageMaker Praktik Terbaik Paralelisme Model Terdistribusi - Amazon SageMaker

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

SageMaker Praktik Terbaik Paralelisme Model Terdistribusi

Gunakan panduan berikut saat Anda menjalankan pekerjaan pelatihan terdistribusi dengan pustaka paralel SageMaker model.

Menyiapkan Konfigurasi yang Tepat untuk Model yang Diberikan

Saat meningkatkan model, kami sarankan Anda untuk memeriksa daftar berikut secara berurutan. Setiap item daftar membahas keuntungan menggunakan teknik perpustakaan bersama dengan pengorbanan yang mungkin muncul.

Tip

Jika model dapat cocok dengan baik menggunakan subset fitur perpustakaan, menambahkan lebih banyak paralelisme model atau fitur penyimpanan memori biasanya tidak meningkatkan kinerja.

Menggunakan tipe instans GPU besar
  • Dalam bidang paralelisme model, yang terbaik adalah menggunakan instance yang kuat dengan memori GPU besar untuk menangani overhead dari operasi paralelisme model seperti mempartisi model di beberapa GPU. Kami merekomendasikan penggunaan ml.p4d atau ml.p3dn contoh untuk melatih model DL besar. Instans ini juga dilengkapi dengan Elastic Fabric Adapter (EFA), yang menyediakan bandwidth jaringan yang lebih tinggi dan memungkinkan pelatihan skala besar dengan paralelisme model.

Status pengoptimal sharding
  • Dampak status sharding optimizer tergantung pada jumlah peringkat paralel data. Biasanya, tingkat paralelisme data yang lebih tinggi (sebanding dengan ukuran node komputasi) dapat meningkatkan efisiensi penggunaan memori.

    Saat Anda ingin mengurangi ukuran cluster, pastikan Anda memeriksa konfigurasi sharding status pengoptimal. Misalnya, model DL besar dengan sharding status pengoptimal yang cocok pada cluster komputasi dengan 16 GPU (misalnya, dua instance P4d atau P4DE) mungkin tidak selalu muat pada node dengan 8 GPU (misalnya, satu instance P4d atau P4de). Ini karena memori gabungan 8 GPU lebih rendah daripada memori gabungan 16 GPU, dan memori yang diperlukan per GPU untuk sharding lebih dari 8 GPU juga lebih tinggi daripada memori per GPU untuk sharding selama skenario 16-GPU. Akibatnya, peningkatan kebutuhan memori mungkin tidak cocok dengan cluster yang lebih kecil.

    Untuk informasi selengkapnya, lihat Sharding Status Optimizer.

Pos pemeriksaan aktivasi
  • Efisiensi memori dapat ditingkatkan dengan menggunakan checkpointing aktivasi untuk sekelompok modul. Semakin banyak Anda mengelompokkan modul, semakin efisien penggunaan memori. Saat memeriksa modul sekuensial untuk lapisan, strategy argumen smp.set_activation_checkpointing fungsi mengelompokkan lapisan bersama-sama untuk pemeriksaan. Misalnya, mengelompokkan dua atau lebih lapisan bersama-sama untuk checkpointing lebih efisien memori daripada checkpointing satu lapisan pada satu waktu, dan ini memperdagangkan waktu komputasi ekstra untuk mengurangi penggunaan memori.

    Untuk informasi selengkapnya, lihat Aktivasi Checkpointing.

Paralelisme tensor
  • Derajat paralelisme tensor harus berupa kekuatan dua (2, 4, 8,..., 2 n), di mana derajat maksimum harus sama dengan jumlah GPU per node. Misalnya, jika Anda menggunakan node dengan 8 GPU, angka yang mungkin untuk derajat paralelisme tensor adalah 2, 4, dan 8. Kami tidak merekomendasikan angka arbitrer (seperti 3, 5, 6, dan 7) untuk tingkat paralelisme tensor. Saat Anda menggunakan beberapa node, salah mengonfigurasi tingkat paralelisme tensor dapat mengakibatkan menjalankan paralelisme tensor di seluruh node; ini menambahkan overhead yang signifikan dari komunikasi aktivasi di seluruh node dan dapat menjadi mahal secara komputasi.

    Untuk informasi selengkapnya, lihat Paralelisme Tensor.

Paralelisme pipa di seluruh node
  • Anda dapat menjalankan paralelisme pipeline baik dalam satu node maupun di beberapa node. Saat Anda menggunakan paralelisme pipeline dalam kombinasi dengan paralelisme tensor, kami merekomendasikan menjalankan paralelisme pipeline di beberapa node dan menjaga paralelisme tensor dalam masing-masing node.

  • Paralelisme pipa dilengkapi dengan tiga tombol berikut:microbatches,, active_microbatches dan. prescaled_batch

    • Saat Anda menggunakan paralelisme tensor dengan paralelisme pipa, kami sarankan untuk mengaktifkan prescaled_batch sehingga ukuran batch per grup paralel model dapat ditingkatkan untuk pipelining yang efisien. Dengan prescaled_batch diaktifkan, ukuran batch yang ditetapkan dalam skrip pelatihan menjadi tp_size kali ukuran batch yang ditetapkan untuk setiap peringkat tanpaprescaled_batch.

    • Meningkatkan jumlah microbatches membantu mencapai pipelining yang efisien dan kinerja yang lebih baik. Perhatikan bahwa ukuran microbatch efektif adalah ukuran batch dibagi dengan jumlah microbatch. Jika Anda menambah jumlah microbatch sambil menjaga ukuran batch konstan, setiap microbatch memproses lebih sedikit sampel.

    • Jumlah active_microbatches adalah jumlah maksimum microbatch yang secara bersamaan dalam proses selama pipelining. Untuk setiap microbatch aktif dalam proses, aktivasi dan gradiennya mengambil memori GPU. Oleh karena itu, peningkatan active_microbatches membutuhkan lebih banyak memori GPU.

  • Jika memori GPU dan GPU kurang dimanfaatkan, tingkatkan paralelisasi yang lebih baik active_microbatches selama pipelining.

  • Untuk informasi lebih lanjut tentang cara menggunakan paralelisme tensor dengan paralelisme pipa, lihat. Paralelisme tensor dikombinasikan dengan paralelisme pipa

  • Untuk menemukan deskripsi parameter yang disebutkan di atas, lihat Parameter untuk smdistributed dalam dokumentasi SageMaker Python SDK.

Bongkar aktivasi ke CPU
  • Pastikan bahwa ini digunakan dalam kombinasi dengan checkpointing aktivasi dan paralelisme pipa. Untuk memastikan bahwa pembongkaran dan pramuat terjadi di latar belakang, tentukan nilai yang lebih besar dari 1 ke parameter microbatches.

  • Saat membongkar aktivasi, Anda mungkin dapat meningkatkan active_microbatches dan terkadang cocok dengan jumlah total microbatch. Ini tergantung pada modul mana yang diperiksa dan bagaimana model dipartisi.

    Untuk informasi selengkapnya, lihat Pembongkaran Aktivasi.

Konfigurasi referensi

Tim pelatihan paralelisme SageMaker model menyediakan titik referensi berikut berdasarkan eksperimen dengan model GPT-2, panjang urutan 512, dan ukuran kosakata 50.000.

Jumlah parameter model Jenis instans Paralelisme pipa Paralelisme tensor Sharding status pengoptimal Pos pemeriksaan aktivasi Batch berskala Ukuran batch
10 miliar 16 ml.p4d.24xlarge 1 4 True Setiap lapisan transformator True batch_size=40
30 miliar 16 ml.p4d.24xlarge 1 8 True Setiap lapisan transformator True batch_size=32
60 miliar 32 ml.p4d.24xlarge 2 8 True Setiap lapisan transformator True batch_size=56, microbatches=4, active_microbatches=2

Anda dapat mengekstrapolasi dari konfigurasi sebelumnya untuk memperkirakan penggunaan memori GPU untuk konfigurasi model Anda. Misalnya, jika Anda menambah panjang urutan untuk model 10 miliar parameter atau meningkatkan ukuran model menjadi 20 miliar, Anda mungkin ingin menurunkan ukuran batch terlebih dahulu. Jika model masih tidak cocok, coba tingkatkan derajat paralelisme tensor.

Memodifikasi Skrip Pelatihan Anda

  • Sebelum Anda menggunakan fitur pustaka paralel SageMaker model dalam skrip pelatihan Anda, tinjauTips dan Jebakan Konfigurasi Perpustakaan Paralelisme Model SageMaker Terdistribusi.

  • Untuk meluncurkan pekerjaan pelatihan lebih cepat, gunakan mode SageMaker lokal. Ini membantu Anda dengan cepat menjalankan pekerjaan pelatihan secara lokal pada instance SageMaker notebook. Bergantung pada skala instans ML tempat instans SageMaker notebook Anda berjalan, Anda mungkin perlu menyesuaikan ukuran model Anda dengan mengubah konfigurasi model, seperti lebar tersembunyi, jumlah lapisan transformator, dan kepala perhatian. Validasi jika model yang dikurangi berjalan dengan baik pada instance notebook sebelum menggunakan cluster besar untuk melatih model lengkap.

Memantau dan Mencatat Job Pelatihan Menggunakan SageMaker Konsol dan Amazon CloudWatch

Untuk memantau metrik tingkat sistem seperti pemanfaatan memori CPU, pemanfaatan memori GPU, dan pemanfaatan GPU, gunakan visualisasi yang disediakan melalui konsol. SageMaker

  1. Di panel navigasi kiri, pilih Pelatihan.

  2. Pilih pekerjaan Pelatihan.

  3. Di panel utama, pilih nama pekerjaan pelatihan yang ingin Anda lihat lebih detail.

  4. Jelajahi panel utama dan temukan bagian Monitor untuk melihat visualisasi otomatis.

  5. Untuk melihat log pekerjaan pelatihan, pilih Lihat log di bagian Monitor. Anda dapat mengakses log pekerjaan pelatihan terdistribusi dari pekerjaan pelatihan di CloudWatch. Jika Anda meluncurkan pelatihan terdistribusi multi-node, Anda akan melihat beberapa aliran log dengan tag dalam format algo-n-1234567890. Aliran log algo-1 melacak log pelatihan dari simpul utama (ke-0).

Untuk informasi selengkapnya, lihat CloudWatch Metrik Amazon untuk Memantau dan Menganalisis Pekerjaan Pelatihan.

Izin

Untuk menjalankan pekerjaan SageMaker pelatihan dengan paralelisme model atau buku catatan contoh pelatihan SageMaker terdistribusi, pastikan Anda memiliki izin yang tepat dalam peran IAM Anda, seperti berikut ini: