Kembali ke Beranda untuk Developer

Summer of open source: building more efficient AI with PyTorch

20 September 2022OlehSuraj Subramanian

Catatan: Terima kasih khusus kepada Less Wright, Partner Engineer, Meta AI, untuk ulasan dan insight tambahan dalam postingan ini.

Postingan tentang menciptakan kecerdasan buatan (AI) yang efisien ini adalah yang kedua dalam serial “Musim panas sumber terbuka”. Serial ini bertujuan untuk menyediakan beberapa sumber daya yang berguna dan konten pembelajaran di area tempat proyek sumber terbuka menciptakan dampak di seluruh Meta dan lebih luas lagi. Ikuti bersama saat kami menjelajahi area lain tempat Meta Open Source memajukan industri dengan membagikan fitur inovatif dan dapat diskalakan.

PyTorch: dari teknologi mendasar sampai yayasan

Sejak rilis awalnya pada tahun 2016, PyTorch telah banyak digunakan di komunitas pembelajaran mendalam, dan akarnya dalam riset sekarang terus berkembang untuk penggunaan dalam skenario produksi. Dalam waktu yang seru untuk pembelajaran mesin (ML) dan kecerdasan buatan (AI), ketika metode baru dan kasus penggunaan untuk model AI terus berkembang, PyTorch telah mencapai babak berikutnya dalam sejarahnya saat bergerak menuju PyTorch Foundation yang independen dan baru didirikan di bawah naungan Linux Foundation. Yayasan ini terdiri dari dewan pengatur yang beragam termasuk perwakilan dari AMD, Amazon Web Services, Google Cloud, Microsoft Azure, serta Nvidia, dan dewan ini dimaksudkan untuk berkembang seiring waktu. Misinya mencakup mendorong adopsi fitur AI melalui proyek netral vendor dan membuat fitur sumber terbuka, pustaka, dan komponen lain dapat diakses oleh semua orang. Perpindahan menuju yayasan juga akan memungkinkan PyTorch dan komunitas sumber terbukanya untuk terus mempercepat jalur dari pembuatan prototipe hingga produksi untuk AI dan ML.

Menyederhanakan proses AI dengan Meta Open Source

PyTorch adalah contoh hebat untuk kekuatan sumber terbuka. Sebagai salah satu kerangka kerja pembelajaran mendalam sumber terbuka mula-mula, PyTorch telah memungkinkan orang-orang dari berbagai disiplin ilmu untuk bereksperimen dengan pembelajaran mendalam dan menerapkan karya mereka di berbagai bidang. PyTorch mendukung segalanya dari eksperimen dalam aplikasi pencarian hingga pengembangan kendaraan otomatis sampai radar menembus tanah, dan ini hanyalah beberapa dari aplikasi yang lebih baru. Memasangkan pustaka serbaguna fitur AI dengan komunitas sumber terbuka akan membuka kemampuan untuk dengan cepat beralih dan mengadaptasi teknologi dalam skala besar untuk berbagai penggunaan.

Karena AI diterapkan secara lebih luas, model-model menjadi tren dalam ukuran besar untuk mengatasi masalah yang lebih kompleks, tetapi ini juga berarti bahwa sumber daya yang dibutuhkan untuk melatih model-model ini telah meningkat secara substansial. Untungnya, banyak orang di komunitas developer telah menyadari perlunya model yang menggunakan lebih sedikit sumber daya—baik dari sudut pandang praktis maupun lingkungan. Postingan ini akan menjelajahi mengapa kuantisasi dan jenis kompresi model lainnya dapat menjadi katalis untuk AI yang efisien.

Menetapkan dasar untuk menggunakan PyTorch

Sebagian besar postingan ini menjelajahi beberapa fitur menengah dan lanjutan dari PyTorch. Jika Anda seorang pemula yang ingin memulai, atau ahli yang sedang menggunakan pustaka lain, paling mudah untuk memulai dengan beberapa dasar. Bacalah panduan pemula untuk PyTorch, yang menyertakan perkenalan ke alur kerja ML lengkap menggunakan set data Fashion MNIST.

Inilah beberapa sumber informasi lainnya yang bisa dibaca jika Anda baru mengenal PyTorch:

  • Cerita Komunitas PyTorch: Pelajari bagaimana PyTorch berdampak di berbagai industri seperti pertanian, pendidikan, perjalanan, dan lainnya
  • Serial Pemula PyTorch: Jelajahi daftar putar video teknik dasar termasuk memulai tensor, membuat model, pelatihan, dan inferensi PyTorch.

Kuantisasi: Menerapkan teknik yang telah teruji waktu untuk AI

Ada banyak jalur untuk membuat AI lebih efisien. Merancang ulang perangkat keras dan perangkat lunak untuk mengoptimalkan AI bisa sangat efektif, tetapi solusi perangkat keras-perangkat lunak yang dibaut khusus membutuhkan banyak waktu dan sumber daya untuk dikembangkan. Membuat arsitektur yang lebih cepat dan lebih kecil adalah jalan lain menuju efisiensi, tetapi banyak dari arsitektur ini yang kehilangan akurasi jika dibandingkan dengan model yang lebih besar, setidaknya untuk saat ini. Pendekatan yang lebih sederhana adalah menemukan cara untuk mengurangi sumber daya yang diperlukan untuk melatih dan melayani model yang ada. Di PyTorch, salah satu cara melakukannya adalah melalui kompresi model menggunakan kuantisasi.

