Huawei je objavio da je njegov internetski softver 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 GiHubu i Giteeu. MindSpore je još jedan okvir za duboko učenje 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čito Huawei Ascend procesore.
Prošlog kolovoza, kada je Huawei najavio službeno lansiranje svog Ascend procesora, prvi je put predstavljen MindSpore, rekavši da je „na tipičnom treningu utemeljenom 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 skupine koja se čak i na daljinu može natjecati s TensorFlow-om (podržan od Googlea) i PyTorch-om (podržan od Facebooka).
Arhitektura sustava
Web stranica MindSpore opisuje da se infrastruktura sastoji od tri glavna sloja: izraza sučelja, grafičkog mehanizma i pozadinskog izvođenja. Sljedeća slika prikazuje vizualni dijagram:
Prva razina 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. Ova prva razina 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 odlučili su se za model automatske diferencijacije koji nije PyTorch (koji generira dinamički grafikon izvršavanja) ili TensorFlow (iako je izvorno izabrana opcija za stvaranje učinkovitijeg statičkog rasporeda izvršenja, sada također nudi mogućnost dinamičkog grafikona izvršenja i omogućuje statična verzija grafikona s pomoću dekoratora @ tf.function svog API-ja na niskoj razini).
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 mjestu MindSpore).
Završni sloj sastoji se od svih knjižnica i runtime okruženja potrebnih za podršku raznim hardverskim arhitekturama u kojima će se kôd obrađivati. Najvjerojatnije će to biti pozadina vrlo slična ostalim okvirima, možda s Huaweijevim značajkama, poput knjižnica 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 tutorijalu govore o dva načina paralelizacije (DATA_PARALLEL i AUTO_PARALLEL) i daju uzorak koda koji trenira ResNet-50 sa CIFAR skupom podataka za procesor Ascend 910 (koji nisam uspio testirati). DATA_PARALLEL odnosi se na strategiju koja je obično poznata kao paralelizam podataka, koja se sastoji od podjele podataka o treningu u više podskupova, od kojih svaki radi na istoj replici modela, ali u različitim procesnim jedinicama. Podrška za Graph Engine osigurana je 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 na 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 mjestu 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 automatskog paraleliziranja. 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 Huaweijeve procesore.
Planirani putokaz i kako doprinijeti
Očito je da treba puno raditi i u ovom su trenutku usmjerili ideje koje imaju na umu za iduć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, vjerojatnosno programiranje, AutoML itd.).
- Proširite API-je i knjižnice kako biste poboljšali iskoristivost i iskustvo programiranja (više operatora, više optimizatora, više funkcija gubitka itd.)
- Sveobuhvatna podrška za procesor Huawei Ascend i optimizacija izvedbe (optimizacija kompilacije, poboljšanje korištenja 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 za Python).
- Poboljšano distribuirano učenje s optimizacijom automatskog raspoređivanja, distribucije podataka itd.
- Poboljšajte alat MindInsight kako biste programeru olakšali "uklanjanje pogrešaka" i poboljšali podešavanje hiperparametara tijekom 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 Sveučilišta u Edinburghu, Imperial College u Londonu, Sveučilišta u Munsteru (Njemačka) ili Sveučilišta Paris-Saclay. 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 istodobnosti i automatske diferencijacije) mogu dodati prostor za poboljšanja i optimizacije koje postižu bolje performanse od okvira koje žele nadmašiti. Ali još je puno posla pred uhvatiti PyTorch i TensorFlow, a prije svega izgraditi zajednicu, ne samo! Međutim, svi već znamo da je uz potporu jedne velike tvrtke u sektoru poput Huaweija sve moguće, ili je bilo očito prije tri godine kada je izašla prva verzija PyTorcha (Facebook) da bi mogla biti blizu pete od TensorFlow (Google)?