Huaweijev MindSpore: Nov Tekmec Za TensorFlow In PyTorch?

Kazalo:

Huaweijev MindSpore: Nov Tekmec Za TensorFlow In PyTorch?
Huaweijev MindSpore: Nov Tekmec Za TensorFlow In PyTorch?

Video: Huaweijev MindSpore: Nov Tekmec Za TensorFlow In PyTorch?

Video: Huaweijev MindSpore: Nov Tekmec Za TensorFlow In PyTorch?
Video: MindSpore от Huawei: новый конкурент для TensorFlow и PyTorch? 2024, December
Anonim

Huawei je sporočil, da je njegova vmesna programska oprema za globoko učenje MindSpore v slogu TensorFlow in PyTorch zdaj odprtokodna. V tem članku poiščite njegove najpomembnejše značilnosti.

MindSpore proizvajalca Huawei
MindSpore proizvajalca Huawei

Huawei je pravkar objavil, da njegov okvir MindSpore za razvoj aplikacij za umetno inteligenco postaja odprtokoden in na voljo na GiHub in Gitee. MindSpore je še en okvir za globoko učenje za usposabljanje modelov nevronskih omrežij, podoben TensorFlow ali PyTorch, zasnovan za uporabo od Edge do Cloud, ki podpira tako grafične procesorje kot očitno Huawei Ascend procesorje.

Lani avgusta, ko je Huawei napovedal uradni zagon procesorja Ascend, je bil prvič predstavljen MindSpore, ki je izjavil, da je »na običajnem treningu, ki temelji na ResNet-50, kombinacija Ascend 910 in MindSpore približno dvakrat hitrejša. Pri usposabljanju modelov umetne inteligence v primerjavi z drugimi glavnimi učnimi kartami s pomočjo TensorFlow-a Res je, da se je v zadnjih letih pojavilo veliko okvirov in morda MindSpore ni nič drugega kot ena skupina, ki lahko celo na daljavo tekmuje s TensorFlow-om (podpira ga Google) in PyTorch (podpira Facebook)).

Sistemska arhitektura

Spletno mesto MindSpore opisuje, da je infrastruktura sestavljena iz treh glavnih slojev: izraza vmesnika, grafičnega mehanizma in izvajalnega okolja. Naslednja slika prikazuje vizualni diagram:

Slika
Slika

Prva raven MindSpore ponuja Python API za programerje. Ker je jezikovno jezikoslovje v naši skupnosti dejansko Python, sicer pa MindSpore želi konkurirati PyTorchu in TensorFlowu. S tem API-jem lahko programerji manipulirajo z modeli (usposabljanje, sklepanje itd.) In obdelujejo podatke. Ta prva raven vključuje tudi podporo za začasno predstavitev kode (MindSpore IR), na kateri bodo temeljile številne optimizacije, ki jih je mogoče izvesti v paralelizaciji in samodejni diferenciaciji (GHLO).

Spodaj je sloj Graph Engine, ki zagotavlja potrebno funkcionalnost za ustvarjanje in izvajanje samodejnega razlikovanja izvedbenega grafa. Z MindSpore so se odločili za avtomatski model diferenciacije, ki ni PyTorch (ki generira dinamični grafikon izvedbe) ali TensorFlow (čeprav je bila prvotno izbrana možnost za ustvarjanje učinkovitejšega urnika statične izvedbe, zdaj ponuja tudi možnost dinamičnega grafikona izvedbe in omogoča statična različica grafa z uporabo dekoraterja @ tf.funkcije nizkega nivoja API)

Izbira MindSpore je pretvorba izvorne kode v vmesno obliko kode (MindSpore IR), da izkoristite oba modela (za več informacij glejte razdelek »Samodejno ločevanje« na spletnem mestu MindSpore).

Končni sloj je sestavljen iz vseh knjižnic in izvajalnih okolij, potrebnih za podporo različnim arhitekturam strojne opreme, v katerih bo koda obdelana. Najverjetneje bo to zaledje, zelo podobno drugim ogrodjem, morda s Huaweijevimi funkcijami, na primer knjižnicami, kot je HCCL (Huawei Collective Communication Library), enakovredno NVIDIA NCCL (NVIDIA Collective Communication Library).

Podpora za vizualizacijo usposabljanja

Glede na vadnico MindSpore, čeprav jih ni bilo mogoče namestiti in uporabljati, imajo MindInsight za ustvarjanje vizualizacij, ki nekoliko spominjajo na TensorBoard, TensorFlow. Oglejte si nekaj posnetkov zaslona, ki jih prikažejo na njihovi spletni strani:

Slika
Slika
Slika
Slika

