Huawei Se MindSpore: 'n Nuwe Mededinger Vir TensorFlow En PyTorch?

INHOUDSOPGAWE:

Huawei Se MindSpore: 'n Nuwe Mededinger Vir TensorFlow En PyTorch?
Huawei Se MindSpore: 'n Nuwe Mededinger Vir TensorFlow En PyTorch?

Video: Huawei Se MindSpore: 'n Nuwe Mededinger Vir TensorFlow En PyTorch?

Video: Huawei Se MindSpore: 'n Nuwe Mededinger Vir TensorFlow En PyTorch?
Video: MindSpore от Huawei: новый конкурент для TensorFlow и PyTorch? 2024, Mei
Anonim

Huawei het aangekondig dat sy TensorFlow- en PyTorch-styl MindSpore Deep Learning middelware nou open source is. Vind in hierdie artikel die belangrikste kenmerke daarvan uit.

MindSpore deur Huawei
MindSpore deur Huawei

Huawei het pas aangekondig dat sy MindSpore-raamwerk vir die ontwikkeling van AI-toepassings open source word en beskikbaar is op GiHub en Gitee. MindSpore is nog 'n Deep Learning-raamwerk vir die opleiding van neurale netwerkmodelle, soortgelyk aan TensorFlow of PyTorch, wat ontwerp is vir gebruik van Edge tot Cloud, wat beide GPU's en natuurlik Huawei Ascend-verwerkers ondersteun.

Verlede Augustus, toe Huawei die amptelike bekendstelling van sy Ascend-verwerker aangekondig het, is MindSpore die eerste keer bekendgestel en gesê dat 'die kombinasie van Ascend 910 en MindSpore in 'n tipiese ResNet-50-gebaseerde oefensessie ongeveer twee keer so vinnig is. As u KI-modelle oplei teenoor ander belangrike leerkaarte met behulp van TensorFlow, is dit waar dat die afgelope paar jaar baie raamwerke ontstaan het, en miskien is MindSpore niks anders as een groep wat selfs op afstand kan meeding met TensorFlow (gesteun deur Google) en PyTorch (ondersteun deur Facebook)).

Stelselargitektuur

Die MindSpore-webwerf beskryf dat die infrastruktuur uit drie hooflae bestaan: front-uitdrukking, grafiese enjin en back-run-tyd. Die volgende figuur toon 'n visuele diagram:

Beeld
Beeld

Die eerste vlak van MindSpore bied 'n Python API vir programmeerders. Aangesien taalkundigheid in ons gemeenskap de facto Python is, en andersins wil MindSpore meeding met PyTorch en TensorFlow. Met hierdie API kan programmeerders modelle (opleiding, afleiding, ens.) Manipuleer en data verwerk. Hierdie eerste vlak bevat ook ondersteuning vir kode-tussentydse voorstelling (MindSpore IR), waarop baie optimerings gebaseer sal word wat uitgevoer kan word in parallelisering en outomatiese differensiasie (GHLO).

Hieronder is die Graph Engine-laag wat die nodige funksies bied om outomatiese differensiasie van die uitvoeringsgrafiek te skep en uit te voer. Met MindSpore het hulle gekies vir 'n outomatiese differensiasiemodel anders as PyTorch (wat 'n dinamiese uitvoeringsgrafiek genereer) of TensorFlow (alhoewel oorspronklik gekies is om die meer effektiewe statiese uitvoeringskema te skep, bied dit nou ook 'n dinamiese uitvoeringsgrafiekopsie en laat dit toe 'n statiese weergawe van die grafiek met behulp van die @ tf.function-versierder van sy lae-vlak API).

Die keuse van MindSpore is om die bronkode na 'n intermediêre kode-formaat (MindSpore IR) om te skakel om van die twee modelle gebruik te maak (sien die afdeling "Outomatiese skeiding" op die MindSpore webwerf vir meer inligting)

Die finale laag bestaan uit al die biblioteke en runtime-omgewings wat benodig word om die verskillende hardeware-argitekture waarin die kode verwerk sal word, te ondersteun. Dit is waarskynlik 'n agtergrond wat baie ooreenstem met ander raamwerke, miskien met Huawei-funksies, soos biblioteke soos HCCL (Huawei Collective Communication Library), gelykstaande aan NVIDIA NCCL (NVIDIA Collective Communication Library).

Ondersteuning vir opleiding visualisering

Volgens die MindSpore-tutoriaal, hoewel dit onmoontlik was om dit te installeer en te gebruik, het hulle MindInsight om visualisasies te skep wat ietwat herinner aan TensorBoard, TensorFlow. Kyk na 'n paar skermkiekies wat hulle op hul webwerf wys:

Beeld
Beeld
Beeld
Beeld

