Aktifkan pelatihan yang lebih cepat dengan perpustakaan paralel data Amazon SageMaker | Layanan Web Amazon

Aktifkan pelatihan yang lebih cepat dengan perpustakaan paralel data Amazon SageMaker | Layanan Web Amazon

Pelatihan model bahasa besar (LLM) menjadi semakin populer selama setahun terakhir dengan dirilisnya beberapa model yang tersedia untuk umum seperti Llama2, Falcon, dan StarCoder. Pelanggan kini melatih LLM dengan ukuran yang belum pernah terjadi sebelumnya mulai dari 1 miliar hingga lebih dari 175 miliar parameter. Melatih LLM ini memerlukan sumber daya dan waktu komputasi yang signifikan karena ratusan hingga ribuan unit pemrosesan grafis (GPU) harus digunakan untuk menangani kumpulan data pelatihan dan ukuran model yang sangat besar saat ini. Salah satu hambatan dalam pelatihan terdistribusi adalah komunikasi GPU yang ditangani oleh NVIDIA Collective Communication Library (NCCL). Dalam beberapa tugas pelatihan yang terdistribusi besar, lebih banyak waktu yang dapat dihabiskan untuk komunikasi antar-GPU dibandingkan komputasi GPU sebenarnya. Untuk mengurangi hambatan komunikasi GPU dan memungkinkan pelatihan lebih cepat, Amazon SageMaker dengan gembira mengumumkan operasi kolektif AllGather yang dioptimalkan sebagai bagian dari perpustakaan paralel data terdistribusi (SMDDP) SageMaker. AllGather adalah operasi kolektif yang paling banyak digunakan dalam solusi paralelisme data hemat memori yang populer Pengoptimal Redundansi Nol DeepSpeed ​​(ZeRO) dan Paralelisme Data Terpecah Sepenuhnya (FSDP), dan merupakan kontributor utama overhead komunikasi GPU. Dalam postingan ini, kami menunjukkan ikhtisar tingkat tinggi tentang cara kerja SMDDP, cara mengaktifkan SMDDP di skrip pelatihan Amazon SageMaker, dan peningkatan kinerja yang dapat Anda harapkan.

Ikhtisar solusi

Tradisional pelatihan paralel data melibatkan replikasi seluruh model di beberapa GPU, dengan setiap model dilatih pada pecahan data yang berbeda dari kumpulan data. Selama proses backward pass, gradien dirata-ratakan di antara pekerja GPU sehingga setiap replika model diperbarui dengan nilai gradien yang sama meskipun mereka dilatih dengan pecahan data yang berbeda. Teknik ini memungkinkan pelatihan lebih cepat pada kumpulan data yang luas dengan memparalelkan konsumsi data pelatihan. Namun, beberapa model besar saat ini (misalnya, Llama2 70B) terlalu besar untuk dapat dimasukkan seluruhnya ke dalam memori GPU, sehingga paralelisme data tradisional tidak dapat digunakan. Untuk terus memperoleh manfaat paralelisme data sekaligus mengatasi keterbatasan memori GPU, solusi paralel data sharded seperti DeepSpeed ​​ZeRO, PyTorch FSDP, dan Amazon Pustaka paralelisme model SageMaker semakin populer.

Dalam paralelisme data yang dipecah, alih-alih mereplikasi seluruh model pada pekerja GPU, parameter model, gradien, dan status pengoptimal dipecah dan didistribusikan (yaitu, dipecah) ke seluruh GPU dalam tugas pelatihan. Untuk melakukan perhitungan maju dan mundur, parameter dikumpulkan dari pecahan pada pekerja GPU lain untuk membentuk satu atau beberapa lapisan model. Setelah komputasi dilakukan, lapisan-lapisan ini kemudian dibebaskan dari memori untuk memungkinkan kumpulan lapisan berikutnya dikumpulkan. Perhatikan bahwa ada varian paralelisme data yang dipecah di mana hanya status pengoptimal dan gradien yang dipecah, tetapi bukan parameter model. AllGather masih digunakan dalam jenis paralelisme data pecahan ini, namun hanya sebelum komputasi forward pass untuk mengumpulkan parameter model yang telah diperbarui oleh pecahan status pengoptimal atau gradien yang berbeda dari pekerja GPU lainnya. Lihat yang berbeda Tahapan DeepSpeed ​​ZeRO dan SHARD_GRAD_OP Strategi sharding FSDP untuk lebih detail.

Operasi kolektif AllGather dilakukan setiap kali parameter tidak di-sharding—NCCL menyediakan implementasi sumber terbuka standar untuk rutinitas ini. Seperti yang ditunjukkan berikut ini, setiap pekerja GPU yang terlibat dalam AllGather dimulai dengan buffer input dan diakhiri dengan semua buffer input dari pekerja lain yang digabungkan menjadi satu. Saat AllGather digunakan dalam paralelisme data pecahan, buffer masukan berisi pecahan parameter model dan buffer keluaran besar berisi satu atau lebih lapisan model yang diwujudkan dari pecahan lainnya.

Sebelum dan sesudah operasi AllGather pada 4 GPU