Glede na priročnik MindSpore trenutno uporablja mehanizem povratnega klica (ki spominja na to, kako se to počne s Kerasom) za zapisovanje (v datoteko dnevnika) v procesu usposabljanja vseh tistih parametrov modela in hiperparametrov, ki jih želimo, pa tudi časovni načrt izračuna sestavljanje nevronske mreže v vmesno kodo je končano.

Vzporednost

V svoji vadnici govorijo o dveh načinih paralelizacije (DATA_PARALLEL in AUTO_PARALLEL) in podajo vzorčno kodo, ki ResNet-50 trenira z naborom podatkov CIFAR za procesor Ascend 910 (česar nisem mogel preizkusiti). DATA_PARALLEL se nanaša na strategijo, splošno znano kot paralelnost podatkov, ki vključuje razdeljevanje podatkov o vadbi v več podskupin, od katerih vsaka deluje na isti repliki modela, vendar v različnih procesnih enotah. Podpora za Graph Engine je na voljo za paralelizacijo kode in zlasti za vzporednost AUTO_PARALLEL.

Način AUTO_PARALLEL samodejno optimizira paralelizacijo tako, da kombinira strategijo paralelizacije podatkov (obravnavano zgoraj) s strategijo paralelizacije modela, pri kateri je model razdeljen na različne dele, vsak del pa se izvaja vzporedno v različnih procesnih enotah. Ta samodejni način izbere strategijo paralelizacije, ki ponuja najboljše koristi, o čemer si lahko preberete v razdelku Samodejna vzporednica na spletnem mestu MindSpore (čeprav ne opisujejo načina sprejemanja ocen in odločitev). Počakati bomo morali, da bo tehnična ekipa razširila dokumentacijo in razumela več podrobnosti o strategiji samodejnega paraleliziranja. Jasno pa je, da je ta strategija samodejnega paraleliziranja ključnega pomena in tu bi morali in se lahko kosajo s TensorFlowom ali PyTorchom, s čimer dosežejo bistveno boljšo zmogljivost s pomočjo Huaweijevih procesorjev.

Načrtovani načrt in kako prispevati

Očitno je še veliko dela in na tej točki so v obsežnem načrtu, predstavljenem na tej strani, racionalizirali ideje, ki jih imajo v mislih za prihodnje leto, vendar trdijo, da bodo prednostne naloge prilagojene glede na uporabnika.

Povratne informacije. Trenutno lahko najdemo te glavne vrstice:

  1. Podpora za več modelov (klasični modeli v čakalni vrsti, GAN, RNN, transformatorji, ojačani modeli učenja, verjetnostno programiranje, AutoML itd.).
  2. Razširite API-je in knjižnice, da izboljšate uporabnost in programsko izkušnjo (več operaterjev, več optimizatorjev, več izgubnih funkcij itd.)
  3. Celovita podpora procesorja Huawei Ascend in optimizacija zmogljivosti (optimizacija prevajanja, izboljšanje izkoriščenosti virov itd.)
  4. Razvoj sklada programske opreme in izvajanje optimizacij računskih grafov (izboljšanje vmesne predstavitve IR, dodajanje dodatnih zmožnosti optimizacije itd.).
  5. Podpora za več programskih jezikov (ne samo Python).
  6. Izboljšano porazdeljeno učenje z optimizacijo samodejnega razporejanja, distribucije podatkov itd.
  7. Izboljšajte orodje MindInsight, da bo programer lažje "odpravil napake" in izboljšal nastavitev hiperparametrov med učnim procesom.
  8. Napredek pri zagotavljanju funkcionalnosti sklepanja napravam v Edge (varnost, podpora modelom, ki niso platforme prek ONNX itd.)

Na strani skupnosti lahko vidite, da ima MindSpore partnerje zunaj Huaweia in Kitajske, kot so Univerza v Edinburghu, Imperial College London, University of Munster (Nemčija) ali Paris-Saclay University. Pravijo, da bodo sledili odprtemu modelu upravljanja in povabili celotno skupnost, da prispeva k kodeksu in dokumentaciji.

Zaključek

Po hitrem prvem pogledu se zdi, da lahko pravilne odločitve o načrtovanju in izvedbi (na primer sočasnost in samodejna diferenciacija) dodajo prostor za izboljšave in optimizacije, ki dosežejo boljšo zmogljivost od okvirov, ki jih želijo preseči. Toda čaka nas še veliko dela, da ujamemo PyTorch in TensorFlow, predvsem pa zgradimo skupnost, ne samo! Vsi pa že vemo, da je ob podpori enega velikega podjetja v sektorju, kot je Huawei, vse mogoče, ali pa je bilo očitno že pred tremi leti, ko je izšla prva različica PyTorch (Facebook), da bi lahko bila blizu pete TensorFlow (Google)?

Priporočena: