Huawei mengumumkan bahwa middleware MindSpore Deep Learning gaya TensorFlow dan PyTorch sekarang menjadi open source. Cari tahu di artikel ini karakteristiknya yang paling penting.
Huawei baru saja mengumumkan bahwa kerangka kerja MindSpore untuk mengembangkan aplikasi AI menjadi open source dan tersedia di GiHub dan Gitee. MindSpore adalah kerangka kerja Deep Learning lainnya untuk melatih model jaringan saraf, mirip dengan TensorFlow atau PyTorch, dirancang untuk digunakan dari Edge ke Cloud, yang mendukung GPU dan jelas prosesor Huawei Ascend.
Agustus lalu, ketika Huawei mengumumkan peluncuran resmi prosesor Ascend-nya, MindSpore pertama kali diperkenalkan, yang menyatakan bahwa “dalam sesi pelatihan berbasis ResNet-50, kombinasi Ascend 910 dan MindSpore sekitar dua kali lebih cepat. Saat melatih model AI versus kartu pembelajaran utama lainnya menggunakan TensorFlow Memang benar bahwa banyak kerangka kerja telah muncul dalam beberapa tahun terakhir, dan mungkin MindSpore tidak lebih dari satu grup yang bahkan dapat bersaing dari jarak jauh dengan TensorFlow (didukung oleh Google) dan PyTorch (didukung oleh Facebook).
Sistem arsitektur
Situs web MindSpore menjelaskan bahwa infrastruktur terdiri dari tiga lapisan utama: ekspresi frontend, mesin grafis, dan runtime backend. Gambar berikut menunjukkan diagram visual:
Tingkat pertama MindSpore menawarkan API Python untuk programmer. Karena linguistik bahasa di komunitas kami adalah Python de facto, dan jika tidak, MindSpore ingin bersaing dengan PyTorch dan TensorFlow. Dengan API ini, programmer dapat memanipulasi model (pelatihan, inferensi, dll.) dan memproses data. Tingkat pertama ini juga mencakup dukungan untuk representasi interim kode (MindSpore IR), di mana banyak pengoptimalan akan didasarkan yang dapat dilakukan dalam paralelisasi dan diferensiasi otomatis (GHLO).
Di bawah ini adalah lapisan Graph Engine yang menyediakan fungsionalitas yang diperlukan untuk membuat dan menjalankan diferensiasi otomatis dari grafik eksekusi. Dengan MindSpore, mereka memilih model diferensiasi otomatis selain PyTorch (yang menghasilkan grafik eksekusi dinamis) atau TensorFlow (meskipun opsi untuk membuat jadwal eksekusi statis yang lebih efisien awalnya dipilih, sekarang juga menawarkan opsi grafik eksekusi dinamis dan memungkinkan versi statis grafik dengan menggunakan dekorator @ tf.function dari API tingkat rendahnya).
Pilihan MindSpore adalah mengubah kode sumber ke format kode perantara (MindSpore IR) untuk memanfaatkan kedua model (untuk informasi lebih lanjut, lihat bagian "Pemisahan Otomatis" di situs web MindSpore).
Lapisan terakhir terdiri dari semua perpustakaan dan lingkungan runtime yang diperlukan untuk mendukung berbagai arsitektur perangkat keras di mana kode akan diproses. Kemungkinan besar, itu akan menjadi backend yang sangat mirip dengan kerangka kerja lain, mungkin dengan fitur Huawei, seperti perpustakaan seperti HCCL (Huawei Collective Communication Library), setara dengan NVIDIA NCCL (NVIDIA Collective Communication Library).
Dukungan visualisasi pelatihan
Menurut tutorial MindSpore, meskipun tidak mungkin untuk menginstal dan menggunakannya, mereka memiliki MindInsight untuk membuat visualisasi yang agak mengingatkan pada TensorBoard, TensorFlow. Lihatlah beberapa tangkapan layar yang mereka tampilkan di situs web mereka:
Menurut manual, MindSpore saat ini menggunakan mekanisme panggilan balik (mengingatkan bagaimana hal itu dilakukan dengan Keras) untuk menulis (dalam file log) dalam proses pelatihan semua parameter model dan hyperparameter yang kita inginkan, serta jadwal komputasi saat kompilasi jaringan saraf menjadi kode perantara selesai.
Paralelisme
Dalam tutorial mereka, mereka berbicara tentang dua mode paralelisasi (DATA_PARALLEL dan AUTO_PARALLEL) dan memberikan kode contoh yang melatih ResNet-50 dengan kumpulan data CIFAR untuk prosesor Ascend 910 (yang tidak dapat saya uji). DATA_PARALLEL mengacu pada strategi yang umumnya dikenal sebagai paralelisme data, yang terdiri dari membagi data pelatihan menjadi beberapa subset, yang masing-masing berjalan pada replika model yang sama, tetapi dalam unit pemrosesan yang berbeda. Dukungan Graph Engine disediakan untuk paralelisasi kode dan khususnya untuk paralelisme AUTO_PARALLEL.
Mode AUTO_PARALLEL secara otomatis mengoptimalkan paralelisasi dengan menggabungkan strategi paralelisasi data (dibahas di atas) dengan strategi paralelisasi model, di mana model dibagi menjadi beberapa bagian yang berbeda, dan setiap bagian dieksekusi secara paralel di unit pemrosesan yang berbeda. Mode otomatis ini memilih strategi paralelisasi yang menawarkan manfaat terbaik, yang dapat dibaca di bagian Paralel Otomatis di situs web MindSpore (walaupun tidak menjelaskan bagaimana perkiraan dan keputusan dibuat). Kami harus menunggu untuk menyediakan waktu bagi tim teknis untuk memperluas dokumentasi dan memahami lebih banyak detail tentang strategi paralelisasi otomatis. Tetapi jelas bahwa strategi paralelisasi otomatis ini sangat penting, dan di sinilah mereka harus dan dapat bersaing dengan TensorFlow atau PyTorch, mendapatkan kinerja yang jauh lebih baik menggunakan prosesor Huawei.
Peta jalan yang direncanakan dan cara berkontribusi
Jelas ada banyak pekerjaan yang harus dilakukan dan pada titik ini mereka telah merampingkan ide-ide yang ada dalam pikiran mereka untuk tahun depan dalam peta jalan ekstensif yang disajikan di halaman ini, tetapi mereka berpendapat bahwa prioritas akan disesuaikan menurut pengguna.
Masukan. Saat ini kita dapat menemukan jalur utama ini:
- Dukungan untuk lebih banyak model (model klasik tertunda, GAN, RNN, Transformers, model pembelajaran yang diperkuat, pemrograman probabilistik, AutoML, dll.).
- Perluas API dan library untuk meningkatkan kegunaan dan pengalaman pemrograman (lebih banyak operator, lebih banyak pengoptimal, lebih banyak fungsi loss, dll.)
- Dukungan prosesor Huawei Ascend yang komprehensif dan optimalisasi kinerja (optimasi kompilasi, peningkatan pemanfaatan sumber daya, dll.)
- Evolusi tumpukan perangkat lunak dan eksekusi pengoptimalan grafik komputasi (meningkatkan representasi IR menengah, menambahkan kemampuan pengoptimalan tambahan, dll.).
- Dukungan untuk lebih banyak bahasa pemrograman (bukan hanya Python).
- Peningkatan pembelajaran terdistribusi dengan optimalisasi penjadwalan otomatis, distribusi data, dll.
- Tingkatkan alat MindInsight untuk memudahkan programmer "men-debug" dan meningkatkan penyetelan hyperparameter selama proses pembelajaran.
- Kemajuan dalam memberikan fungsionalitas inferensi ke perangkat di Edge (keamanan, dukungan untuk model non-platform melalui ONNX, dll.)
Di halaman komunitas, Anda dapat melihat bahwa MindSpore memiliki mitra di luar Huawei dan China, seperti University of Edinburgh, Imperial College London, University of Munster (Jerman) atau Universitas Paris-Saclay. Mereka mengatakan bahwa mereka akan mengikuti model tata kelola terbuka dan mengundang seluruh komunitas untuk berkontribusi pada kode dan dokumentasi.
Kesimpulan
Setelah melihat sekilas, sepertinya keputusan desain dan implementasi yang tepat (seperti konkurensi dan diferensiasi otomatis) dapat menambahkan ruang untuk peningkatan dan pengoptimalan yang mencapai kinerja yang lebih baik daripada kerangka kerja yang ingin mereka unggulkan. Namun masih banyak pekerjaan di depan untuk mengejar PyTorch dan TensorFlow, dan yang terpenting adalah membangun komunitas, bukan hanya! Namun, kita semua sudah tahu bahwa dengan dukungan satu perusahaan besar di sektor seperti Huawei, segala sesuatu mungkin terjadi, atau sudah jelas tiga tahun lalu ketika versi pertama PyTorch (Facebook) keluar bahwa itu bisa saja hampir habis. dari TensorFlow (Google)?