Huawei je objavio da je njegov međuprogrami za duboko učenje MindSpore u stilu TensorFlow i PyTorch sada otvoren. U ovom članku saznajte njegove najvažnije karakteristike.
Huawei je upravo objavio da njegov MindSpore okvir za razvoj AI aplikacija postaje otvoren izvor i dostupan na GiHub i Gitee. MindSpore je još jedan Deep Learning okvir za obuku modela neuronskih mreža, sličan TensorFlowu ili PyTorchu, dizajniran za upotrebu od Edgea do Clouda, koji podržava i GPU-ove i očigledno Huawei Ascend procesore.
Prošlog avgusta, kada je Huawei najavio službeno lansiranje svog Ascend procesora, prvi put je predstavljen MindSpore, rekavši da je „na tipičnom treningu baziranom na ResNet-50 kombinacija Ascend 910 i MindSpore otprilike dvostruko brža. Tijekom treninga AI modela u odnosu na druge glavne kartice za učenje korištenjem TensorFlow-a Istina je da su se mnogi okviri pojavili posljednjih godina, a možda MindSpore nije ništa više od jedne grupe koja se čak i na daljinu može natjecati s TensorFlow-om (podržan od Googlea) i PyTorch-om (podržan od Facebooka).
Arhitektura sistema
Web stranica MindSpore opisuje da se infrastruktura sastoji od tri glavna sloja: frontend izraz, grafički mehanizam i pozadinsko izvršavanje. Sljedeća slika prikazuje vizualni dijagram:
Prvi nivo MindSpore nudi Python API za programere. Budući da je jezična lingvistika u našoj zajednici de facto Python, a inače MindSpore želi konkurirati PyTorchu i TensorFlowu. Pomoću ovog API-ja programeri mogu manipulirati modelima (trening, zaključivanje itd.) I obrađivati podatke. Ovaj prvi nivo također uključuje podršku za privremeno predstavljanje koda (MindSpore IR), na kojoj će se temeljiti mnoge optimizacije koje se mogu izvesti u paralelizaciji i automatskoj diferencijaciji (GHLO).
Ispod je sloj Graph Engine koji pruža potrebnu funkcionalnost za stvaranje i izvršavanje automatske diferencijacije grafikona izvršenja. S MindSporeom su se odlučili za model automatske diferencijacije koji nije PyTorch (koji generira dinamički grafikon izvršenja) ili TensorFlow (iako je prvobitno izabrana opcija za stvaranje učinkovitijeg statičkog rasporeda izvršenja, sada također nudi opciju dinamičkog grafikona izvršenja i omogućava statična verzija grafikona uz upotrebu dekoratora @ tf.function svog API-ja na niskom nivou).
MindSporeov izbor je pretvoriti izvorni kod u srednji format koda (MindSpore IR) kako bi se iskoristila dva modela (za više informacija pogledajte odjeljak „Automatsko razdvajanje“na web lokaciji MindSpore).
Završni sloj sastoji se od svih biblioteka i runtime okruženja potrebnih za podršku različitim hardverskim arhitekturama u kojima će se kôd obrađivati. Najvjerojatnije će to biti pozadina koja je vrlo slična ostalim okvirima, možda s Huaweijevim značajkama, poput biblioteka poput HCCL (Huawei Collective Communication Library), ekvivalent NVIDIA NCCL (NVIDIA Collective Communication Library).
Podrška za vizualizaciju treninga
Prema vodiču za MindSpore, iako ih nije bilo moguće instalirati i koristiti, oni imaju MindInsight za stvaranje vizualizacija koje pomalo podsjećaju na TensorBoard, TensorFlow. Pogledajte nekoliko snimaka zaslona koje prikazuju na svojoj web stranici:
Prema priručniku, MindSpore trenutno koristi mehanizam povratnog poziva (podsjeća na to kako se radi s Kerasom) za pisanje (u datoteku dnevnika) u procesu obuke svih onih parametara modela i hiperparametara koje želimo, kao i raspored izračuna kada kompletiranje neuronske mreže u međukod je završeno.
Paralelizam
U svom vodiču govore o dva načina paralelizacije (DATA_PARALLEL i AUTO_PARALLEL) i pružaju uzorak koda koji trenira ResNet-50 sa CIFAR skupom podataka za procesor Ascend 910 (koji nisam uspio testirati). DATA_PARALLEL odnosi se na strategiju obično poznatu kao paralelizam podataka, koja se sastoji od podjele podataka o obuci u više podskupova, od kojih svaki radi na istoj replici modela, ali u različitim procesnim jedinicama. Podržana je podrška za Graph Engine za paralelizaciju koda, a posebno za paralelnost AUTO_PARALLEL.
Način AUTO_PARALLEL automatski optimizira paralelizaciju kombiniranjem strategije paralelizacije podataka (razmotrene gore) sa strategijom paralelizacije modela, u kojoj je model podijeljen u različite dijelove, a svaki se dio paralelno izvršava u različitim procesnim jedinicama. Ovaj automatski način rada odabire strategiju paralelizacije koja nudi najbolje pogodnosti, o čemu se može pročitati u odjeljku Automatska paralela na web stranici MindSpore (iako ne opisuju način donošenja procjena i odluka). Morat ćemo pričekati da nađemo vremena da tehnički tim proširi dokumentaciju i razumije više detalja o strategiji automatske paralelizacije. Ali jasno je da je ova strategija automatskog paraleliziranja presudna i tu bi se trebali i mogli natjecati s TensorFlowom ili PyTorchom, postižući znatno bolje performanse koristeći Huawei procesore.
Planirana mapa puta i kako doprinijeti
Očito je da treba puno raditi i u ovom su trenutku usmjerili ideje koje imaju na umu za sljedeću godinu u opsežnom planu puta predstavljenom na ovoj stranici, ali tvrde da će se prioriteti prilagoditi prema korisniku.
Povratne informacije. Trenutno možemo pronaći ove glavne linije:
- Podrška za više modela (klasični modeli na čekanju, GAN, RNN, transformatori, pojačani modeli učenja, vjerovatnosno programiranje, AutoML itd.).
- Proširite API-je i biblioteke kako biste poboljšali upotrebljivost i iskustvo programiranja (više operatora, više optimizatora, više funkcija gubitka, itd.)
- Sveobuhvatna podrška za procesor Huawei Ascend i optimizacija performansi (optimizacija kompilacije, poboljšanje iskorišćenja resursa itd.)
- Evolucija softverskog snopa i izvršavanje optimizacija računskih grafova (poboljšanje posrednog IR predstavljanja, dodavanje dodatnih mogućnosti optimizacije, itd.).
- Podrška za više programskih jezika (ne samo Python).
- Poboljšano distribuirano učenje uz optimizaciju automatskog raspoređivanja, distribucije podataka itd.
- Poboljšajte alat MindInsight kako biste programeru olakšali "otklanjanje grešaka" i poboljšali podešavanje hiperparametara tokom procesa učenja.
- Napredak u isporuci funkcionalnosti zaključivanja uređajima u Edgeu (sigurnost, podrška za modele koji nisu platforme putem ONNX-a, itd.)
Na stranici zajednice možete vidjeti da MindSpore ima partnere izvan Huaweija i Kine, poput Univerziteta u Edinburghu, Imperial College London, University of Munster (Njemačka) ili Paris-Saclay University. Kažu da će slijediti otvoreni model upravljanja i pozvati cijelu zajednicu da doprinese i kodu i dokumentaciji.
Zaključak
Nakon brzog prvog pogleda, čini se da prave odluke o dizajnu i implementaciji (poput paralelnosti i automatske diferencijacije) mogu dodati prostor za poboljšanja i optimizacije kojima se postižu bolje performanse od okvira koje žele nadmašiti. Ali, predstoji još puno posla kako bi se uhvatili PyTorch i TensorFlow, a prije svega izgraditi zajednica, ne samo! Međutim, svi već znamo da je uz potporu jedne velike kompanije u sektoru kao što je Huawei sve moguće, ili je bilo očito prije tri godine kada je izašla prva verzija PyTorcha (Facebook) da bi mogao biti blizu pete. TensorFlow (Google)?