Bagaimana Latent Space menggunakan pustaka paralelisme model Amazon SageMaker untuk mendorong batasan transformator skala besar

Node Sumber: 1204406

Blog ini disusun bersama Sarah Jane Hong CSO, Darryl Barnhart CTO, dan Ian Thompson CEO of Latent Space dan Prem Ranga dari AWS.

Ruang laten adalah representasi tersembunyi dari ide-ide abstrak yang dipelajari oleh model pembelajaran mesin (ML). Misalnya, "anjing", "bunga", atau "pintu" adalah konsep atau lokasi di ruang laten. Di Ruang Laten, kami sedang mengerjakan mesin yang memungkinkan Anda memanipulasi dan menjelajahi ruang ini dengan petunjuk bahasa dan visual. Tim Latent Space berasal dari dua bidang yang sudah lama memiliki sedikit tumpang tindih: grafik dan pemrosesan bahasa alami (NLP). Secara tradisional, modalitas gambar dan teks telah ditangani secara terpisah, masing-masing dengan riwayat rekayasa fitur yang kompleks, mahal, dan rapuh. Tugas NLP seperti memahami dokumen atau menjawab pertanyaan biasanya memiliki sedikit kesamaan dengan tugas-tugas penglihatan seperti pemahaman atau rendering adegan, dan biasanya kami menggunakan pendekatan dan model yang sangat berbeda untuk setiap tugas. Tapi ini berubah dengan cepat.

Penggabungan modalitas dalam satu ruang laten bersama membuka aplikasi kreatif dan komersial generasi baru, dari game hingga pemahaman dokumen. Namun membuka aplikasi baru ini dalam satu model membuka tantangan penskalaan baru, seperti yang disoroti dalam "Pelajaran Pahit" oleh Richard Sutton, dan pekerjaan menarik dalam beberapa tahun terakhir tentang undang-undang penskalaan. Untuk mewujudkannya, Latent Space sedang mengerjakan penelitian mutakhir untuk menggabungkan modalitas ini dalam satu model, tetapi juga untuk mengukur dan melakukannya secara efisien. Di sinilah model paralelisme masuk.

Amazon SageMakerPemartisian model otomatis yang unik dan pendekatan pemipaan yang efisien memungkinkan penerapan paralelisme model dengan sedikit upaya rekayasa, dan kami meningkatkan pelatihan model kami melebihi 1 miliar parameter (kami menggunakan p4d.24xlarge instans A100), yang merupakan persyaratan penting bagi kami. Selain itu, kami mengamati bahwa saat pelatihan dengan 16 node, delapan penyiapan pelatihan GPU dengan pustaka paralelisme model SageMaker, kami mencatat peningkatan efisiensi sebesar 38% dibandingkan dengan pelatihan yang dijalankan sebelumnya.

Tantangan dengan melatih transformer skala besar

Di Latent Space, kami menggabungkan bahasa dan visi dalam model transformator dengan miliaran parameter untuk mendukung kasus penggunaan "di luar distribusi" dari imajinasi pengguna atau yang akan terjadi di dunia nyata tetapi tidak dalam data pelatihan kami. Kami menangani tantangan yang melekat dalam penskalaan ke miliaran parameter dan seterusnya dengan dua cara berbeda:

Teknik pengambilan informasi telah lama menjadi komponen kunci mesin pencari dan tugas QA. Baru-baru ini, kemajuan menarik telah dibuat dengan menggabungkan teknik IR klasik dengan transformer modern, khususnya untuk tugas menjawab pertanyaan di mana model dilatih bersama dengan neural retriever yang belajar untuk mengambil dokumen yang relevan untuk membantu menjawab pertanyaan. Untuk gambaran umum, lihat karya terbaru dari FAIR di Retrieval Augmented Generation: Menyederhanakan pembuatan model pemrosesan bahasa alami yang cerdas dan Fusion-in-Decoder, Otak Google DUNIA, dan milik Nvidia Retriever saraf untuk menjawab pertanyaan.

Meskipun teknik pengambilan-augmented membantu biaya dan efisiensi, kami masih tidak dapat menyesuaikan model pada satu GPU untuk model terbesar kami. Ini berarti kita perlu menggunakan model paralelisme untuk melatihnya. Namun, karena sifat arsitektur pengambilan kami, merancang pemisahan model kami menjadi tantangan karena saling ketergantungan antara konteks yang diambil di seluruh input pelatihan. Selain itu, meskipun kita menentukan bagaimana kita membagi model kita, memperkenalkan paralelisme model adalah tugas teknik yang signifikan untuk kita lakukan secara manual di seluruh siklus hidup penelitian dan pengembangan kita.

Pustaka paralelisme model SageMaker

Paralelisme model adalah proses memisahkan model di antara beberapa perangkat atau node (seperti instance yang dilengkapi GPU) dan membuat pipeline yang efisien untuk melatih model di seluruh perangkat ini guna memaksimalkan pemanfaatan GPU. Itu model perpustakaan paralelisme di SageMaker membuat paralelisme model lebih mudah diakses dengan menyediakan pemisahan model otomatis, juga disebut sebagai pemartisian model otomatis dan penjadwalan jalur pipa yang canggih. Algoritme pemisahan model dapat mengoptimalkan kecepatan atau konsumsi memori. Pustaka menggunakan algoritme partisi yang menyeimbangkan memori, meminimalkan komunikasi antar perangkat, dan mengoptimalkan kinerja.

Partisi model otomatis

Untuk kasus penggunaan PyTorch kami, pustaka paralel model secara internal menjalankan langkah penelusuran (pada langkah pelatihan pertama) yang menyusun grafik model dan menentukan bentuk tensor dan parameter. Kemudian membangun pohon, yang terdiri dari file bersarang nn.Module objek dalam model, serta data tambahan yang dikumpulkan dari pelacakan, seperti jumlah yang disimpan nn.Parameters, dan waktu proses untuk masing-masing nn.Module.

Library kemudian melintasi pohon ini dari root dan menjalankan algoritme partisi yang menyeimbangkan beban komputasi dan penggunaan memori, serta meminimalkan komunikasi antar instance. Jika beberapa nn.Modules berbagi nn.Parameter yang sama, modul ini ditempatkan pada perangkat yang sama untuk menghindari pemeliharaan beberapa versi dari parameter yang sama. Setelah keputusan partisi dibuat, modul dan bobot yang ditetapkan dimuat ke perangkat mereka.

Penjadwalan jalur pipa

Fitur inti lain dari perpustakaan paralel model terdistribusi SageMaker adalah jalur pipeline, yang menentukan urutan penghitungan dibuat dan data diproses di seluruh perangkat selama pelatihan model. Pipelining didasarkan pada pemisahan batch mini menjadi microbatch, yang dimasukkan ke pipeline pelatihan satu per satu dan mengikuti jadwal pengoperasian yang ditentukan oleh runtime library.

Pipeline microbatch memastikan bahwa semua GPU digunakan sepenuhnya, yang merupakan sesuatu yang harus kami bangun sendiri, tetapi dengan pustaka paralelisme model, hal ini terjadi dengan rapi di belakang layar. Terakhir, kita bisa gunakan AmazonFSx, yang penting untuk memastikan kecepatan baca kami cepat mengingat jumlah file yang sedang dibaca selama pelatihan model multimodal dengan pengambilan.

Arsitektur pelatihan

Diagram berikut menunjukkan bagaimana kami menyiapkan arsitektur pelatihan kami. Tujuan utama kami adalah meningkatkan kecepatan pelatihan dan mengurangi biaya. Transformator gambar dan bahasa yang kami latih sangat kompleks, dengan jumlah lapisan dan bobot yang sangat besar di dalamnya, menjalankan hingga miliaran parameter, yang semuanya membuatnya tidak dapat dimasukkan ke dalam memori satu node. Setiap node membawa subset model, di mana data mengalir dan transformasi dibagikan dan dikompilasi. Kami menyiapkan 16 p4d.24xlarge instance, masing-masing dengan delapan GPU menggunakan representasi arsitektur berikut:

Saat kami meningkatkan model kami, tren yang umum adalah memiliki semua yang disimpan dalam bobot jaringan. Namun, untuk tujuan praktis, kami ingin menambah model kami untuk mempelajari cara mencari konteks yang relevan untuk membantu tugas rendering. Hal ini memungkinkan kami untuk menekan biaya penayangan tanpa mengurangi kualitas gambar. Kami menggunakan model NLP berbasis transformator besar dan seperti yang disebutkan sebelumnya, kami mengamati peningkatan efisiensi pelatihan sebesar 38% dengan pustaka paralelisme model SageMaker seperti yang ditunjukkan berikut ini:

  • Kita membutuhkan pengurangan allreduce untuk setiap komputasi dalam kasus paralelisme tingkat tensor. Ini membutuhkan langkah-langkah paralel O (log_2 n). Yaitu n mesin yang mengambil langkah O (n), untuk operasi total O (n log_2 n).
  • Untuk paralelisme pipeline, kami memerlukan O (1) langkah paralel untuk meneruskan data ke pipeline
  • Diberikan 16 mesin dengan delapan GPU, kami memiliki biaya O (1) untuk paralel pipa, dan biaya O (log_2 (8)) = O (3) untuk paralel model yang bijaksana.
  • Dalam kasus ini, kami melihat bahwa biaya jaringan dikurangi menjadi 1/3 dengan beralih ke paralel pipa yang kami gunakan dengan paralelisme model SageMaker, dan keseluruhan biaya pelatihan berkurang menjadi 1/2 + 1/2 * 1 / log_2 (16 ) = 0.625 dari biaya awal yang mengarah ke peningkatan efisiensi yang sesuai.

Secara umum, ketika kebutuhan memerlukan pelatihan terdistribusi (masalah dengan ukuran model penskalaan atau data pelatihan), kita dapat mengikuti serangkaian praktik terbaik untuk menentukan pendekatan mana yang paling berhasil.

Praktik terbaik untuk pelatihan terdistribusi

Berdasarkan pengalaman kami, kami menyarankan untuk memulai dengan pendekatan paralel data terdistribusi. Paralelisme data terdistribusi seperti file SageMaker mendistribusikan pustaka paralel data menyelesaikan sebagian besar masalah jaringan dengan replika model, jadi Anda harus memasukkan model ke dalam jumlah node terkecil, lalu mereplikasi untuk menskalakan ukuran batch sesuai kebutuhan.

Jika Anda kehabisan memori selama pelatihan, seperti yang kami lakukan dalam skenario ini, Anda mungkin ingin beralih ke pendekatan paralel model. Namun, pertimbangkan alternatif berikut sebelum mencoba pelatihan model paralel:

  • Pada perangkat keras yang dilengkapi NVIDIA Tensor Core, gunakan pelatihan presisi campuran untuk mempercepat dan mengurangi konsumsi memori.
  • Kurangi ukuran tumpukan (atau kurangi resolusi gambar atau panjang urutan NLP, jika memungkinkan).

Selain itu, kami lebih memilih desain model yang tidak memiliki normalisasi batch seperti yang dijelaskan di Pengenalan gambar skala besar berkinerja tinggi tanpa normalisasi. Jika tidak dapat dihindari, pastikan normalisasi batch disinkronkan di seluruh perangkat. Saat Anda menggunakan pelatihan terdistribusi, batch Anda dibagi di seluruh GPU, jadi statistik batch yang akurat memerlukan sinkronisasi di semua perangkat. Tanpa ini, normalisasi akan meningkatkan kesalahan dan dengan demikian mengganggu konvergensi.

Mulailah dengan pelatihan model paralel jika Anda memiliki batasan berikut:

  • Model Anda tidak muat di satu perangkat
  • Karena ukuran model Anda, Anda menghadapi keterbatasan dalam memilih ukuran batch yang lebih besar, seperti jika bobot model Anda menghabiskan sebagian besar memori GPU dan Anda terpaksa memilih ukuran batch yang lebih kecil dan suboptimal

Saat mengoptimalkan kinerja, lakukan hal berikut:

  • Gunakan pipelining untuk komunikasi antar node guna meminimalkan latensi dan meningkatkan throughput
  • Jaga saluran pipa sesingkat mungkin untuk meminimalkan gelembung apa pun. Jumlah mikrobatch harus disetel untuk menyeimbangkan efisiensi komputasi dengan ukuran gelembung, dan setidaknya panjang pipa. Jika perlu, Anda dapat membentuk microbatch di level token seperti yang dijelaskan di TeraPipe: Paralelisme Pipeline Level Token untuk melatih model bahasa skala besar

Saat mengoptimalkan biaya, gunakan Instans Spot yang dikelola SageMaker untuk pelatihan. Ini dapat mengoptimalkan biaya model pelatihan hingga 90% dibandingkan instans Sesuai Permintaan. SageMaker mengelola interupsi Spot atas nama Anda.

Faktor lain yang perlu dipertimbangkan:

  • Di dalam node ketika ada interkoneksi cepat, itu lebih bernuansa. Jika ada kapasitas jaringan intra-node yang cukup, perombakan data untuk komputasi yang lebih optimal dapat menunjukkan manfaat.
  • Jika aktivasi jauh lebih besar daripada tensor berat, pengoptimal dengan pecahan juga dapat membantu. Silakan merujuk ke Nol lebih lanjut.

Tabel berikut menyediakan beberapa skenario peningkatan skala pelatihan umum dan bagaimana Anda dapat mengonfigurasinya di AWS.

