Pra-pelatihan model modern sering kali membutuhkan penerapan klaster yang lebih besar untuk mengurangi waktu dan biaya. Di tingkat server, beban kerja pelatihan seperti itu menuntut komputasi yang lebih cepat dan peningkatan alokasi memori. Saat model berkembang menjadi ratusan miliar parameter, mereka memerlukan mekanisme pelatihan terdistribusi yang menjangkau beberapa node (instance).
Pada Oktober 2022, kami meluncurkan Instans Trn2 Amazon EC1, Didukung oleh Pelatihan AWS, yang merupakan akselerator pembelajaran mesin generasi kedua yang dirancang oleh AWS. Instans Trn1 dibuat khusus untuk pelatihan model pembelajaran mendalam berperforma tinggi sambil menawarkan penghematan biaya pelatihan hingga 50% dibandingkan instans berbasis GPU yang sebanding. Untuk mempersingkat waktu pelatihan dari minggu ke hari, atau hari ke jam, dan mendistribusikan tugas pelatihan model besar, kita dapat menggunakan EC2 Trn1 UltraCluster, yang terdiri dari rak instans komputasi Trn1 yang dikemas rapat dan ditempatkan bersama, semuanya saling terhubung oleh jaringan skala petabyte non-pemblokiran. Ini adalah UltraCluster terbesar kami hingga saat ini, menawarkan daya komputasi 6 exaflop sesuai permintaan dengan hingga 30,000 chip Trainium.
Dalam postingan ini, kami menggunakan beban kerja pra-pelatihan model Hugging Face BERT-Large sebagai contoh sederhana untuk menjelaskan cara menggunakan Trn1 UltraClusters.
Trn1 UltraClusters
Trn1 UltraCluster adalah grup penempatan instans Trn1 di pusat data. Sebagai bagian dari satu cluster yang berjalan, Anda dapat menjalankan cluster instance Trn1 dengan akselerator Trainium. Diagram berikut menunjukkan contoh.
Instans UltraClusters dari Trn1 ditempatkan bersama di pusat data, dan saling terhubung menggunakan Adaptor Kain Elastis (EFA), yang merupakan antarmuka jaringan non-pemblokiran skala petabyte, dengan bandwidth jaringan hingga 800 Gbps, yang merupakan dua kali bandwidth yang didukung oleh instans AWS P4d (1.6 Tbps, empat kali lebih besar dengan instans Trn1n mendatang). Antarmuka EFA ini membantu menjalankan beban kerja pelatihan model yang menggunakan Perpustakaan Komunikasi Kolektif Neuron dalam skala besar. Trn1 UltraClusters juga menyertakan layanan penyimpanan yang terhubung ke jaringan seperti Amazon FSx untuk Lustre untuk mengaktifkan akses throughput tinggi ke kumpulan data besar, memastikan kluster beroperasi secara efisien. Trn1 UltraClusters dapat menampung hingga 30,000 perangkat Trainium dan mengirimkan hingga 6 exaflop komputasi dalam satu cluster. EC2 Trn1 UltraClusters menghadirkan hingga 6 exaflops komputasi, secara harfiah superkomputer sesuai permintaan, dengan model penggunaan bayar sesuai penggunaan. Dalam postingan ini, kami menggunakan beberapa alat HPC seperti Slurm untuk meningkatkan UltraCluster dan mengelola beban kerja.
Ikhtisar solusi
AWS menawarkan beragam layanan untuk pelatihan model terdistribusi atau beban kerja inferensi dalam skala besar, termasuk Batch AWS, Layanan Amazon Elastic Kubernetes (Amazon EKS), dan UltraClusters. Posting ini berfokus pada pelatihan model di UltraCluster. Solusi kami menggunakan Kluster Paralel AWS alat manajemen untuk menciptakan infrastruktur dan lingkungan yang diperlukan untuk menjalankan Trn1 UltraCluster. Infrastrukturnya terdiri dari node kepala dan beberapa node komputasi Trn1 dalam virtual private cloud (VPC). Kami menggunakan Slurm sebagai manajemen cluster dan sistem penjadwalan pekerjaan. Diagram berikut mengilustrasikan arsitektur solusi kami.
Untuk detail selengkapnya dan cara menerapkan solusi ini, lihat Latih model di AWS Trn1 ParallelCluster.
Mari kita lihat beberapa langkah penting dari solusi ini:
- Buat VPC dan subnet.
- Konfigurasi armada komputasi.
- Buat kluster.
- Periksa kluster.
- Luncurkan pekerjaan pelatihan Anda.
Prasyarat
Untuk mengikuti posting ini, keakraban luas dengan layanan inti AWS seperti Cloud komputasi elastis Amazon (Amazon EC2) tersirat, dan keakraban dasar dengan pembelajaran mendalam dan PyTorch akan sangat membantu.
Buat VPC dan subnet
Cara mudah untuk membuat VPC dan subnet adalah melalui Cloud Pribadi Virtual Amazon (Amazon VPC) konsol. Instruksi lengkap dapat ditemukan di GitHub. Setelah VPC dan subnet diinstal, Anda perlu mengonfigurasi instance di armada komputasi. Singkatnya, ini dimungkinkan oleh skrip instalasi yang ditentukan oleh CustomActions dalam file YAML yang digunakan untuk membuat ParallelCluster (lihat Buat ParallelCluster). Sebuah ParallelCluster memerlukan VPC yang memiliki dua subnet dan gateway Network Address Translation (NAT), seperti yang ditunjukkan pada diagram arsitektur sebelumnya. VPC ini harus berada di Availability Zone tempat instans Trn1 tersedia. Selain itu, di VPC ini, Anda harus memiliki subnet publik dan subnet pribadi untuk menampung masing-masing node kepala dan node komputasi Trn1. Anda juga memerlukan akses internet gateway NAT, sehingga node komputasi Trn1 dapat mengunduh Neuron AWS paket. Secara umum, node komputasi akan menerima pembaruan untuk paket OS, driver dan runtime Neuron, dan driver EFA untuk pelatihan multi-instance.
Sedangkan untuk node kepala, selain komponen yang disebutkan di atas untuk node komputasi, ia juga menerima kompiler PyTorch-NeuronX dan NeuronX, yang memungkinkan proses kompilasi model di perangkat XLA seperti Trainium.
Konfigurasi armada komputasi
Dalam file YAML untuk membuat Trn1 UltraCluster, InstanceType
ditentukan sebagai trn1.32xlarge. MaxCount
dan MinCount
digunakan untuk menunjukkan rentang ukuran armada komputasi Anda. Anda dapat menggunakan MinCount
untuk menjaga beberapa atau semua instans Trn1 tersedia setiap saat. MinCount
mungkin disetel ke nol sehingga jika tidak ada tugas yang berjalan, instans Trn1 dilepaskan dari klaster ini.
Trn1 juga dapat digunakan dalam UltraCluster dengan banyak antrean. Dalam contoh berikut, hanya ada satu antrean yang disiapkan untuk pengiriman tugas Slurm:
Jika Anda membutuhkan lebih dari satu antrean, Anda dapat menentukan beberapa antrean InstanceType
, masing-masing dengan sendiri MaxCount
, MinCount
, dan Name
:
Di sini, dua antrian disiapkan, sehingga pengguna memiliki fleksibilitas untuk memilih sumber daya untuk pekerjaan Slurm mereka.
Buat kluster
Untuk meluncurkan Trn1 UltraCluster, gunakan yang berikut ini pcluster
perintah dari mana Anda Alat ParallelCluster diinstal:
Kami menggunakan opsi berikut dalam perintah ini:
--cluster-configuration
โ Opsi ini mengharapkan file YAML yang menjelaskan konfigurasi cluster-n
(Atau--cluster-name
) โ Nama kluster ini
Perintah ini membuat klaster Trn1 di akun AWS Anda. Anda dapat memeriksa progres pembuatan cluster di Formasi AWS Cloud menghibur. Untuk informasi lebih lanjut, lihat Menggunakan konsol AWS CloudFormation.
Atau, Anda dapat menggunakan perintah berikut untuk melihat status permintaan Anda:
dan perintah akan menunjukkan status, misalnya:
Berikut ini adalah parameter yang menarik dari output:
- instanceId โ Ini adalah ID instance dari node kepala, yang akan dicantumkan di konsol Amazon EC2
- komputasiFleetStatus โ Atribut ini menunjukkan kesiapan node komputasi
- Tag โ Atribut ini menunjukkan versi dari
pcluster
alat yang digunakan untuk membuat cluster ini
Periksa kluster
Anda dapat menggunakan yang disebutkan di atas pcluster describe-cluster
perintah untuk memeriksa cluster. Setelah cluster dibuat, Anda akan mengamati hal berikut di output:
Pada titik ini, Anda dapat melakukan SSH ke node kepala (diidentifikasi dengan ID instans di konsol Amazon EC2). Berikut ini adalah diagram logika cluster.
Setelah Anda SSH ke node kepala, Anda dapat memverifikasi armada komputasi dan statusnya dengan perintah Slurm seperti sinfo
untuk melihat informasi node untuk sistem. Berikut ini adalah contoh keluaran:
Ini menunjukkan bahwa ada satu antrian seperti yang ditunjukkan oleh satu partisi. Ada 16 node yang tersedia, dan sumber daya dialokasikan. Dari node kepala, Anda dapat SSH ke node komputasi mana pun yang diberikan:
penggunaan exit
untuk kembali ke node kepala.
Demikian juga, Anda dapat SSH menjadi node komputasi dari node komputasi lain. Setiap node komputasi memiliki alat Neuron yang diinstal, seperti neuron-top
. Anda dapat memohon neuron-top
selama menjalankan skrip pelatihan untuk memeriksa pemanfaatan NeuronCore di setiap node.
Luncurkan pekerjaan pelatihan Anda
Kami menggunakan Memeluk Wajah BERT-Tutorial Pretraining Besar sebagai contoh untuk dijalankan di cluster ini. Setelah data pelatihan dan skrip diunduh ke cluster, kami menggunakan pengontrol Slurm untuk mengelola dan mengatur beban kerja kami. Kami mengirimkan pekerjaan pelatihan dengan sbatch
memerintah. Skrip shell memanggil skrip Python melalui neuron_parallel_compile
API untuk mengompilasi model menjadi grafik tanpa menjalankan pelatihan penuh. Lihat kode berikut:
Kami menggunakan opsi berikut dalam perintah ini:
--exclusive
โ Pekerjaan ini akan menggunakan semua node dan tidak akan berbagi node dengan pekerjaan lain saat menjalankan pekerjaan saat ini.--nodes
โ Jumlah node untuk pekerjaan ini.--wrap
โ Ini mendefinisikan string perintah yang dijalankan oleh pengontrol Slurm. Dalam hal ini, itu hanya mengkompilasi model secara paralel menggunakan semua node.
Setelah model berhasil dikompilasi, Anda dapat memulai tugas pelatihan penuh dengan perintah berikut:
Perintah ini akan meluncurkan tugas pelatihan untuk model Hugging Face BERT-Large. Dengan 16 node Trn1.32xlarge, Anda dapat mengharapkannya selesai dalam waktu kurang dari 8 jam.
Pada titik ini, Anda dapat menggunakan perintah Slurm seperti squeue
untuk memeriksa pekerjaan yang diserahkan. Contoh keluarannya adalah sebagai berikut:
Output ini menunjukkan pekerjaan sedang berjalan (R
) pada 16 node komputasi.
Saat pekerjaan sedang berjalan, keluaran ditangkap dan ditambahkan dalam file log Slurm. Dari terminal node kepala, Anda dapat memeriksanya secara real time.
Juga, di direktori yang sama dengan file log Slurm, ada direktori terkait untuk pekerjaan ini. Direktori ini mencakup yang berikut (misalnya):
Direktori ini dapat diakses oleh semua node komputasi. results.json
menangkap metadata dari tugas khusus ini, seperti konfigurasi model, ukuran kumpulan, langkah total, langkah akumulasi gradien, dan nama set data pelatihan. Pos pemeriksaan model dan log keluaran per setiap node komputasi juga direkam dalam direktori ini.
Pertimbangkan skalabilitas cluster
Dalam UltraCluster Trn1, beberapa instans Trn1 yang saling terhubung menjalankan beban kerja pelatihan model besar secara paralel dan mengurangi total waktu komputasi atau waktu untuk konvergensi. Ada dua ukuran skalabilitas cluster: penskalaan yang kuat dan penskalaan yang lemah. Biasanya, untuk pelatihan model, yang diperlukan adalah mempercepat proses pelatihan, karena biaya penggunaan ditentukan oleh throughput sampel untuk putaran pembaruan gradien. Penskalaan yang kuat mengacu pada skenario di mana ukuran masalah total tetap sama dengan peningkatan jumlah prosesor, penskalaan yang kuat adalah ukuran penting dari skalabilitas untuk pelatihan model. Dalam mengevaluasi penskalaan yang kuat, (yaitu dampak paralelisasi), kami ingin menjaga ukuran kumpulan global tetap sama dan melihat berapa banyak waktu yang dibutuhkan untuk konvergensi. Dalam skenario seperti itu, kita perlu menyesuaikan langkah mikro akumulasi gradien sesuai dengan jumlah node komputasi. Ini dicapai dengan yang berikut dalam skrip shell pelatihan run_dp_bert_large_hf_pretrain_bf16_s128.sh
:
Sebaliknya, jika Anda ingin mengevaluasi berapa banyak lagi beban kerja yang dapat dijalankan pada waktu yang tetap dengan menambahkan lebih banyak node, gunakan penskalaan lemah untuk mengukur skalabilitas. Dalam penskalaan yang lemah, ukuran masalah meningkat pada tingkat yang sama dengan jumlah NeuronCoress, sehingga jumlah pekerjaan per NeuronCores tetap sama. Untuk mengevaluasi penskalaan yang lemah, atau efek penambahan lebih banyak node pada peningkatan beban kerja, cukup hapus baris di atas dari skrip pelatihan, dan pertahankan jumlah langkah untuk akumulasi gradien konstan dengan nilai default (32) yang disediakan dalam skrip pelatihan.
Evaluasi hasil Anda
Kami menyediakan beberapa hasil benchmark di Halaman kinerja neuron untuk menunjukkan efek skala. Data menunjukkan manfaat menggunakan beberapa instans untuk memparalelkan tugas pelatihan untuk banyak model besar yang berbeda untuk dilatih dalam skala besar.
Bersihkan infrastruktur Anda
Untuk menghapus semua infrastruktur UltraCluster ini, gunakan pcluster
perintah untuk menghapus cluster dan sumber dayanya:
Kesimpulan
Dalam postingan ini, kita membahas bagaimana menskalakan tugas pelatihan Anda di Trn1-UltraCluster, yang didukung oleh akselerator Trainium di AWS, mengurangi waktu untuk melatih model. Kami juga menyediakan link ke Repositori sampel neuron, yang berisi instruksi tentang cara menerapkan tugas pelatihan terdistribusi untuk model BERT-Large. Trn1-UltraCluster menjalankan beban kerja pelatihan terdistribusi untuk melatih model deep learning ultra-besar dalam skala besar. Penyiapan pelatihan terdistribusi menghasilkan konvergensi model yang jauh lebih cepat dibandingkan dengan pelatihan pada satu instans Trn1.
Untuk mempelajari selengkapnya tentang cara memulai instans Trn1 yang didukung Trainium, kunjungi dokumentasi neuron.
Tentang Penulis
KC Tung adalah Arsitek Solusi Senior di AWS Annapurna Labs. Dia berspesialisasi dalam pelatihan dan penerapan model deep learning berskala besar di cloud. Dia memiliki gelar Ph.D. dalam biofisika molekuler dari University of Texas Southwestern Medical Center di Dallas. Dia telah berbicara di AWS Summits dan AWS Reinvent. Hari ini dia membantu pelanggan melatih dan menerapkan model PyTorch dan TensorFlow besar di AWS cloud. Dia adalah penulis dua buku: Pelajari Perusahaan TensorFlow dan TensorFlow 2 Referensi Saku.
Jeffrey Huynh adalah Insinyur Utama di AWS Annapurna Labs. Dia bersemangat membantu pelanggan menjalankan pelatihan dan beban kerja inferensi mereka di perangkat akselerator Trainium dan Inferentia menggunakan SDK Neuron AWS. Dia adalah alumni Caltech/Stanford dengan gelar Fisika dan EE. Dia suka berlari, tenis, memasak, dan membaca tentang sains dan teknologi.
Shruti Koparkar adalah Manajer Pemasaran Produk Senior di AWS. Dia membantu pelanggan mengeksplorasi, mengevaluasi, dan mengadopsi infrastruktur komputasi yang dipercepat EC2 untuk kebutuhan pembelajaran mesin mereka.
- Konten Bertenaga SEO & Distribusi PR. Dapatkan Amplifikasi Hari Ini.
- Platoblockchain. Intelijen Metaverse Web3. Pengetahuan Diperkuat. Akses Di Sini.
- Sumber: https://aws.amazon.com/blogs/machine-learning/scaling-large-language-model-llm-training-with-amazon-ec2-trn1-ultraclusters/
- 000
- 1
- 10
- 100
- 2022
- 7
- 9
- a
- Tentang Kami
- atas
- dipercepat
- akselerator
- akselerator
- mengakses
- dapat diakses
- Menurut
- Akun
- akumulasi
- dicapai
- di seluruh
- tambahan
- alamat
- mengambil
- Setelah
- Semua
- dialokasikan
- alokasi
- Amazon
- Amazon EC2
- jumlah
- dan
- Lain
- api
- arsitektur
- penulis
- tersedianya
- tersedia
- AWS
- Formasi AWS Cloud
- kembali
- Bandwidth
- dasar
- karena
- makhluk
- patokan
- manfaat
- miliaran
- Biofisika
- Buku-buku
- secara singkat
- membawa
- luas
- dibangun di
- Panggilan
- menangkap
- kasus
- pusat
- memeriksa
- Keripik
- Pilih
- awan
- Kelompok
- kode
- Kolektif
- Komunikasi
- sebanding
- dibandingkan
- lengkap
- komponen
- komputasi
- menghitung
- komputasi
- konfigurasi
- konsul
- konstan
- mengandung
- pengawas
- Konvergensi
- Core
- Sesuai
- Biaya
- membuat
- dibuat
- menciptakan
- membuat
- penciptaan
- terbaru
- pelanggan
- Dallas
- data
- Data Center
- kumpulan data
- Tanggal
- Hari
- mendalam
- belajar mendalam
- Default
- Mendefinisikan
- menyampaikan
- Permintaan
- mendemonstrasikan
- menunjukkan
- menyebarkan
- dikerahkan
- penyebaran
- dirancang
- rincian
- ditentukan
- Devices
- berbeda
- dibahas
- mendistribusikan
- didistribusikan
- pelatihan terdistribusi
- turun
- Download
- pengemudi
- selama
- setiap
- efek
- efisien
- aktif
- memungkinkan
- insinyur
- memastikan
- Lingkungan Hidup
- mengevaluasi
- mengevaluasi
- contoh
- mengharapkan
- mengharapkan
- Menjelaskan
- menyelidiki
- kain
- Menghadapi
- Keakraban
- lebih cepat
- File
- tetap
- ARMADA KAPAL
- keluwesan
- berfokus
- mengikuti
- berikut
- berikut
- ditemukan
- dari
- penuh
- pintu gerbang
- Umum
- generasi
- mendapatkan
- pergi
- diberikan
- Aksi
- grafik
- lebih besar
- Kelompok
- Tumbuh
- tangan
- kepala
- membantu
- bermanfaat
- membantu
- membantu
- High
- kinerja tinggi
- memegang
- tuan rumah
- JAM
- Seterpercayaapakah Olymp Trade? Kesimpulan
- How To
- HPC
- HTML
- HTTPS
- Ratusan
- ID
- diidentifikasi
- Dampak
- tersirat
- penting
- in
- memasukkan
- termasuk
- Termasuk
- Pada meningkat
- Meningkatkan
- menunjukkan
- menunjukkan
- Tak terbatas
- informasi
- Infrastruktur
- diinstal
- contoh
- instruksi
- saling berhubungan
- bunga
- Antarmuka
- interface
- Internet
- Akses internet
- memanggil
- IT
- jan
- Pekerjaan
- Jobs
- json
- Menjaga
- pemeliharaan
- kunci
- Labs
- bahasa
- besar
- lebih besar
- terbesar
- jalankan
- diluncurkan
- BELAJAR
- pengetahuan
- Tingkat
- perpustakaan
- baris
- LINK
- Daftar
- LLM
- logis
- melihat
- mesin
- Mesin belajar
- terbuat
- mengelola
- pengelolaan
- manajer
- banyak
- Marketing
- mengukur
- ukuran
- mekanisme
- medis
- Memori
- Metadata
- model
- model
- molekuler
- lebih
- beberapa
- nama
- perlu
- Perlu
- kebutuhan
- jaringan
- jaringan
- simpul
- node
- jumlah
- mengamati
- Oktober
- menawarkan
- Penawaran
- ONE
- beroperasi
- pilihan
- Opsi
- urutan
- OS
- Lainnya
- sendiri
- paket
- penuh sesak
- Paralel
- parameter
- bagian
- tertentu
- bergairah
- prestasi
- Fisika
- plato
- Kecerdasan Data Plato
- Data Plato
- Titik
- mungkin
- Pos
- kekuasaan
- didukung
- Utama
- swasta
- Masalah
- proses
- prosesor
- Produk
- Kemajuan
- memberikan
- disediakan
- publik
- tujuan
- Ular sanca
- pytorch
- Lereng
- jarak
- Penilaian
- Kesiapan
- Bacaan
- nyata
- real-time
- alasan
- menerima
- menerima
- menurunkan
- mengurangi
- mengacu
- wilayah
- dirilis
- menghapus
- permintaan
- membutuhkan
- membutuhkan
- Sumber
- Hasil
- putaran
- Run
- berjalan
- sama
- Tabungan
- Skalabilitas
- Skala
- skala
- skenario
- Ilmu
- Sains dan Teknologi
- script
- Kedua
- Generasi kedua
- senior
- Layanan
- set
- penyiapan
- Share
- Kulit
- ditunjukkan
- Pertunjukkan
- Sederhana
- hanya
- tunggal
- Ukuran
- So
- larutan
- beberapa
- rentang
- spesialisasi
- ditentukan
- kecepatan
- Berputar
- awal
- mulai
- Negara
- Status
- Tangga
- penyimpanan
- kuat
- pengajuan
- menyerahkan
- disampaikan
- subnet
- subnet
- berhasil
- seperti itu
- Summits
- superkomputer
- Didukung
- sistem
- Dibutuhkan
- Teknologi
- tensorflow
- terminal
- texas
- Grafik
- mereka
- dengan demikian
- Melalui
- keluaran
- waktu
- kali
- untuk
- hari ini
- alat
- alat
- Total
- Pelatihan VE
- Pelatihan
- Terjemahan
- khas
- Ubuntu
- universitas
- mendatang
- Pembaruan
- URL
- penggunaan
- menggunakan
- Pengguna
- nilai
- variasi
- memeriksa
- versi
- melalui
- View
- maya
- minggu
- yang
- sementara
- lebar
- akan
- dalam
- tanpa
- Kerja
- akan
- membungkus
- yaml
- Kamu
- Anda
- zephyrnet.dll
- nol
- zona