Kuantisasi adalah teknik matematika yang telah digunakan untuk membuat file musik digital lossy (dengan membuang data yang tidak diperlukan) dan mengubah sinyal analog menjadi sinyal digital. Dengan melakukan kalkulasi matematika dengan presisi yang berkurang, kuantisasi memungkinkan kinerja yang jauh lebih tinggi pada banyak platform perangkat keras. Jadi, mengapa menggunakan kuantisasi untuk membuat AI lebih efisien? Hasil menunjukkan bahwa dalam kasus tertentu, menggunakan teknik yang relatif sederhana ini dapat menghasilkan percepatan yang dramatis (2-4 kali) untuk inferensi model.

Parameter yang membentuk model pembelajaran mendalam biasanya berupa angka desimal dalam presisi floating point (FP); setiap parameter membutuhkan memori 16 bit atau 32 bit. Saat menggunakan kuantisasi, angka sering dikonversi ke INT4 atau INT8, yang hanya menempati 4 atau 8 bit. Ini mengurangi berapa banyak model memori yang dibutuhkan. Selain itu, produsen chip menyertakan aritmatika khusus yang membuat operasi menggunakan bilangan bulat lebih cepat daripada menggunakan desimal.

Ada 3 metode kuantisasi yang dapat digunakan untuk model pelatihan: dinamis, statis, dan pelatihan sadar kuantisasi / quantize-aware training (QAT). Ringkasan singkat tentang manfaat dan kelemahannya dijelaskan dalam tabel di bawah ini. Untuk mempelajari cara menerapkan di alur kerja AI, baca postingan blog Kuantisasi Praktis di PyTorch.

Metode Kuantisasi

Keuntungan

Kelemahan

Dinamis

  • Mudah digunakan dengan hanya satu panggilan API
  • Lebih kuat terhadap penyimpangan distribusi sehingga menghasilkan akurasi yang sedikit lebih tinggi
  • Bekerja dengan baik untuk memori jangka pendek panjang (LSTM) dan model Transformer

Overhead tambahan di setiap penerusan

Statis (juga dikenal sebagai PTQ)

  • Inferensi lebih cepat daripada kuantisasi dinamis dengan menghilangkan overhead

Mungkin perlu kalibrasi ulang secara teratur untuk penyimpangan distribusi

Pelatihan Sadar Kuantisasi / Quantize-Aware Training (QAT)

  • Akurasi lebih tinggi daripada kuantisasi statis
  • Inferensi lebih cepat daripada dinamis

Biaya komputasi tinggi

Fitur tambahan untuk mempercepat alur kerja AI

Kuantisasi bukan satu-satunya cara untuk membuat AI yang didukung PyTorch lebih efisien. Fitur diperbarui secara berkala, dan di bawah ini adalah beberapa cara lain yang dapat dilakukan PyTorch untuk meningkatkan alur kerja AI:

  • Mode inferensi: Mode ini dapat digunakan untuk menulis kode PyTorch jika Anda hanya menggunakan kode untuk menjalankan inferensi. Mode inferensi mengubah beberapa asumsi saat bekerja dengan tensor untuk mempercepat inferensi. Dengan memberi tahu PyTorch bahwa Anda tidak akan menggunakan tensor untuk aplikasi tertentu nanti (dalam hal ini: autograd), PyTorch akan menyesuaikan untuk membuat kode berjalan lebih cepat dalam skenario khusus ini.

  • Presisi rendah: Kuantisasi hanya berfungsi pada waktu inferensi, yaitu setelah Anda melatih model Anda. Untuk proses pelatihan itu sendiri, PyTorch menggunakan AMP, atau pelatihan presisi campuran otomatis untuk menemukan format terbaik berdasarkan tensor yang digunakan (FP16, FP32, atau BF16). Pembelajaran mendalam presisi rendah di PyTorch memiliki beberapa keunggulan. Ini dapat membantu menurunkan ukuran model, mengurangi memori yang diperlukan untuk melatih model, dan mengurangi daya yang diperlukan untuk menjalankan model. Untuk mempelajari selengkapnya, lihat tutorial ini untuk menggunakan AMP dengan GPU dengan kemampuan CUDA.

  • Channels last: Dalam hal model visi, NHWC, atau dikenal sebagai channels-last, adalah format memori tensor yang lebih cepat dalam PyTorch. Menyimpan data dalam format channels-last mempercepat operasi di PyTorch. Memformat tensor input sebagai channels-last mengurangi overhead yang diperlukan untuk konversi antara jenis format yang berbeda, sehingga menghasilkan inferensi yang lebih cepat.

  • Pengoptimalan untuk inferensi: Prototipe TorchScript ini menerapkan beberapa pengoptimalan generik yang akan mempercepat model di semua lingkungan, dan juga dapat menyiapkan model untuk inferensi dengan pengaturan khusus build. Kasus penggunaan utama mencakup model visi pada CPU (dan GPU) pada saat ini. Karena ini adalah prototipe, Anda mungkin mengalami masalah. Angkat masalah yang terjadi pada repositori GitHub PyTorch.

Membuka potensi baru di PyTorch

Metode baru untuk mempercepat alur kerja AI secara teratur dijelajahi di blog PyTorch. Ini adalah tempat yang bagus untuk mengikuti teknik seperti BetterTransformer, yang meningkatkan kecepatan dan throughput dalam model Transformer hingga 2 kali untuk skenario eksekusi umum. Jika Anda tertarik mempelajari cara menerapkan fitur tertentu di PyTorch, halaman resep memungkinkan Anda mencari berdasarkan kategori seperti pengoptimalan model, pelatihan terdistribusi, dan kemampuan interpretasi. Postingan ini hanyalah contoh bagaimana fitur seperti PyTorch memajukan sumber terbuka dan AI.

Untuk mengikuti yang terbaru di Meta Open Source untuk kecerdasan buatan dan pembelajaran mesin, kunjungi situs sumber terbuka kami, silakan berlangganan saluran YouTube kami, atau ikuti kami diFacebook, Twitter, dan LinkedIn.