Meskipun NCCL biasanya digunakan untuk AllGather dalam pelatihan terdistribusi, implementasi tingkat rendah yang mendasarinya tidak disesuaikan dengan infrastruktur jaringan Amazon Elastic Compute Cloud (Amazon EC2) contoh, dan dengan demikian kinerjanya dapat memperlambat pelatihan end-to-end. Pustaka SMDDP adalah pustaka komunikasi kolektif untuk GPU NVIDIA yang berfungsi sebagai pengganti NCCL dan memberikan kinerja yang lebih baik untuk tugas pelatihan terdistribusi dengan PyTorch. Secara khusus, SMDDP menyediakan implementasi AllGather yang dioptimalkan untuk jenis instans p4d/p4de.

Karena operasi kolektif seperti AllGather memblokir komputasi forward dan backward pass, eksekusi yang lebih cepat dari operasi ini secara langsung menghasilkan waktu pelatihan end-to-end yang lebih singkat tanpa efek samping pada konvergensi. Operasi kolektif lainnya yang lebih jarang digunakan dalam pelatihan paralel data pecahan ditangani dengan kembali ke NCCL.

Walkthrough

AllGather yang dioptimalkan untuk AWS

AllGather yang dioptimalkan untuk AWS menggunakan teknik berikut untuk mencapai kinerja yang lebih baik pada infrastruktur AWS dibandingkan dengan NCCL:

  1. Kami memindahkan data antar instance melalui Adaptor Kain Elastis (EFA) jaringan dengan pola komunikasi all-to-all. EFA adalah solusi jaringan latensi rendah dan throughput tinggi dari AWS, dan pola komunikasi jaringan antar-simpul menyeluruh lebih disesuaikan dengan karakteristik infrastruktur jaringan EFA dan AWS dengan memerlukan lompatan paket yang lebih sedikit dibandingkan dengan ring atau ring NCCL. pola komunikasi pohon.
  2. Salinan GDR untuk mengoordinasikan lalu lintas jaringan NVLink dan EFA lokal. GDRCopy adalah perpustakaan yang menyediakan komunikasi latensi rendah antara proses CPU dan kernel GPU CUDA. Dengan teknologi ini, kami dapat menyalurkan pergerakan data intra-node dan antar-node.
  3. Mengurangi penggunaan multiprosesor streaming GPU untuk mengembalikan lebih banyak daya komputasi untuk memodelkan kernel. Instans AWS P4d/P4de dilengkapi dengan GPU NVIDIA A100 yang masing-masing memiliki 108 streaming multiprosesor. Meskipun NCCL memerlukan hingga 24 multiprosesor streaming untuk mengeksekusi kolektif, SMDDP Collectives hanya menggunakan hingga sembilan multiprosesor streaming. Multiprosesor streaming yang disimpan dapat diambil oleh kernel komputasi model untuk eksekusi yang lebih cepat.

penggunaan

Kolektif SMDDP terintegrasi secara asli dengan PyTorch melalui kelompok proses abstraksi di torch.distributed modul. Grup proses mendefinisikan antarmuka untuk operasi kolektif umum seperti AllGather, ReduceScatter, AllReduce, dll. Pengguna dapat menulis kode terdistribusi umum dan kemudian memilih yang mendasarinya. backend, yang menyediakan implementasi untuk operasi ini berdasarkan perangkat komputasi yang digunakan. Pekerjaan pelatihan CPU sering kali menggunakan gloo or mpi backend sementara GPU NVIDIA menggunakan nccl bagian belakang.

Pustaka SMDDP muncul dengan mendaftarkan dirinya sebagai backend khusus dalam abstraksi grup proses. Hal ini dilakukan dengan pernyataan import, yang ditunjukkan dalam cuplikan kode berikut. Lalu, saat memilih backend untuk tugas pelatihan terdistribusi berbasis GPU Anda, cukup ganti saja nccl dengan smddp. itu smddp backend mematuhi semantik yang sama dengan nccl backend dan mendukung skenario pelatihan yang sama.

Kecepatan Dalam

import smdistributed.dataparallel.torch.torch_smddp
deepspeed.init_distributed(dist_backend="smddp") # replacing "nccl"

FSDP

import smdistributed.dataparallel.torch.torch_smddp
dist.init_process_group(backend="smddp")  # replacing "nccl"

benchmark

Kami membandingkan kinerja AllGather yang berdiri sendiri di mana operasi kolektif dijalankan secara terpisah tanpa pelatihan model apa pun. Di bawah ini adalah contoh hasil pada 32 instans p4d yang membandingkan NCCL dan SMDDP AllGather. Sumbu X mewakili ukuran keluaran AllGather, dan sumbu Y mewakili tingkat pemanfaatan jaringan jaringan EFA 4 Gbps p400d. 4 sub-grafik mewakili pola grup komunikasi umum di mana kita memiliki 1, 2, 4, dan 8 peringkat per instance p4d yang masing-masing berpartisipasi dalam operasi AllGather.

Pemanfaatan jaringan SMDDP dan NCCL AllGather pada 32 node

