Maksimalkan kinerja dan kurangi biaya pelatihan deep learning Anda dengan AWS Trainium dan Amazon SageMaker

Maksimalkan kinerja dan kurangi biaya pelatihan deep learning Anda dengan AWS Trainium dan Amazon SageMaker

Node Sumber: 2010875

Saat ini, puluhan ribu pelanggan membuat, melatih, dan menerapkan model machine learning (ML) menggunakan Amazon SageMaker untuk memberdayakan aplikasi yang memiliki potensi untuk menemukan kembali bisnis dan pengalaman pelanggan mereka. Model ML ini telah meningkat dalam ukuran dan kompleksitas selama beberapa tahun terakhir, yang menghasilkan akurasi canggih di berbagai tugas dan juga mendorong waktu untuk berlatih dari hari ke minggu. Akibatnya, pelanggan harus menskalakan model mereka di ratusan hingga ribuan akselerator, yang membuatnya lebih mahal untuk dilatih.

SageMaker adalah layanan ML terkelola sepenuhnya yang membantu developer dan data scientist dengan mudah membangun, melatih, dan menerapkan model ML. SageMaker telah memberikan pilihan penawaran komputasi terluas dan terdalam yang menampilkan akselerator perangkat keras untuk pelatihan ML, termasuk G5 (Nvidia A10G) contoh dan P4d (Nvidia A100) contoh.

Kebutuhan komputasi yang terus meningkat menuntut daya pemrosesan yang lebih cepat dan lebih hemat biaya. Untuk semakin mengurangi waktu pelatihan model dan memungkinkan praktisi ML melakukan iterasi lebih cepat, AWS telah berinovasi di seluruh chip, server, dan konektivitas pusat data. Mesin virtual Trn1 baru didukung oleh Pelatihan AWS chip menawarkan kinerja harga terbaik dan pelatihan model ML tercepat di AWS, memberikan biaya hingga 50% lebih rendah untuk melatih model pembelajaran mendalam melalui instans berbasis GPU yang sebanding tanpa penurunan akurasi.

Dalam postingan ini, kami menunjukkan bagaimana Anda dapat memaksimalkan kinerja dan mengurangi biaya menggunakan instans Trn1 dengan SageMaker.

Ikhtisar solusi

Tugas pelatihan SageMaker mendukung instans ml.trn1, didukung oleh chip Trainium, yang dibuat khusus untuk aplikasi pelatihan ML berperforma tinggi di cloud. Anda dapat menggunakan instans ml.trn1 di SageMaker untuk melatih pemrosesan bahasa alami (NLP), computer vision, dan model pemberi rekomendasi di seluruh kumpulan aplikasi yang luas, seperti pengenalan ucapan, rekomendasi, deteksi penipuan, klasifikasi gambar dan video, serta perkiraan. Instans ml.trn1 menampilkan hingga 16 chip Trainium, yang merupakan chip ML generasi kedua yang dibuat oleh AWS setelah Inferensi AWS. Instance ml.trn1 adalah yang pertama Cloud komputasi elastis Amazon (Amazon EC2) dengan bandwidth jaringan hingga 800 Gbps dari Elastic Fabric Adapter (EFA). Untuk paralelisme data dan model yang efisien, setiap instans ml.trn1.32xl memiliki memori bandwidth tinggi sebesar 512 GB, memberikan hingga 3.4 petaflop daya komputasi FP16/BF16, dan dilengkapi NeuronLink, interkoneksi intra-instans, bandwidth tinggi, dan nonblocking .

Trainium tersedia dalam dua konfigurasi dan dapat digunakan di Wilayah AS Timur (Virginia U.) dan AS Barat (Oregon).

Tabel berikut meringkas fitur instans Trn1.

Ukuran Instance pelatihan
Akselerator
Akselerator
Memori
(GB)
vCPU Contoh
Memori
(GiB)
jaringan
Bandwidth
(Gbps)
EFA dan
RDMA
Bantuan
trn1.2xbesar 1 32 8 32 Sampai 12.5 Tidak
trn1.32xbesar 16 512 128 512 800 Yes
trn1n.32xlarge (segera hadir) 16 512 128 512 1600 Yes

Mari pahami cara menggunakan Trainium dengan SageMaker dengan contoh sederhana. Kami akan melatih model klasifikasi teks dengan pelatihan SageMaker dan PyTorch menggunakan Hugging Face Transformers Library.

Kami menggunakan kumpulan data Ulasan Amazon, yang terdiri dari ulasan dari amazon.com. Data mencakup periode 18 tahun, terdiri dari sekitar 35 juta ulasan hingga Maret 2013. Ulasan mencakup informasi produk dan pengguna, peringkat, dan ulasan plaintext. Kode berikut adalah contoh dari AmazonPolarity set tes:

{
title':'Great CD', 'content':"My lovely Pat has one of the GREAT voices of her generation. I have listened to this CD for YEARS and I still LOVE IT. When I'm in a good mood it makes me feel better. A bad mood just evaporates like sugar in the rain. This CD just oozes LIFE. Vocals are jusat STUUNNING and lyrics just kill. One of life's hidden gems. This is a desert isle CD in my book. Why she never made it big is just beyond me. Everytime I play this, no matter black, white, young, old, male, female EVERYBODY says one thing ""Who was that singing ?""", 'label':1
}

Untuk posting ini, kami hanya menggunakan bidang konten dan label. Bidang konten adalah ulasan teks bebas, dan bidang label adalah nilai biner yang masing-masing berisi 1 atau 0 untuk ulasan positif atau negatif.

Untuk algoritme kami, kami menggunakan BERT, model transformator yang dilatih sebelumnya pada korpus besar data bahasa Inggris dengan cara yang diawasi sendiri. Model ini terutama ditujukan untuk menyempurnakan tugas-tugas yang menggunakan seluruh kalimat (berpotensi disamarkan) untuk membuat keputusan, seperti klasifikasi urutan, klasifikasi token, atau menjawab pertanyaan.

Detail implementasi

Mari kita mulai dengan melihat lebih dekat berbagai komponen yang terlibat dalam pelatihan model:

  • Pelatihan AWS โ€“ Pada intinya, masing-masing Contoh Trainium memiliki perangkat Trainium yang terpasang di dalamnya. Trn1.2xlarge memiliki 1 perangkat Trainium, dan Trn1.32xlarge memiliki 16 perangkat Trainium. Setiap perangkat Trainium terdiri dari komputasi (2 NeuronCore-v2), memori perangkat HBM 32 GB, dan NeuronLink untuk komunikasi antar perangkat yang cepat. Setiap NeuronCore-v2 terdiri dari unit komputasi heterogen yang sepenuhnya independen dengan mesin terpisah (Tensor/Vektor/Skalar/GPSIMD). GPSIMD adalah prosesor tujuan umum yang sepenuhnya dapat diprogram yang dapat Anda gunakan untuk mengimplementasikan operator khusus dan menjalankannya langsung di mesin NeuronCore.
  • Pelatihan Amazon SageMaker โ€“ SageMaker memberikan pengalaman pelatihan yang terkelola sepenuhnya untuk melatih model dengan mudah tanpa harus mengkhawatirkan infrastruktur. Saat Anda menggunakan Pelatihan SageMaker, SageMaker menjalankan semua yang diperlukan untuk tugas pelatihan, seperti kode, penampung, dan data, dalam infrastruktur komputasi yang terpisah dari lingkungan pemanggilan. Hal ini memungkinkan kami menjalankan eksperimen secara paralel dan melakukan iterasi dengan cepat. SageMaker menyediakan a SDK Python untuk meluncurkan pekerjaan pelatihan. Contoh dalam postingan ini menggunakan SageMaker Python SDK untuk memicu tugas pelatihan menggunakan Trainium.
  • Neuron AWS โ€“ Karena Trainium NeuronCore memiliki mesin komputasinya sendiri, kami memerlukan mekanisme untuk mengkompilasi kode pelatihan kami. Itu Neuron AWS compiler mengambil kode yang ditulis dalam Pytorch/XLA dan mengoptimalkannya untuk berjalan di perangkat Neuron. Compiler Neuron terintegrasi sebagai bagian dari Deep Learning Container yang akan kita gunakan untuk melatih model kita.
  • PyTorch/XLA - ini Paket python menggunakan kompiler pembelajaran mendalam XLA untuk menghubungkan kerangka pembelajaran mendalam PyTorch dan akselerator cloud seperti Trainium. Membangun jaringan PyTorch baru atau mengonversi yang sudah ada untuk dijalankan di perangkat XLA hanya memerlukan beberapa baris kode khusus XLA. Kami akan melihat untuk kasus penggunaan kami perubahan apa yang perlu kami lakukan.
  • Pelatihan yang didistribusikan โ€“ Untuk menjalankan pelatihan secara efisien di beberapa NeuronCore, kami memerlukan mekanisme untuk mendistribusikan pelatihan ke NeuronCore yang tersedia. SageMaker mendukung torchrun dengan instans Trainium, yang dapat digunakan untuk menjalankan beberapa proses yang setara dengan jumlah NeuronCore dalam klaster. Ini dilakukan dengan meneruskan parameter distribusi ke estimator SageMaker sebagai berikut, yang memulai pelatihan terdistribusi paralel data di mana model yang sama dimuat ke NeuronCore berbeda yang memproses kumpulan data terpisah:
distribution={"torch_distributed": {"enabled": True}}

Perubahan skrip diperlukan untuk dijalankan di Trainium

Mari kita lihat perubahan kode yang diperlukan untuk mengadopsi skrip PyTorch berbasis GPU reguler untuk dijalankan di Trainium. Pada level tinggi, kita perlu melakukan perubahan berikut:

  1. Ganti perangkat GPU dengan perangkat Pytorch/XLA. Karena kita menggunakan distribusi torch, kita perlu menginisialisasi pelatihan dengan perangkat XLA sebagai berikut:
    device = "xla"
    torch.distributed.init_process_group(device)

  2. Kami menggunakan backend terdistribusi PyTorch/XLA untuk menjembatani API terdistribusi PyTorch ke semantik komunikasi XLA.
  3. Kami menggunakan PyTorch/XLA MpDeviceLoader untuk pipeline penyerapan data. MpDeviceLoader membantu meningkatkan performa dengan menggabungkan tiga langkah: pelacakan, kompilasi, dan pemuatan kumpulan data ke perangkat. Kita perlu membungkus pemuat data PyTorch dengan MpDeviceDataLoader sebagai berikut:
    train_device_loader = pl.MpDeviceLoader(train_loader, "xla")

  4. Jalankan langkah pengoptimalan menggunakan API yang disediakan XLA seperti yang ditunjukkan pada kode berikut. Ini mengkonsolidasikan gradien antara inti dan mengeluarkan perhitungan langkah perangkat XLA.
    torch_xla.core.xla_model.optimizer_step(optimizer)

  5. Petakan API CUDA (jika ada) ke API PyTorch umum.
  6. Ganti pengoptimal gabungan CUDA (jika ada) dengan alternatif PyTorch umum.

Seluruh contoh, yang melatih model klasifikasi teks menggunakan SageMaker dan Trainium, tersedia berikut ini GitHub repo. Berkas buku catatan Sempurnakan Transformer untuk model klasifikasi bangunan menggunakan SageMaker dan Trainium.ipynb adalah titik masuk dan berisi petunjuk langkah demi langkah untuk menjalankan pelatihan.

Tes tolok ukur

Dalam pengujian, kami menjalankan dua tugas pelatihan: satu di ml.trn1.32xlarge, dan satu lagi di ml.p4d.24xlarge dengan ukuran batch, data pelatihan, dan hyperparameter lainnya yang sama. Selama tugas pelatihan, kami mengukur waktu yang dapat ditagih dari tugas pelatihan SageMaker, dan menghitung kinerja harga dengan mengalikan waktu yang diperlukan untuk menjalankan tugas pelatihan dalam jam dengan harga per jam untuk jenis instans. Kami memilih hasil terbaik untuk setiap jenis instans dari beberapa tugas yang dijalankan.

Tabel berikut merangkum temuan tolok ukur kami.

Model Jenis Mesin Virtual Harga (per node * jam) Throughput (iterasi/dtk) Akurasi Validasi Waktu yang Dapat Ditagih (detik) Biaya Pelatihan dalam $
klasifikasi dasar BERT ml.trn1.32xbesar 24.725 6.64 0.984 6033 41.47
klasifikasi dasar BERT ml.p4d.24xbesar 37.69 5.44 0.984 6553 68.6

Hasil menunjukkan bahwa biaya instans Trainium lebih murah daripada instans P4d, memberikan throughput dan akurasi yang serupa saat melatih model yang sama dengan input data dan parameter pelatihan yang sama. Ini berarti instans Trainium memberikan kinerja harga yang lebih baik daripada instans P4D berbasis GPU. Dengan contoh sederhana seperti ini, kita dapat melihat Trainium menawarkan waktu pelatihan sekitar 22% lebih cepat dan biaya hingga 50% lebih rendah dibandingkan instans P4d.

Terapkan model yang dilatih

Setelah kami melatih model, kami dapat menerapkannya ke berbagai jenis instans seperti CPU, GPU, atau AWS Inferentia. Hal utama yang perlu diperhatikan adalah model yang dilatih tidak bergantung pada perangkat keras khusus untuk menerapkan dan membuat inferensi. SageMaker menyediakan mekanisme untuk menerapkan model terlatih menggunakan mekanisme real-time atau batch. Contoh notebook di repo GitHub berisi kode untuk menerapkan model yang dilatih sebagai titik akhir real-time menggunakan instans ml.c5.xlarge (berbasis CPU).

Kesimpulan

Dalam postingan ini, kita melihat cara menggunakan Trainium dan SageMaker untuk menyiapkan dan melatih model klasifikasi dengan cepat yang memberikan penghematan biaya hingga 50% tanpa mengorbankan akurasi. Anda dapat menggunakan Trainium untuk berbagai kasus penggunaan yang melibatkan prapelatihan atau penyempurnaan model berbasis Transformer. Untuk informasi lebih lanjut tentang dukungan berbagai arsitektur model, lihat Pedoman Kecocokan Arsitektur Model.


Tentang Penulis

Arun Kumar Lokanatha adalah Arsitek Solusi ML Senior dengan tim Layanan Amazon SageMaker. Dia berfokus untuk membantu pelanggan membuat, melatih, dan memigrasikan beban kerja produksi ML ke SageMaker dalam skala besar. Dia berspesialisasi dalam Deep Learning khususnya di bidang NLP dan CV. Di luar pekerjaan, dia menikmati Lari dan hiking.

Mark Yu adalah Insinyur Perangkat Lunak di AWS SageMaker. Dia berfokus pada membangun sistem pelatihan terdistribusi berskala besar, mengoptimalkan kinerja pelatihan, dan mengembangkan perangkat keras pelatihan ml berperforma tinggi, termasuk SageMaker trainium. Mark juga memiliki pengetahuan mendalam tentang pengoptimalan infrastruktur pembelajaran mesin. Di waktu luangnya, ia menikmati hiking, dan berlari.

Omri Fuchs adalah Manajer Pengembangan Perangkat Lunak di AWS SageMaker. Dia adalah pemimpin teknis yang bertanggung jawab atas platform pekerjaan pelatihan SageMaker, berfokus pada pengoptimalan kinerja pelatihan SageMaker, dan meningkatkan pengalaman pelatihan. Dia memiliki hasrat untuk teknologi ML dan AI yang mutakhir. Di waktu luangnya, dia suka bersepeda, dan hiking.

Gal Oshri adalah Manajer Produk Senior di tim Amazon SageMaker. Dia memiliki 7 tahun pengalaman bekerja pada alat, kerangka kerja, dan layanan Machine Learning.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS