Huawei MindSpore: Jauns Konkurents TensorFlow Un PyTorch?

Satura rādītājs:

Huawei MindSpore: Jauns Konkurents TensorFlow Un PyTorch?
Huawei MindSpore: Jauns Konkurents TensorFlow Un PyTorch?

Video: Huawei MindSpore: Jauns Konkurents TensorFlow Un PyTorch?

Video: Huawei MindSpore: Jauns Konkurents TensorFlow Un PyTorch?
Video: MindSpore от Huawei: новый конкурент для TensorFlow и PyTorch? 2024, Decembris
Anonim

Huawei paziņoja, ka tā TensorFlow un PyTorch stila MindSpore Deep Learning starpprogrammatūra tagad ir atvērta pirmkoda. Šajā rakstā uzziniet tās vissvarīgākās īpašības.

MindSpore no Huawei
MindSpore no Huawei

Huawei tikko paziņoja, ka tā MindSpore ietvars AI lietojumprogrammu izstrādei kļūst par atvērtu pirmkodu un ir pieejams GiHub un Gitee. MindSpore ir vēl viena dziļo mācību sistēma neironu tīkla modeļu apmācībai, līdzīga TensorFlow vai PyTorch, kas paredzēta lietošanai no Edge līdz Cloud, kas atbalsta gan GPU, gan acīmredzami Huawei Ascend procesorus.

Pagājušā gada augustā, kad Huawei paziņoja par sava Ascend procesora oficiālu palaišanu, MindSpore pirmo reizi tika ieviests, norādot, ka “tipiskā ResNet-50 bāzes apmācības sesijā Ascend 910 un MindSpore kombinācija ir aptuveni divreiz ātrāka. Apmācot AI modeļus salīdzinājumā ar citām galvenajām mācību kartēm, izmantojot TensorFlow, ir taisnība, ka pēdējos gados ir izveidojušās daudzas sistēmas, un, iespējams, MindSpore ir nekas vairāk kā viena grupa, kas pat var attālināti konkurēt ar TensorFlow (atbalsta Google) un PyTorch (atbalsta Facebook).

Sistēmas arhitektūra

MindSpore vietnē ir aprakstīts, ka infrastruktūra sastāv no trim galvenajiem slāņiem: frontend izteiksme, grafikas dzinējs un backend izpildlaiks. Šajā attēlā parādīta vizuālā shēma:

Attēls
Attēls

Pirmais MindSpore līmenis piedāvā Python API programmētājiem. Tā kā valodas valodniecība mūsu kopienā faktiski ir Python, un citādi MindSpore vēlas konkurēt ar PyTorch un TensorFlow. Izmantojot šo API, programmētāji var manipulēt ar modeļiem (apmācība, secinājumi utt.) Un apstrādāt datus. Šis pirmais līmenis ietver arī atbalstu koda pagaidu attēlojumam (MindSpore IR), uz kura balstīsies daudzas optimizācijas, kuras var veikt paralēli un automātiski diferencējot (GHLO).

Zemāk ir Graph Engine slānis, kas nodrošina nepieciešamo funkcionalitāti, lai izveidotu un izpildītu izpildes diagrammas automātisko diferenciāciju. Ar MindSpore viņi izvēlējās automātisku diferenciācijas modeli, izņemot PyTorch (kas ģenerē dinamisku izpildes grafiku) vai TensorFlow (lai gan sākotnēji tika izvēlēta iespēja izveidot efektīvāku statisko izpildes grafiku, tagad tā piedāvā arī dinamiskas izpildes diagrammas opciju un ļauj statiska grafika versija, izmantojot tā zema līmeņa API dekoratoru @ tf.function).

MindSpore izvēle ir pārveidot pirmkodu starpkodu formātā (MindSpore IR), lai izmantotu abus modeļus (lai iegūtu papildinformāciju, skatiet MindSpore vietnes sadaļu “Automātiskā atdalīšana”).

Pēdējais slānis sastāv no visām bibliotēkām un izpildlaika vidēm, kas nepieciešamas dažādu aparatūras arhitektūru atbalstam, kurās kods tiks apstrādāts. Visticamāk, tā būs aizmugure, kas ir ļoti līdzīga citām sistēmām, iespējams, ar Huawei funkcijām, piemēram, bibliotēkām, piemēram, HCCL (Huawei kolektīvās komunikācijas bibliotēka), kas ir līdzvērtīga NVIDIA NCCL (NVIDIA kolektīvās komunikācijas bibliotēka).

Apmācības vizualizācijas atbalsts

Saskaņā ar MindSpore apmācību, lai gan tos nebija iespējams instalēt un izmantot, viņiem ir MindInsight, lai izveidotu vizualizācijas, kas nedaudz atgādina TensorBoard, TensorFlow. Apskatiet dažus ekrānuzņēmumus, kurus viņi parāda savā vietnē:

Attēls
Attēls
Attēls
Attēls

Saskaņā ar rokasgrāmatu MindSpore pašlaik izmanto atzvanīšanas mehānismu (kas atgādina, kā tas tiek darīts ar Keras), lai apmācības procesā ierakstītu (žurnāla failā) visus tos modeļa parametrus un hiperparametrus, kurus mēs vēlamies, kā arī aprēķina grafiku, kad neironu tīkla apkopošana starpkodā ir pabeigta.

Paralēlisms

Apmācībā viņi runā par diviem paralelizācijas režīmiem (DATA_PARALLEL un AUTO_PARALLEL) un nodrošina koda paraugu, kas apmāca ResNet-50 ar CIFAR datu kopu Ascend 910 procesoram (kuru es nevarēju pārbaudīt). DATA_PARALLEL attiecas uz stratēģiju, ko parasti sauc par datu paralēlismu, kas sastāv no apmācības datu sadalīšanas vairākās apakškopās, no kurām katra darbojas ar vienu un to pašu modeļa kopiju, bet dažādās apstrādes vienībās. Grafiku motora atbalsts tiek nodrošināts koda paralelizēšanai un jo īpaši AUTO_PARALLEL paralelizācijai.

AUTO_PARALLEL režīms automātiski optimizē paralelizāciju, apvienojot datu paralelizācijas stratēģiju (aplūkota iepriekš) ar modeļa paralelizācijas stratēģiju, kurā modelis ir sadalīts dažādās daļās, un katra daļa tiek izpildīta paralēli dažādās apstrādes vienībās. Šis automātiskais režīms izvēlas paralelizācijas stratēģiju, kas piedāvā vislabākās priekšrocības, par kuru var izlasīt MindSpore vietnes sadaļā Automātiskā paralēle (lai gan tajās nav aprakstīts, kā tiek veikti aprēķini un lēmumi). Mums būs jāgaida, kamēr būs laiks, lai tehniskā komanda varētu paplašināt dokumentāciju un saprast sīkāku informāciju par automātiskās paralelizācijas stratēģiju. Bet ir skaidrs, ka šī automātiskās paralelizācijas stratēģija ir kritiska, un tieši šeit viņiem vajadzētu un var konkurēt ar TensorFlow vai PyTorch, iegūstot ievērojami labāku veiktspēju, izmantojot Huawei procesorus.

Plānotais plāns un kā sniegt savu ieguldījumu

Acīmredzot ir jāpaveic daudz darba, un šajā brīdī viņi ir pilnveidojuši idejas, kas viņiem ir domāti nākamajam gadam, šajā lapā sniegtajā plašajā ceļvedī, taču viņi apgalvo, ka prioritātes tiks pielāgotas atbilstoši lietotājam.

Atsauksmes. Šobrīd mēs varam atrast šīs galvenās līnijas:

  1. Atbalsts vairākiem modeļiem (gaidīti klasiskie modeļi, GAN, RNN, Transformatori, pastiprināti mācību modeļi, varbūtības programmēšana, AutoML utt.).
  2. Paplašiniet API un bibliotēkas, lai uzlabotu lietojamību un programmēšanas pieredzi (vairāk operatoru, vairāk optimizētāju, vairāk zaudējumu funkciju utt.)
  3. Visaptverošs Huawei Ascend procesora atbalsts un veiktspējas optimizācija (kompilācijas optimizācija, resursu izmantošanas uzlabošana utt.)
  4. Programmatūras kaudzes attīstība un skaitļojamo grafu optimizāciju izpilde (uzlabojot starpposma IR attēlojumu, pievienojot papildu optimizācijas iespējas utt.).
  5. Atbalsts vairākām programmēšanas valodām (ne tikai Python).
  6. Uzlabota dalītā apmācība, optimizējot automātisko plānošanu, datu izplatīšanu utt.
  7. Uzlabojiet MindInsight rīku, lai programmētājam būtu vieglāk "atkļūdot" un uzlabot hiperparametru iestatīšanu mācību procesā.
  8. Progress, sniedzot secinājuma funkcionalitāti ierīcēs, kas atrodas Edge (drošība, atbalsts platformām, kas nav platformas, izmantojot ONNX, utt.)

Kopienas lapā jūs varat redzēt, ka MindSpore ir partneri ārpus Huawei un Ķīnas, piemēram, Edinburgas universitāte, Londonas Imperiālā koledža, Minsteres universitāte (Vācija) vai Parīzes-Saklaja universitāte. Viņi saka, ka ievēros atklātu pārvaldības modeli un aicinās visu sabiedrību piedalīties gan kodeksa, gan dokumentācijas izstrādē.

Secinājums

Pēc ātra pirmā acu uzmetiena šķiet, ka pareizie dizaina un ieviešanas lēmumi (piemēram, vienlaicīgums un automātiskā diferenciācija) var dot iespēju uzlabot un optimizēt, lai sasniegtu labāku sniegumu nekā tie ietvari, kurus viņi vēlas pārspēt. Bet vēl ir daudz darba, lai noķertu PyTorch un TensorFlow, un galvenokārt izveidojiet kopienu, ne tikai! Tomēr mēs visi jau zinām, ka, atbalstot vienu lielu nozares uzņēmumu, piemēram, Huawei, viss ir iespējams, vai arī tas bija acīmredzams pirms trim gadiem, kad iznāca pirmā PyTorch (Facebook) versija, ka tas varētu būt tuvu papēdim no TensorFlow (Google)?

Ieteicams: