Huawei mengumumkan bahawa perisian menengah TensorFlow dan PyTorch MindSpore Deep Learning kini menjadi sumber terbuka. Ketahui dalam artikel ini ciri-ciri terpentingnya.
Huawei baru saja mengumumkan bahawa kerangka kerja MindSpore untuk mengembangkan aplikasi AI menjadi sumber terbuka dan tersedia di GiHub dan Gitee. MindSpore adalah satu lagi rangka Pembelajaran Dalam untuk melatih model rangkaian neural, mirip dengan TensorFlow atau PyTorch, yang direka untuk digunakan dari Edge to Cloud, yang menyokong kedua-dua GPU dan prosesor Huawei Ascend yang jelas.
Ogos lalu, ketika Huawei mengumumkan pelancaran rasmi pemproses Ascendnya, MindSpore pertama kali diperkenalkan, dengan menyatakan bahawa “dalam sesi latihan berdasarkan ResNet-50 khas, kombinasi Ascend 910 dan MindSpore adalah dua kali lebih cepat. Semasa melatih model AI berbanding kad pembelajaran utama yang lain menggunakan TensorFlow Memang benar bahawa banyak kerangka kerja telah muncul dalam beberapa tahun kebelakangan ini, dan mungkin MindSpore tidak lebih dari satu kumpulan yang bahkan dapat bersaing dengan TensorFlow (disokong oleh Google) dan PyTorch (disokong oleh Facebook)).
Senibina sistem
Laman web MindSpore menerangkan bahawa infrastruktur terdiri daripada tiga lapisan utama: ekspresi frontend, mesin grafik, dan backtime runtime. Gambar berikut menunjukkan gambarajah visual:
Tahap pertama MindSpore menawarkan API Python untuk pengaturcara. Oleh kerana linguistik bahasa di komuniti kita adalah Python de facto, dan sebaliknya MindSpore ingin bersaing dengan PyTorch dan TensorFlow. Dengan API ini, pengaturcara dapat memanipulasi model (latihan, inferensi, dll.) Dan memproses data. Tahap pertama ini juga merangkumi sokongan untuk perwakilan interim kod (MindSpore IR), di mana banyak pengoptimuman akan didasarkan yang dapat dilakukan secara paralelisasi dan pembezaan automatik (GHLO).
Di bawah ini adalah lapisan Graph Engine yang menyediakan fungsi yang diperlukan untuk membuat dan melaksanakan pembezaan automatik grafik pelaksanaan. Dengan MindSpore, mereka memilih model pembezaan automatik selain PyTorch (yang menghasilkan grafik pelaksanaan dinamik) atau TensorFlow (walaupun pilihan untuk membuat jadual pelaksanaan statik yang lebih efisien pada asalnya dipilih, kini juga menawarkan pilihan grafik pelaksanaan dinamik dan membolehkan versi statik grafik dengan menggunakan penghias fungsi @ tf. API tahap rendahnya).
Pilihan MindSpore adalah menukar kod sumber ke format kod perantaraan (MindSpore IR) untuk memanfaatkan dua model (untuk maklumat lebih lanjut, lihat bahagian "Pemisahan Automatik" di laman web MindSpore).
Lapisan terakhir terdiri daripada semua perpustakaan dan persekitaran waktu operasi yang diperlukan untuk menyokong pelbagai seni bina perkakasan di mana kod akan diproses. Kemungkinan besar, ia akan menjadi backend yang sangat mirip dengan kerangka kerja lain, mungkin dengan ciri Huawei, seperti perpustakaan seperti HCCL (Huawei Collective Communication Library), setara dengan NVIDIA NCCL (NVIDIA Collective Communication Library).
Sokongan visualisasi latihan
Menurut tutorial MindSpore, walaupun mustahil untuk memasangnya dan menggunakannya, mereka memiliki MindInsight untuk membuat visualisasi yang agak mengingatkan TensorBoard, TensorFlow. Lihatlah beberapa tangkapan skrin yang mereka tunjukkan di laman web mereka:
Menurut manual, MindSpore kini menggunakan mekanisme panggilan balik (mengingatkan bagaimana ia dilakukan dengan Keras) untuk menulis (dalam fail log) dalam proses melatih semua parameter model dan hiperparameter yang kita mahukan, serta jadual pengiraan ketika menyusun rangkaian saraf menjadi kod perantaraan selesai.
Paralelisme
Dalam tutorial mereka, mereka membincangkan dua mod paralelisasi (DATA_PARALLEL dan AUTO_PARALLEL) dan memberikan contoh kod yang melatih ResNet-50 dengan set data CIFAR untuk pemproses Ascend 910 (yang tidak dapat saya uji). DATA_PARALLEL merujuk pada strategi yang biasanya dikenal sebagai paralelisme data, yang terdiri dari membagi data latihan menjadi beberapa subset, masing-masing berjalan pada replika model yang sama, tetapi dalam unit pemprosesan yang berbeza. Sokongan Graph Engine disediakan untuk paralelisasi kod dan khususnya untuk paralelisme AUTO_PARALLEL.
Mod AUTO_PARALLEL secara automatik mengoptimumkan paralelisasi dengan menggabungkan strategi paralelisasi data (dibahas di atas) dengan strategi paralelisasi model, di mana model dibahagikan kepada bahagian yang berlainan, dan setiap bahagian dijalankan secara selari dalam unit pemprosesan yang berbeza. Mod automatik ini memilih strategi paralelisasi yang memberikan faedah terbaik, yang dapat dibaca di bahagian Automatic Parallel di laman web MindSpore (walaupun mereka tidak menerangkan bagaimana anggaran dan keputusan dibuat). Kita harus menunggu untuk meluangkan masa untuk pasukan teknikal memperluas dokumentasi dan memahami lebih banyak perincian mengenai strategi selari automatik. Tetapi jelas bahawa strategi auto-paralelisasi ini sangat penting, dan di sinilah mereka seharusnya dan dapat bersaing dengan TensorFlow atau PyTorch, memperoleh prestasi yang jauh lebih baik menggunakan prosesor Huawei.
Peta jalan terancang dan cara menyumbang
Tentunya ada banyak kerja yang harus diselesaikan dan pada ketika ini mereka telah menyusun idea yang mereka fikirkan untuk tahun depan dalam peta jalan luas yang dibentangkan di halaman ini, tetapi mereka berpendapat bahawa keutamaan akan disesuaikan mengikut pengguna.
Maklum balas. Pada masa ini kita dapat mencari garis utama berikut:
- Sokongan untuk lebih banyak model (model klasik yang belum selesai, GAN, RNN, Transformers, model pembelajaran yang diperkuat, pengaturcaraan probabilistik, AutoML, dll.).
- Luaskan API dan perpustakaan untuk meningkatkan kegunaan dan pengalaman pengaturcaraan (lebih banyak operator, lebih banyak pengoptimum, lebih banyak fungsi kerugian, dll.)
- Sokongan pemprosesan Huawei Ascend dan pengoptimuman prestasi yang komprehensif (pengoptimuman kompilasi, peningkatan penggunaan sumber, dll.)
- Evolusi tumpukan perisian dan pelaksanaan pengoptimuman grafik komputasi (meningkatkan perwakilan IR perantaraan, menambahkan keupayaan pengoptimuman tambahan, dll.).
- Sokongan untuk lebih banyak bahasa pengaturcaraan (bukan hanya Python).
- Pembelajaran diedarkan yang lebih baik dengan pengoptimuman penjadualan automatik, pengedaran data, dll.
- Tingkatkan alat MindInsight untuk memudahkan pengaturcara melakukan "debug" dan memperbaiki penalaan hyperparameter semasa proses pembelajaran.
- Kemajuan dalam menyampaikan fungsi inferensi ke peranti di Edge (keselamatan, sokongan untuk model bukan platform melalui ONNX, dll.)
Pada halaman komuniti, anda dapat melihat bahawa MindSpore mempunyai rakan di luar Huawei dan China, seperti University of Edinburgh, Imperial College London, University of Munster (Jerman) atau Paris-Saclay University. Mereka mengatakan bahawa mereka akan mengikuti model pemerintahan terbuka dan mengajak seluruh masyarakat untuk menyumbang kepada kod dan dokumentasi.
Kesimpulannya
Setelah pandangan pertama yang cepat, sepertinya keputusan reka bentuk dan pelaksanaan yang tepat (seperti serentak dan pembezaan automatik) dapat menambahkan ruang untuk peningkatan dan pengoptimuman yang mencapai prestasi yang lebih baik daripada kerangka kerja yang ingin mereka capai. Tetapi masih banyak usaha yang perlu dilakukan untuk mengejar PyTorch dan TensorFlow, dan di atas semua membina komuniti, bukan hanya! Namun, kita semua sudah tahu bahawa dengan sokongan satu syarikat besar di sektor ini seperti Huawei, ada yang mungkin berlaku, atau sudah jelas tiga tahun yang lalu ketika versi pertama PyTorch (Facebook) keluar bahawa ia mungkin dekat dengan tumit TensorFlow (Google)?