Volgens die handleiding gebruik MindSpore tans 'n terugbelmeganisme (wat herinner aan hoe dit met Keras gedoen word) om (in 'n loglêer) te skryf in die proses om al die modelparameters en hiperparameters op te lei, sowel as die berekeningskedule wanneer die samestelling van neurale netwerk in intermediêre kode is voltooi.

Parallelisme

In hul tutoriaal praat hulle oor twee paralleliseringsmodusse (DATA_PARALLEL en AUTO_PARALLEL) en gee voorbeeldkodes wat ResNet-50 oplei met 'n CIFAR-datastel vir 'n Ascend 910-verwerker (wat ek nie kon toets nie). DATA_PARALLEL verwys na 'n strategie wat algemeen bekend staan as dataparallelisme, wat bestaan uit die opdeel van opleidingsdata in verskeie onderstelle, wat elk op dieselfde replika van die model loop, maar in verskillende verwerkingseenhede. Ondersteuning van grafiese enjins word voorsien vir parallelisering van die kode en in die besonder vir AUTO_PARALLEL parallelisme.

AUTO_PARALLEL-modus optimaliseer outomaties parallelisering deur die data-paralleliseringsstrategie (hierbo bespreek) te kombineer met die model-paralleliseringsstrategie, waarin die model in verskillende dele verdeel word, en elke onderdeel word parallel uitgevoer in verskillende verwerkingseenhede. Hierdie outomatiese modus kies die paralleliseringsstrategie wat die beste voordele bied, waarvan u kan lees in die paragraaf Automatic Parallel op die MindSpore-webwerf (hoewel dit nie beskryf hoe ramings en besluite geneem word nie). Ons sal moet wag om tyd te gee vir die tegniese span om die dokumentasie uit te brei en meer besonderhede oor die outo-paralleliseringstrategie te verstaan. Maar dit is duidelik dat hierdie outo-paralleliseringstrategie van kritieke belang is, en dit is waar hulle met TensorFlow of PyTorch moet en kan meeding, wat aansienlik beter werkverrigting met Huawei-verwerkers kry.

Beplande padkaart en hoe om by te dra

Daar is natuurlik baie werk om te doen en op hierdie stadium het hulle die idees wat hulle vir volgende jaar in gedagte het, gestroomlyn in die uitgebreide padkaart wat op hierdie bladsy aangebied word, maar hulle voer aan dat prioriteite volgens die gebruiker aangepas sal word.

Terugvoer. Op die oomblik kan ons die volgende hooflyne vind:

  1. Ondersteuning vir meer modelle (hangende klassieke modelle, GAN, RNN, Transformers, versterkte leermodelle, waarskynlike programmering, AutoML, ens.).
  2. Brei API's en biblioteke uit om die bruikbaarheid en programmeringservaring te verbeter (meer operateurs, meer optimaliseerders, meer verliesfunksies, ens.)
  3. Omvattende ondersteuning vir Huawei Ascend-verwerker en prestasie-optimalisering (samestellingsoptimalisering, verbetering van hulpbronbenutting, ens.)
  4. Ontwikkeling van die sagtewarestapel en uitvoering van berekeningsgrafiekoptimalisasies (verbetering van die intermediêre IR-voorstelling, byvoeging van bykomende optimaliseringsvermoë, ens.)
  5. Ondersteuning vir meer programmeertale (nie net Python nie).
  6. Verbeterde verspreide leer met optimalisering van outomatiese skedulering, datadistribusie, ens.
  7. Verbeter die MindInsight-hulpmiddel om dit makliker te maak vir die programmeerder om die foutparameter tydens die leerproses te "debug" en te verbeter.
  8. Vordering met die aflewering van afleidingsfunksionaliteit aan toestelle in Edge (sekuriteit, ondersteuning vir nie-platformmodelle via ONNX, ens.)

Op die gemeenskapsblad kan u sien dat MindSpore vennote buite Huawei en China het, soos die Universiteit van Edinburgh, die Imperial College in Londen, die Universiteit van Munster (Duitsland) of die Paris-Saclay Universiteit. Hulle sê dat hulle 'n oop bestuursmodel sal volg en die hele gemeenskap sal nooi om by te dra tot die kode en die dokumentasie.

Afsluiting

Na 'n vinnige eerste oogopslag lyk dit of die regte ontwerp- en implementeringsbesluite (soos gelyktydigheid en outomatiese differensiasie) ruimte kan bied vir verbeterings en optimalisasies wat beter prestasie behaal as die raamwerke wat hulle wil oortref. Maar daar lê nog baie werk voor om PyTorch en TensorFlow te vang, en bowenal 'n gemeenskap te bou, nie net nie! Ons weet egter almal al dat met die steun van een groot maatskappy in die sektor soos Huawei, alles moontlik is, of dit was duidelik drie jaar gelede toe die eerste weergawe van PyTorch (Facebook) uitgekom het dat dit naby die hak kon wees. van TensorFlow (Google)?

Aanbeveel: