Pengantar Paralelisme Model - Amazon SageMaker

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

Pengantar Paralelisme Model

Paralelisme model adalah metode pelatihan terdistribusi di mana model pembelajaran mendalam dipartisi di beberapa perangkat, di dalam atau di seluruh instance. Halaman pengantar ini memberikan gambaran tingkat tinggi tentang paralelisme model, deskripsi tentang bagaimana hal itu dapat membantu mengatasi masalah yang muncul saat melatih model DL yang biasanya berukuran sangat besar, dan contoh apa yang ditawarkan perpustakaan SageMaker paralel model untuk membantu mengelola strategi paralel model serta konsumsi memori.

Apa itu Paralelisme Model?

Meningkatkan ukuran model pembelajaran mendalam (lapisan dan parameter) menghasilkan akurasi yang lebih baik untuk tugas-tugas kompleks seperti visi komputer dan pemrosesan bahasa alami. Namun, ada batasan untuk ukuran model maksimum yang dapat Anda muat dalam memori tunggalGPU. Saat melatih model DL, keterbatasan GPU memori dapat menjadi hambatan dengan cara berikut:

  • Mereka membatasi ukuran model yang dapat Anda latih, karena jejak memori model berskala proporsional dengan jumlah parameter.

  • Mereka membatasi ukuran per GPU batch selama pelatihan, menurunkan GPU pemanfaatan dan efisiensi pelatihan.

Untuk mengatasi keterbatasan yang terkait dengan pelatihan model pada satu modelGPU, SageMaker sediakan perpustakaan paralel model untuk membantu mendistribusikan dan melatih model DL secara efisien pada beberapa node komputasi. Selain itu, dengan perpustakaan, Anda dapat mencapai pelatihan terdistribusi yang paling dioptimalkan menggunakan perangkat yang EFA didukung, yang meningkatkan kinerja komunikasi antar-node dengan latensi rendah, throughput tinggi, dan bypass OS.

Perkirakan Persyaratan Memori Sebelum Menggunakan Paralelisme Model

Sebelum Anda menggunakan perpustakaan paralel SageMaker model, pertimbangkan hal berikut untuk memahami persyaratan memori untuk melatih model DL besar.

Untuk pekerjaan pelatihan yang menggunakan AMP (FP16) dan pengoptimal Adam, GPU memori yang diperlukan per parameter adalah sekitar 20 byte, yang dapat kita uraikan sebagai berikut:

  • FP16Parameter ~ 2 byte

  • FP16Gradien ~ 2 byte

  • Status FP32 pengoptimal ~ 8 byte berdasarkan pengoptimal Adam

  • FP32Salinan parameter ~ 4 byte (diperlukan untuk operasi optimizer apply (OA))

  • FP32Salinan gradien ~ 4 byte (diperlukan untuk operasi OA)

Bahkan untuk model DL yang relatif kecil dengan 10 miliar parameter, dapat memerlukan setidaknya 200GB memori, yang jauh lebih besar daripada memori biasa (misalnya, NVIDIA A100 dengan GPU memori 40GB/80GB dan V100 dengan 16/32 GB) tersedia pada satu. GPU Perhatikan bahwa di atas persyaratan memori untuk status model dan pengoptimal, ada konsumen memori lain seperti aktivasi yang dihasilkan dalam pass maju. Memori yang dibutuhkan bisa jauh lebih besar dari 200GB.

Untuk pelatihan terdistribusi, sebaiknya gunakan instans Amazon EC2 P3 dan P4 yang masing-masing memiliki NVIDIA V100 dan A100 Tensor Core. GPUs Untuk detail selengkapnya tentang spesifikasi seperti CPU intiRAM, volume penyimpanan terlampir, dan bandwidth jaringan, lihat bagian Komputasi Akselerasi di halaman Jenis EC2 Instance Amazon.

Bahkan dengan contoh komputasi yang dipercepat, jelas bahwa model dengan sekitar 10 miliar parameter seperti Megatron-LM dan T5 dan bahkan model yang lebih besar dengan ratusan miliar parameter seperti GPT -3 tidak dapat memuat replika model di setiap perangkat. GPU

Bagaimana Perpustakaan Menggunakan Paralelisme Model dan Teknik Penghematan Memori

Pustaka terdiri dari berbagai jenis fitur paralelisme model dan fitur hemat memori seperti sharding status pengoptimal, checkpointing aktivasi, dan pembongkaran aktivasi. Semua teknik ini dapat digabungkan untuk melatih model besar secara efisien yang terdiri dari ratusan miliar parameter.

Paralelisme data sharded (tersedia untuk) PyTorch

Paralelisme data sharded adalah teknik pelatihan terdistribusi hemat memori yang membagi keadaan model (parameter model, gradien, dan status pengoptimal) di dalam grup data-paralel. GPUs

SageMaker mengimplementasikan paralelisme data yang dipecah melalui implementasi MIC, yang merupakan perpustakaan yang mi nimizes c ommunication s cale dan dibahas dalam posting blog Penskalaan hampir linier dari pelatihan model raksasa pada. AWS

Anda dapat menerapkan paralelisme data sharded ke model Anda sebagai strategi yang berdiri sendiri. Selain itu, jika Anda menggunakan GPU instans berkinerja terbaik yang dilengkapi dengan NVIDIA A100 Tensor Core GPUsml.p4d.24xlarge, Anda dapat memanfaatkan peningkatan kecepatan pelatihan dari AllGather operasi yang ditawarkan oleh Collectives. SMDDP

Untuk menyelam jauh ke dalam paralelisme data sharded dan mempelajari cara mengaturnya atau menggunakan kombinasi paralelisme data sharded dengan teknik lain seperti paralelisme tensor dan pelatihan, lihat. FP16 Paralelisme Data Sharded

Paralelisme pipa (tersedia untuk PyTorch dan) TensorFlow

Paralelisme pipa mempartisi kumpulan lapisan atau operasi di seluruh rangkaian perangkat, membiarkan setiap operasi tetap utuh. Ketika Anda menentukan nilai untuk jumlah partisi model (pipeline_parallel_degree), jumlah total GPUs (processes_per_host) harus habis dibagi dengan jumlah partisi model. Untuk mengatur ini dengan benar, Anda harus menentukan nilai yang benar untuk pipeline_parallel_degree dan processes_per_host parameter. Matematika sederhana adalah sebagai berikut:

(pipeline_parallel_degree) x (data_parallel_degree) = processes_per_host

Pustaka menangani penghitungan jumlah replika model (juga disebutdata_parallel_degree) mengingat dua parameter input yang Anda berikan.

Misalnya, jika Anda menyetel "pipeline_parallel_degree": 2 dan "processes_per_host": 8 menggunakan instance ML dengan delapan GPU pekerja sepertiml.p3.16xlarge, pustaka akan secara otomatis menyiapkan model terdistribusi di seluruh paralelisme data empat arah GPUs dan empat arah. Gambar berikut menggambarkan bagaimana model didistribusikan di delapan GPUs mencapai paralelisme data empat arah dan paralelisme pipa dua arah. Setiap replika model, di mana kita mendefinisikannya sebagai grup paralel pipa dan memberi label sebagaiPP_GROUP, dipartisi menjadi dua. GPUs Setiap partisi model ditetapkan ke empatGPUs, di mana empat replika partisi berada dalam grup paralel data dan diberi label sebagai. DP_GROUP Tanpa paralelisme tensor, grup paralel pipa pada dasarnya adalah kelompok paralel model.

Bagaimana sebuah model didistribusikan di delapan GPUs mencapai paralelisme data empat arah dan paralelisme pipa dua arah.

Untuk menyelam jauh ke dalam paralelisme pipa, lihat. Fitur Inti dari Perpustakaan Paralelisme SageMaker Model

Untuk memulai menjalankan model menggunakan paralelisme pipeline, lihat Menjalankan Job Pelatihan SageMaker Terdistribusi dengan Perpustakaan Paralel SageMaker Model.

Paralelisme tensor (tersedia untuk) PyTorch

Paralelisme tensor membagi lapisan individu, atau, di seluruh perangkatnn.Modules, untuk dijalankan secara paralel. Gambar berikut menunjukkan contoh paling sederhana tentang bagaimana perpustakaan membagi model dengan empat lapisan untuk mencapai paralelisme tensor dua arah (). "tensor_parallel_degree": 2 Lapisan setiap replika model dibagi dua dan didistribusikan menjadi dua. GPUs Dalam contoh kasus ini, konfigurasi paralel model juga mencakup "pipeline_parallel_degree": 1 dan "ddp": True (menggunakan PyTorch DistributedDataParallel paket di latar belakang), sehingga tingkat paralelisme data menjadi delapan. Perpustakaan mengelola komunikasi di seluruh replika model terdistribusi tensor.

Contoh paling sederhana tentang bagaimana perpustakaan membagi model dengan empat lapisan untuk mencapai paralelisme tensor dua arah (). "tensor_parallel_degree": 2

Kegunaan fitur ini adalah kenyataan bahwa Anda dapat memilih lapisan tertentu atau subset lapisan untuk menerapkan paralelisme tensor. Untuk menyelam jauh ke dalam paralelisme tensor dan fitur hemat memori lainnya untuk PyTorch, dan untuk mempelajari cara mengatur kombinasi paralelisme pipa dan tensor, lihat. Paralelisme Tensor

Sharding status pengoptimal (tersedia untuk) PyTorch

Untuk memahami bagaimana pustaka melakukan sharding status pengoptimal, pertimbangkan contoh model sederhana dengan empat lapisan. Ide kunci dalam mengoptimalkan sharding status adalah Anda tidak perlu mereplikasi status pengoptimal Anda di semua status pengoptimal Anda. GPUs Sebagai gantinya, satu replika status pengoptimal dibagi di seluruh peringkat paralel data, tanpa redundansi di seluruh perangkat. Misalnya, GPU 0 memegang status pengoptimal untuk lapisan satu, GPU 1 berikutnya memegang status pengoptimal untuk L2, dan seterusnya. Gambar animasi berikut menunjukkan propagasi mundur dengan teknik sharding status pengoptimal. Di akhir propagasi mundur, ada waktu komputasi dan jaringan untuk operasi optimizer apply (OA) untuk memperbarui status pengoptimal dan operasi all-gather (AG) untuk memperbarui parameter model untuk iterasi berikutnya. Yang terpenting, reduce operasi dapat tumpang tindih dengan komputasi pada GPU 0, menghasilkan propagasi mundur yang lebih efisien memori dan lebih cepat. Dalam implementasi saat ini, operasi AG dan OA tidak tumpang tindih dengancompute. Ini dapat menghasilkan perhitungan yang diperpanjang selama operasi AG, jadi mungkin ada tradeoff.

Propagasi mundur dengan teknik sharding status pengoptimal.

Untuk informasi selengkapnya tentang cara menggunakan fitur ini, lihat Sharding Status Optimizer.

Aktivasi pembongkaran dan checkpointing (tersedia untuk) PyTorch

Untuk menghemat GPU memori, pustaka mendukung pos pemeriksaan aktivasi untuk menghindari penyimpanan aktivasi internal dalam GPU memori untuk modul yang ditentukan pengguna selama pass maju. Pustaka menghitung ulang aktivasi ini selama pass mundur. Selain itu, fitur pembongkaran aktivasi membongkar aktivasi yang disimpan ke CPU memori dan mengambil kembali GPU selama lintasan mundur untuk lebih mengurangi jejak memori aktivasi. Untuk informasi selengkapnya tentang cara menggunakan fitur ini, lihat Pos Pemeriksaan Aktivasi dan Pembongkaran Aktivasi.

Memilih teknik yang tepat untuk model Anda

Untuk informasi selengkapnya tentang memilih teknik dan konfigurasi yang tepat, lihat Praktik Terbaik Paralel Model SageMaker Terdistribusi dan Tips dan Perangkap Konfigurasi.