Contoh Kapan itu berlaku? Solusi
Penskalaan dari satu GPU ke banyak GPU Jika jumlah data pelatihan atau ukuran model terlalu besar Ubah ke instance multi-GPU seperti p3.16xlarge, yang memiliki delapan GPU, dengan data dan pemrosesan dibagi di delapan GPU, dan menghasilkan percepatan yang hampir linier dalam waktu yang diperlukan untuk melatih model Anda.
Penskalaan dari satu instance ke beberapa instance Ketika kebutuhan penskalaan melampaui perubahan ukuran instance Skala jumlah instance dengan fungsi estimator SageMaker Python SDK dengan menyetel instance_type Anda ke p3.16xlarge dan instance_count ke 2. Alih-alih delapan GPU pada satu p3.16xlarge, Anda memiliki 16 GPU di dua instance identik. Pertimbangkan untuk menggunakan SageMaker mendistribusikan pustaka paralel data.
Memilih pendekatan paralel model untuk pelatihan Saat mengalami kesalahan memori selama pelatihan Beralih ke pendekatan paralel model menggunakan SageMaker mendistribusikan model perpustakaan paralel.
Performa jaringan untuk komunikasi antar node Untuk pelatihan terdistribusi dengan banyak instance (misalnya, komunikasi antara node dalam cluster saat melakukan operasi AllReduce) Instans Anda harus berada di Wilayah yang sama dan Availability Zone yang sama. Saat Anda menggunakan SageMaker Python SDK, ini ditangani untuk Anda. Data pelatihan Anda juga harus berada di Availability Zone yang sama. Pertimbangkan untuk menggunakan SageMaker mendistribusikan pustaka paralel data.
GPU, jaringan, dan Penyimpanan yang dioptimalkan Untuk kebutuhan pelatihan terdistribusi skala besar Jenis instans p4d.24xlarge dirancang untuk penyimpanan lokal yang cepat dan bidang belakang jaringan yang cepat hingga 400 gigabit, dan kami sangat merekomendasikannya sebagai opsi yang paling berkinerja untuk pelatihan terdistribusi.

Kesimpulan

Dengan model perpustakaan paralel di SageMaker, kami mendapatkan banyak manfaat, seperti pemartisian model otomatis dan pemipaan yang efisien. Dalam postingan ini, kami membagikan tantangan kami dengan kasus penggunaan ML kami, pertimbangan kami tentang pendekatan pelatihan yang berbeda, dan cara kami menggunakan perpustakaan paralelisme model Amazon SageMaker untuk mempercepat pelatihan kami. Yang terbaik dari semuanya, kini hanya perlu beberapa jam untuk mengadopsi praktik terbaik untuk paralelisme model dan peningkatan performa yang dijelaskan di sini. Jika postingan ini membantu Anda atau menginspirasi Anda untuk memecahkan masalah, kami akan senang mendengarnya! Silakan bagikan komentar dan umpan balik Anda.

Referensi

Untuk informasi lebih lanjut, silakan lihat berikut ini:


Tentang Penulis

Prem Ranga adalah Arsitek Solusi Perusahaan yang berbasis di Atlanta, GA. Dia adalah bagian dari Komunitas Bidang Teknis Machine Learning dan suka bekerja dengan pelanggan dalam perjalanan ML dan AI mereka. Prem sangat menyukai robotika, adalah peneliti kendaraan otonom, dan juga membangun Beer Pours yang dikendalikan Alexa di Houston dan lokasi lainnya.

Sarah Jane Hong adalah salah satu pendiri dan Chief Science Officer di Latent Space. Latar belakangnya terletak di persimpangan interaksi manusia-komputer dan pembelajaran mesin. Dia sebelumnya memimpin penelitian NLP di Sonar (diakuisisi oleh Marchex), yang melayani bisnis di ruang percakapan AI. Dia juga merupakan pengembang AR / VR yang terhormat, telah menerima penghargaan dan fellowship dari Oculus, Mozilla Mixed Reality, dan Microsoft Hololens.

Darryl Barnhart adalah salah satu pendiri dan Chief Technology Officer di Latent Space. Dia adalah pengembang berpengalaman dengan pengalaman dalam akselerasi GPU, grafik komputer, data skala besar, dan pembelajaran mesin. Kesukaan lainnya termasuk matematika, pengembangan game, dan studi informasi.

Ian Thompson adalah pendiri dan CEO di Latent Space. Ian adalah seorang insinyur dan peneliti yang terinspirasi oleh "kemungkinan yang berdekatan" - teknologi yang akan berdampak besar pada kehidupan kita. Saat ini berfokus pada penyederhanaan dan penskalaan pembelajaran representasi multimodal untuk membantu membangun AI yang aman dan kreatif. Dia sebelumnya membantu membangun perusahaan dalam grafik / realitas virtual (AltspaceVR, diakuisisi oleh Microsoft) dan pendidikan / NLP (HSE).

Sumber: https://aws.amazon.com/blogs/machine-learning/how-latent-space-used-the-amazon-sagemaker-model-parallelism-library-to-push-the-frontiers-of-large- skala-transformer /

Stempel Waktu:

Lebih dari Blog Pembelajaran Mesin AWS