Beberapa tahun terakhir telah terlihat perkembangan pesat di bidang pemrosesan bahasa alami (NLP). Sementara perangkat keras telah meningkat, seperti dengan akselerator generasi terbaru dari NVIDIA dan Amazon, praktisi pembelajaran mesin (ML) tingkat lanjut masih sering mengalami masalah dalam menskalakan model bahasa besar mereka di beberapa GPU.
Dalam posting blog ini, kami secara singkat merangkum kebangkitan model NLP skala besar dan kecil, terutama melalui abstraksi yang disediakan oleh Hugging Face dan dengan backend modular Amazon SageMaker. Secara khusus kami menyoroti peluncuran empat fitur tambahan dalam pustaka paralel model SageMaker yang membuka 175 miliar parameter model NLP prapelatihan dan penyesuaian untuk pelanggan.
Kami menggunakan pustaka ini pada platform pelatihan SageMaker dan mencapai throughput 32 sampel per detik pada instans 120 ml.p4d.24xlarge dan 175 miliar parameter. Kami mengantisipasi bahwa jika kami meningkatkan ini hingga 240 instance, model lengkap akan membutuhkan waktu 25 hari untuk dilatih.
Untuk informasi lebih lanjut tentang paralelisme model, lihat makalah Paralelisme Model Amazon SageMaker: Kerangka Umum dan Fleksibel untuk Pelatihan Model Besar.
Anda juga dapat melihat notebook GPT2 yang kami gunakan untuk menghasilkan angka performa ini di Repositori GitHub.
Untuk mempelajari lebih lanjut tentang cara menggunakan fitur-fitur baru dalam paralel model SageMaker, lihat Fitur Tambahan dari Perpustakaan Paralel Model SageMaker untuk PyTorch, dan Gunakan dengan SageMaker Python SDK.
NLP di Amazon SageMaker โ Memeluk Wajah dan paralelisme model
Jika Anda baru mengenal Hugging Face dan NLP, sorotan terbesar yang perlu Anda ketahui adalah bahwa aplikasi yang menggunakan pemrosesan bahasa alami (NLP) mulai mencapai kinerja tingkat manusia. Ini sebagian besar didorong oleh mekanisme pembelajaran, yang disebut perhatian, yang memunculkan model pembelajaran mendalam, yang disebut transformator, yang jauh lebih terukur daripada metode sekuensial deep learning sebelumnya. Yang sekarang terkenal model BERT dikembangkan untuk memanfaatkan transformator, dan mengembangkan beberapa taktik NLP yang berguna di sepanjang jalan. Transformer dan rangkaian model, baik di dalam maupun di luar NLP, yang semuanya terinspirasi oleh BERT, adalah mesin utama di balik hasil pencarian Google Anda, di Hasil terjemahan Google, dan sejumlah startup baru.
SageMaker dan Hugging Face bermitra untuk membuat ini lebih mudah bagi pelanggan daripada sebelumnya. Kami telah meluncurkan wadah pembelajaran mendalam Hugging Face (DLC) bagi Anda untuk melatih dan menyelenggarakan model pra-pelatihan langsung dari Hugging Face's repositori lebih dari 26,000 model. Kami telah meluncurkan Kompilator Pelatihan SageMaker bagi Anda untuk mempercepat runtime loop pelatihan Hugging Face Anda hingga 50%. Kami juga telah terintegrasi SDK Transformers unggulan Hugging Face dengan perpustakaan pelatihan terdistribusi kami untuk membuat penskalaan model NLP Anda lebih mudah dari sebelumnya.
Untuk informasi lebih lanjut tentang model Hugging Face Transformer di Amazon SageMaker, lihat Dukungan untuk Model Transformer Wajah Memeluk.
Fitur baru untuk pelatihan model NLP skala besar dengan pustaka paralel model SageMaker
Di AWS re:Invent 2020, SageMaker meluncurkan pustaka terdistribusi yang memberikan kinerja terbaik di cloud untuk melatih model visi komputer seperti Masker-RCNN dan model NLP seperti T5-3B. Hal ini dimungkinkan melalui komunikasi primitif yang disempurnakan yang 20-40% lebih cepat daripada NCCL di AWS, dan teknik distribusi model yang memungkinkan model bahasa yang sangat besar untuk menskalakan puluhan hingga ratusan hingga ribuan GPU.
Pustaka paralel model SageMaker (SMP) selalu memberi Anda kemampuan untuk mengambil model NLP yang telah ditentukan sebelumnya di PyTorch, baik itu melalui Hugging Face atau di tempat lain, dan mempartisi model itu ke beberapa GPU di cluster Anda. Dengan kata lain, SMP memecah model Anda menjadi potongan-potongan yang lebih kecil sehingga Anda tidak mengalami kesalahan kehabisan memori (OOM). Kami senang menambahkan teknik penghematan memori tambahan yang penting untuk model skala besar, yaitu:
- Paralelisme tensor
- Sharding status pengoptimal
- Pos pemeriksaan aktivasi
- Pembongkaran aktivasi
Anda dapat menggabungkan keempat fitur ini dapat digabungkan untuk memanfaatkan memori secara lebih efisien dan melatih generasi berikutnya dari model NLP skala ekstrim.
Pelatihan terdistribusi dan paralelisme tensor
Untuk memahami paralelisme tensor, perlu diketahui bahwa ada banyak jenis pelatihan terdistribusi, atau paralelisme. Anda mungkin sudah akrab dengan jenis yang paling umum, paralelisme data. Inti dari paralelisme data bekerja seperti ini: Anda menambahkan node tambahan ke cluster Anda, seperti beralih dari satu hingga dua instans ml.EC2 di estimator SageMaker Anda. Kemudian, Anda menggunakan kerangka kerja paralel data seperti Horovod, PyTorch Distributed Data Parallel, atau SageMaker Distributed. Ini membuat replika model Anda, satu per akselerator, dan menangani pembagian data ke setiap node, bersama dengan menyatukan semua hasil selama langkah propagasi balik jaringan saraf Anda. Pikirkan penurunan gradien terdistribusi. Paralelisme data juga populer di dalam server; Anda membagi data ke semua GPU, dan terkadang CPU, di semua node Anda. Diagram berikut menggambarkan paralelisme data.
Paralelisme model sedikit berbeda. Alih-alih membuat salinan dari model yang sama, kami membagi model Anda menjadi beberapa bagian. Kemudian kami mengelola menjalankannya, sehingga data Anda masih mengalir melalui jaringan saraf Anda dengan cara yang persis sama secara matematis, tetapi bagian yang berbeda dari model Anda berada di GPU yang berbeda. Jika Anda menggunakan ml.p3.8xlarge, Anda memiliki empat NVIDIA V100, jadi Anda mungkin ingin membagi model Anda menjadi 4 bagian, satu bagian per GPU. Jika Anda melompat hingga dua ml.p4d.24xlarge, itu berarti total 16 A100 di cluster Anda, jadi Anda dapat memecah model menjadi 16 bagian. Ini juga kadang-kadang disebut paralelisme pipa. Itu karena kumpulan lapisan dalam jaringan dipartisi di seluruh GPU, dan berjalan dalam jalur pipa untuk memaksimalkan pemanfaatan GPU. Diagram berikut menggambarkan paralelisme model.
Untuk membuat paralelisme model terjadi pada skala, kita membutuhkan jenis distribusi ketiga: paralelisme tensor. Paralelisme tensor menerapkan konsep yang sama pada satu langkah lebih jauhโkami memecah lapisan terbesar dari jaringan saraf Anda dan menempatkan bagian-bagian dari lapisan itu sendiri pada perangkat yang berbeda. Ini relevan ketika Anda bekerja dengan 175 miliar parameter atau lebih, dan mencoba memasukkan bahkan beberapa record ke dalam RAM, bersama dengan bagian-bagian model Anda, untuk melatih transformator itu. Diagram berikut menggambarkan paralelisme tensor.
Untuk mengaktifkan paralelisme tensor, atur dalam opsi smp Anda lulus ke estimator Anda.
Dalam kode sebelumnya, pipeline_parallel_degree
menjelaskan ke dalam berapa banyak segmen model Anda harus dibagi, berdasarkan paralelisme pipa yang kita diskusikan di atas. Kata lain untuk ini adalah skor.
Untuk mengaktifkan paralelisme tensor, set tensor_parallel_degree
ke tingkat yang Anda inginkan. Pastikan Anda memilih angka yang sama dengan atau lebih kecil dari jumlah GPU per instans, jadi tidak lebih dari 8 untuk mesin ml.p4d.24xlarge. Untuk perubahan skrip tambahan, lihat Jalankan Pekerjaan Pelatihan Paralel Model Terdistribusi SageMaker dengan Paralelisme Tensor.
Parameter ddp mengacu pada paralel data terdistribusi. Anda biasanya mengaktifkan ini jika Anda menggunakan paralelisme data atau paralelisme tensor, karena pustaka paralelisme model bergantung pada DDP untuk fitur ini.
Sharding status pengoptimal, pembongkaran aktivasi, dan pos pemeriksaan
Jika Anda memiliki model yang sangat besar, Anda juga memerlukan status pengoptimal yang sangat besar. Mempersiapkan pengoptimal Anda untuk SMP sangatlah mudah: cukup ambil dari disk di skrip Anda dan muat ke dalam smp.DistributedOptimizer()
obyek.
Pastikan Anda mengaktifkan ini di estimator dengan menyetel shard_optimizer_state
untuk Benar dalam smp_options
Anda gunakan untuk mengkonfigurasi SMP:
Mirip dengan tensor dan paralelisme pipeline, SMP membuat profil model dan ukuran dunia Anda (jumlah total GPU di semua node pelatihan Anda), untuk menemukan strategi penempatan terbaik.
Dalam pembelajaran mendalam, keluaran lapisan perantara juga disebut aktivasi, dan ini perlu disimpan selama lintasan maju. Ini karena mereka perlu digunakan untuk perhitungan gradien di lintasan mundur. Dalam model besar, menyimpan semua aktivasi ini secara bersamaan dalam memori dapat membuat kemacetan memori yang signifikan. Untuk mengatasi kemacetan ini, Anda dapat menggunakan pos pemeriksaan aktivasi, fitur baru ketiga dalam pustaka paralelisme model SageMaker. Pos pemeriksaan aktivasi, atau titik pemeriksaan gradien, adalah teknik untuk mengurangi penggunaan memori dengan menghapus aktivasi lapisan tertentu dan mengkomputasi ulang mereka selama lintasan mundur. Ini secara efektif memperdagangkan waktu komputasi ekstra untuk mengurangi penggunaan memori.
Terakhir, pembongkaran aktivasi langsung menggunakan pos pemeriksaan aktivasi. Ini adalah strategi untuk menyimpan hanya beberapa aktivasi tensor pada RAM GPU selama pelatihan model. Secara khusus, kami memindahkan aktivasi checkpoint ke memori CPU selama lintasan maju dan memuatnya kembali ke GPU untuk lintasan mundur batch mikro tertentu.
Micro-batch dan strategi penempatan
Topik lain yang terkadang membuat pelanggan bingung adalah micro-batch dan strategi penempatan. Keduanya adalah hyperparameter yang dapat Anda suplai ke pustaka paralel model SageMaker. Khususnya mikro-batch relevan ketika menerapkan model yang mengandalkan paralelisme pipa, seperti yang setidaknya berukuran 30 miliar parameter atau lebih.
Micro-batch adalah subset dari minibatch. Ketika model Anda berada dalam loop pelatihannya, Anda menentukan sejumlah catatan untuk diambil dan diteruskan ke depan dan ke belakang melalui lapisan-ini disebut a minibatch, atau terkadang hanya a sekumpulan. Sebuah lulus penuh melalui dataset Anda disebut masa. Untuk menjalankan lintasan maju dan mundur dengan paralelisme saluran, pustaka paralel model SageMaker membagi kumpulan menjadi subset yang lebih kecil yang disebut kumpulan mikro, yang dijalankan satu per satu untuk memaksimalkan penggunaan GPU. Kumpulan contoh yang dihasilkan, jauh lebih kecil per GPU, disebut mikro-batch. Dalam contoh GPT-2 kami, kami menambahkan default 1 microbatch langsung ke skrip pelatihan.
Saat Anda meningkatkan konfigurasi pelatihan, Anda sangat disarankan untuk mengubah ukuran batch dan ukuran mikro-batch Anda sesuai dengan itu. Ini adalah satu-satunya cara untuk memastikan kinerja yang baik: Anda harus mempertimbangkan ukuran batch dan ukuran mikro-batch sebagai fungsi dari ukuran dunia Anda secara keseluruhan saat mengandalkan paralelisme pipa.
Strategi penempatan adalah bagaimana memberi tahu SageMaker secara fisik di mana menempatkan partisi model Anda. Jika Anda menggunakan model paralel dan paralel data, atur placement_strategy
untuk โclusterโ
menempatkan replika model di ID perangkat (GPU) yang secara fisik berdekatan satu sama lain. Namun, jika Anda benar-benar ingin lebih preskriptif tentang strategi paralelisme Anda, Anda dapat memecahnya menjadi satu string dengan kombinasi tiga huruf yang berbeda: D untuk paralelisme data, P
menunjukkan paralelisme pipa, dan T
untuk paralelisme tensor. Kami biasanya merekomendasikan untuk mempertahankan penempatan default "cluster"
, karena ini paling sesuai untuk pelatihan model skala besar. Penempatan "cluster" sesuai dengan "DPT
".
Untuk informasi lebih lanjut tentang strategi penempatan, lihat Strategi Penempatan dengan Paralelisme Tensor.
Contoh kasus penggunaan
Bayangkan Anda memiliki satu ml.p3.16xlarge dalam tugas pelatihan Anda. Itu memberimu 8 NVIDIA V100 per node. Ingat, setiap kali Anda menambahkan instance tambahan, Anda mengalami overhead bandwidth tambahan, jadi selalu lebih baik untuk memiliki lebih banyak GP'U pada satu node. Dalam hal ini, Anda lebih baik menggunakan satu ml.p3.16xlarge daripada, misalnya, dua ml.p3.8xlarges. Meskipun jumlah GPU sama, overhead bandwidth ekstra dari node ekstra memperlambat throughput Anda.
Diagram berikut menggambarkan paralelisme model empat arah, dikombinasikan dengan paralelisme data dua arah. Ini berarti Anda sebenarnya memiliki dua replika model Anda (pikirkan data paralel), dengan masing-masing dipartisi di empat GPU (model paralel).
Jika salah satu dari partisi model tersebut terlalu besar untuk dimasukkan ke dalam satu GPU, Anda dapat menambahkan jenis distribusiโparalelisme tensorโuntuk meludahkannya dan menggunakan kedua perangkat.
Kesimpulan
Dalam posting blog ini kami membahas perpustakaan pelatihan terdistribusi SageMaker, terutama yang berfokus pada paralelisme model. Kami membagikan tolok ukur kinerja dari pengujian terbaru kami, mencapai 32 sampel per detik di 120 ml.p4d.24xlarge instans dan 175B parameter di Amazon SageMaker. Kami mengantisipasi bahwa jika kami meningkatkan ini menjadi 240 instans p4, kami dapat melatih model parameter 175B dalam 25 hari.
Kami juga membahas fitur terbaru yang memungkinkan pelatihan skala besar, yaitu paralelisme tensor, sharding status pengoptimal, pemeriksaan aktivasi, dan pembongkaran aktivasi. Kami membagikan beberapa tip dan trik untuk mengaktifkan ini melalui pelatihan di Amazon SageMaker.
Cobalah sendiri menggunakan buku catatan yang sama yang menghasilkan nomor kami, yang tersedia di GitHub di sini. Anda juga dapat meminta lebih banyak GPU untuk akun AWS Anda melalui meminta persetujuan batas layanan di sini.
Tentang Penulis
Emily Webber bergabung dengan AWS tepat setelah SageMaker diluncurkan, dan telah mencoba memberi tahu dunia tentang hal itu sejak saat itu! Di luar membangun pengalaman ML baru untuk pelanggan, Emily menikmati bermeditasi dan mempelajari Buddhisme Tibet.
Aditya Bindal adalah Manajer Produk Senior untuk AWS Deep Learning. Dia mengerjakan produk yang memudahkan pelanggan untuk melatih model pembelajaran mendalam di AWS. Di waktu luangnya, ia menikmati menghabiskan waktu bersama putrinya, bermain tenis, membaca fiksi sejarah, dan jalan-jalan.
Luis Quintela adalah Software Developer Manager untuk pustaka paralel model AWS SageMaker. Di waktu luangnya, ia dapat ditemukan mengendarai Harley-nya di SF Bay Area.
- Coinsmart. Pertukaran Bitcoin dan Crypto Terbaik Eropa.
- Platoblockchain. Intelijen Metaverse Web3. Pengetahuan Diperkuat. AKSES GRATIS.
- CryptoHawk. Radar Altcoin. Uji Coba Gratis.
- Sumber: https://aws.amazon.com/blogs/machine-learning/train-175-billion-parameter-nlp-models-with-model-parallel-additions-and-hugging-face-on-amazon-sagemaker/
- "
- 000
- 100
- 2020
- 39
- Tentang Kami
- akselerator
- Akun
- dicapai
- di seluruh
- Tambahan
- alamat
- maju
- Semua
- sudah
- Amazon
- Lain
- aplikasi
- DAERAH
- tersedia
- AWS
- Teluk
- TERBAIK
- Terbesar
- Milyar
- Blog
- Bangunan
- Menyebabkan
- perubahan
- awan
- kode
- kombinasi
- Umum
- Komunikasi
- konfigurasi
- kebingungan
- Wadah
- Core
- bisa
- pelanggan
- data
- dikembangkan
- Pengembang
- Pengembangan
- alat
- Devices
- berbeda
- didistribusikan
- distribusi
- turun
- didorong
- memungkinkan
- terutama
- contoh
- pengalaman
- Pengalaman
- ekstrim
- Menghadapi
- lebih cepat
- Fitur
- Fitur
- Fiksi
- cocok
- berikut
- Depan
- ditemukan
- Kerangka
- penuh
- fungsi
- Umum
- menghasilkan
- GitHub
- akan
- baik
- Cari Google
- GPU
- Perangkat keras
- bermanfaat
- Menyoroti
- historis
- Seterpercayaapakah Olymp Trade? Kesimpulan
- How To
- HTTPS
- Ratusan
- Pada meningkat
- informasi
- terinspirasi
- terpadu
- masalah
- IT
- Pekerjaan
- bergabung
- melompat
- pemeliharaan
- bahasa
- besar
- Terbaru
- jalankan
- BELAJAR
- pengetahuan
- Tingkat
- Perpustakaan
- memuat
- mesin
- Mesin belajar
- Mesin
- Membuat
- manajer
- Memori
- ML
- model
- model
- modular
- paling
- pindah
- yaitu
- Alam
- jaringan
- Fitur Baru
- node
- buku catatan
- nomor
- Lainnya
- kertas
- bermitra
- prestasi
- bagian
- Platform
- Populer
- mungkin
- primer
- Produk
- Produk
- profil
- memberikan
- RAM
- RE
- Bacaan
- sarankan
- arsip
- menurunkan
- Hasil
- Run
- berjalan
- Tersebut
- terukur
- Skala
- skala
- SDK
- Pencarian
- layanan
- set
- pengaturan
- sharding
- berbagi
- penting
- Ukuran
- So
- Perangkat lunak
- Secara khusus
- kecepatan
- Pengeluaran
- membagi
- Negara
- strategi
- Penyelarasan
- menyediakan
- taktik
- teknik
- uji
- Dunia
- ribuan
- Melalui
- waktu
- Tips
- tips dan trik
- bersama
- Topik
- perdagangan
- Pelatihan
- memahami
- menggunakan
- Penggunaan
- penglihatan
- dalam
- kerja
- bekerja
- dunia
- tahun