Microbenchmark ini menunjukkan bahwa SMDDP mengungguli NCCL dalam dua karakteristik utama:

  1. Performa puncak SMDDP (sekitar 90% penggunaan bandwidth) lebih tinggi dibandingkan NCCL (sekitar 80% penggunaan bandwidth) di semua konfigurasi.
  2. SMDDP mencapai kinerja puncak pada ukuran buffer yang jauh lebih kecil dibandingkan NCCL. Hal ini khususnya meningkatkan kecepatan pelatihan untuk model yang lebih kecil atau ketika pengguna menetapkan ukuran buffer AllGather kecil di DeepSpeed ​​(di mana ukuran AllGather tidak harus sama dengan ukuran lapisan).

Tolok ukur pelatihan model

Dalam pekerjaan pelatihan skala besar di mana komunikasi GPU merupakan hambatan yang signifikan, SMDDP dapat meningkatkan kecepatan pelatihan secara nyata, yang diukur dengan model TFLOPS/GPU.

konfigurasi Performance
Model/Pelatihan Kelompok Solusi Paralelisme Data Sharded Model TFLOPS/GPU dengan NCCL Model TFLOPS/GPU dengan SMDDP % percepatan
13B Llama2
Panjang urutan: 4096
Ukuran batch global: 4 juta token
64 node p4d.24xlarge (512 GPU NVIDIA A100) FSDP PyTorch 97.89 121.85 24.40%
65B GPT-NeoX
Panjang urutan: 2048
Ukuran batch global: 4 juta token
64 node p4d.24xlarge (512 GPU NVIDIA A100) Kecepatan Dalam ZeRO Tahap 3* 99.23 108.66 9.50%

*Megatron-DeepSpeed ​​EleutherAI repositori digunakan. Paralelisme tensor juga diaktifkan dengan derajat delapan tensor-paralel.

Catatan: Model TFLOPS/GPU didasarkan pada perhitungan Pemanfaatan Model FLOPS yang ditentukan di makalah di sini dan angka benchmark di tempat lain mungkin mengutip TFLOPS/GPU perangkat keras sebagai metrik kinerja. TFLOPS/GPU perangkat keras dapat diperkirakan sebesar 4/3 x model TFLOPS/GPU.

Kesimpulan

Dalam postingan ini, kami menunjukkan kepada Anda cara mempercepat tugas pelatihan paralel data sharded secara signifikan di Amazon SageMaker hanya dengan dua baris perubahan kode. Pelatihan terdistribusi dalam skala besar menjadi semakin umum seiring dengan munculnya LLM, namun skala ini memerlukan biaya yang tinggi. Dengan mengurangi hambatan komunikasi antar GPU, SMDDP membantu Anda berlatih lebih cepat dalam skala besar dan menghemat sumber daya komputasi. Anda dapat menemukan lebih banyak contoh SMDDP dengan pelatihan paralel data pecahan di Repositori GitHub Contoh Amazon SageMaker.


Tentang Penulis

Aktifkan pelatihan yang lebih cepat dengan perpustakaan paralel data Amazon SageMaker | Kecerdasan Data PlatoBlockchain Layanan Web Amazon. Pencarian Vertikal. Ai.Apoorv Gupta adalah Insinyur Pengembangan Perangkat Lunak di AWS, yang berfokus pada pembangunan sistem pembelajaran mendalam yang optimal untuk infrastruktur dan perangkat keras AWS. Dia tertarik pada komputasi terdistribusi, sistem pembelajaran mendalam, dan akselerator ML. Di luar pekerjaan, Apoorv menikmati jalan-jalan, hiking, dan video game.

Aktifkan pelatihan yang lebih cepat dengan perpustakaan paralel data Amazon SageMaker | Kecerdasan Data PlatoBlockchain Layanan Web Amazon. Pencarian Vertikal. Ai.Karan Dhiman adalah Insinyur Pengembangan Perangkat Lunak di AWS, yang berbasis di Toronto, Kanada. Dia sangat tertarik dengan ruang pembelajaran mesin dan membangun solusi untuk mempercepat beban kerja komputasi terdistribusi.

Aktifkan pelatihan yang lebih cepat dengan perpustakaan paralel data Amazon SageMaker | Kecerdasan Data PlatoBlockchain Layanan Web Amazon. Pencarian Vertikal. Ai.Ruhan Prasad adalah Insinyur Pengembangan Perangkat Lunak di AWS yang berupaya membuat pelatihan pembelajaran mendalam terdistribusi menjadi lebih cepat, lebih murah, dan lebih mudah digunakan di SageMaker. Di luar pekerjaan, Ruhan menikmati bermain tenis, jalan-jalan, dan memasak.

Aktifkan pelatihan yang lebih cepat dengan perpustakaan paralel data Amazon SageMaker | Kecerdasan Data PlatoBlockchain Layanan Web Amazon. Pencarian Vertikal. Ai.Zhao Qi Zhu adalah Insinyur Pengembangan Perangkat Lunak Senior di AWS, yang sangat tertarik dengan sistem terdistribusi dan pengoptimalan tingkat rendah. Dia menikmati menonton pertandingan sepak bola sambil minum soda (non-diet).

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS