Huawei's MindSpore: Een Nieuwe Concurrent Voor TensorFlow En PyTorch?

Inhoudsopgave:

Huawei's MindSpore: Een Nieuwe Concurrent Voor TensorFlow En PyTorch?
Huawei's MindSpore: Een Nieuwe Concurrent Voor TensorFlow En PyTorch?

Video: Huawei's MindSpore: Een Nieuwe Concurrent Voor TensorFlow En PyTorch?

Video: Huawei's MindSpore: Een Nieuwe Concurrent Voor TensorFlow En PyTorch?
Video: MindSpore от Huawei: новый конкурент для TensorFlow и PyTorch? 2024, November
Anonim

Huawei heeft aangekondigd dat zijn MindSpore Deep Learning-middleware in TensorFlow- en PyTorch-stijl nu open source is. Ontdek in dit artikel de belangrijkste kenmerken.

MindSpore van Huawei
MindSpore van Huawei

Huawei heeft zojuist aangekondigd dat zijn MindSpore-framework voor het ontwikkelen van AI-applicaties open source wordt en beschikbaar is op GiHub en Gitee. MindSpore is een ander Deep Learning-framework voor het trainen van neurale netwerkmodellen, vergelijkbaar met TensorFlow of PyTorch, ontworpen voor gebruik van Edge tot Cloud, dat zowel GPU's als uiteraard Huawei Ascend-processors ondersteunt.

Afgelopen augustus, toen Huawei de officiële lancering van zijn Ascend-processor aankondigde, werd MindSpore voor het eerst geïntroduceerd, waarin stond dat in een typische op ResNet-50 gebaseerde trainingssessie, de combinatie van Ascend 910 en MindSpore ongeveer twee keer zo snel is. Bij het trainen van AI-modellen versus andere belangrijke leerkaarten met behulp van TensorFlow Het is waar dat er de afgelopen jaren veel frameworks zijn ontstaan, en misschien is MindSpore niets meer dan één groep die zelfs op afstand kan concurreren met TensorFlow (ondersteund door Google) en PyTorch (ondersteund door Facebook).

Systeem Architectuur

De MindSpore-website beschrijft dat de infrastructuur uit drie hoofdlagen bestaat: frontend-expressie, grafische engine en backend-runtime. De volgende afbeelding toont een visueel diagram:

Afbeelding
Afbeelding

Het eerste niveau van MindSpore biedt een Python API voor programmeurs. Aangezien taallinguïstiek in onze gemeenschap de facto Python is, en anders wil MindSpore concurreren met PyTorch en TensorFlow. Met deze API kunnen programmeurs modellen manipuleren (training, inferentie, etc.) en data verwerken. Dit eerste niveau omvat ook ondersteuning voor code-interimrepresentatie (MindSpore IR), waarop veel optimalisaties zullen worden gebaseerd die kunnen worden uitgevoerd in parallellisatie en automatische differentiatie (GHLO).

Hieronder vindt u de Graph Engine-laag die de nodige functionaliteit biedt om automatische differentiatie van de uitvoeringsgrafiek te maken en uit te voeren. Met MindSpore kozen ze voor een ander automatisch differentiatiemodel dan PyTorch (dat een dynamische uitvoeringsgrafiek genereert) of TensorFlow (hoewel oorspronkelijk werd gekozen voor de optie om een efficiënter statisch uitvoeringsschema te maken, biedt het nu ook een dynamische uitvoeringsgrafiekoptie en maakt het mogelijk een statische versie van de grafiek met behulp van de @ tf.function decorateur van zijn low-level API).

De keuze van MindSpore is om de broncode te converteren naar een tussencodeformaat (MindSpore IR) om voordeel te halen uit de twee modellen (voor meer informatie, zie de sectie “Automatische scheiding” op de MindSpore-website).

De laatste laag bestaat uit alle bibliotheken en runtime-omgevingen die nodig zijn ter ondersteuning van de verschillende hardware-architecturen waarin de code wordt verwerkt. Hoogstwaarschijnlijk zal het een backend zijn die erg lijkt op andere frameworks, misschien met Huawei-functies, zoals bibliotheken zoals HCCL (Huawei Collective Communication Library), equivalent aan NVIDIA NCCL (NVIDIA Collective Communication Library).

Ondersteuning voor training visualisatie

Volgens de MindSpore-zelfstudie, hoewel het onmogelijk was om ze te installeren en te gebruiken, hebben ze MindInsight om visualisaties te maken die enigszins doen denken aan TensorBoard, TensorFlow. Bekijk enkele screenshots die ze op hun website laten zien:

Afbeelding
Afbeelding
Afbeelding
Afbeelding

Volgens de handleiding gebruikt MindSpore momenteel een callback-mechanisme (dat doet denken aan hoe het wordt gedaan met Keras) om (in een logbestand) te schrijven tijdens het trainen van al die modelparameters en hyperparameters die we willen, evenals het berekeningsschema wanneer het compileren van het neurale netwerk in tussencode is voltooid.

parallellisme

In hun tutorial praten ze over twee parallellisatiemodi (DATA_PARALLEL en AUTO_PARALLEL) en geven ze voorbeeldcode die ResNet-50 traint met een CIFAR-dataset voor een Ascend 910-processor (die ik niet heb kunnen testen). DATA_PARALLEL verwijst naar een strategie die algemeen bekend staat als gegevensparallellisme, die bestaat uit het verdelen van trainingsgegevens in meerdere subsets, die elk op dezelfde replica van het model draaien, maar in verschillende verwerkingseenheden. Graph Engine-ondersteuning wordt geboden voor codeparallellisatie en in het bijzonder voor AUTO_PARALLEL-parallellisme.

De modus AUTO_PARALLEL optimaliseert automatisch de parallellisatie door de gegevensparallellisatiestrategie (hierboven besproken) te combineren met de modelparallellisatiestrategie, waarbij het model in verschillende delen is verdeeld en elk deel parallel wordt uitgevoerd in verschillende verwerkingseenheden. Deze automatische modus selecteert de parallellisatiestrategie die de beste voordelen biedt, waarover kan worden gelezen in de sectie Automatische parallel op de MindSpore-website (hoewel ze niet beschrijven hoe schattingen en beslissingen worden genomen). We zullen moeten wachten om tijd te maken voor het technische team om de documentatie uit te breiden en meer details te begrijpen over de automatische parallellisatiestrategie. Maar het is duidelijk dat deze automatische parallellisatiestrategie van cruciaal belang is, en dit is waar ze moeten en kunnen concurreren met TensorFlow of PyTorch, en aanzienlijk betere prestaties behalen met Huawei-processors.

Geplande routekaart en hoe u kunt bijdragen

Er is duidelijk nog veel werk aan de winkel en op dit moment hebben ze de ideeën die ze voor volgend jaar in gedachten hebben gestroomlijnd in de uitgebreide roadmap die op deze pagina wordt gepresenteerd, maar ze stellen dat de prioriteiten zullen worden aangepast aan de gebruiker.

Feedback. Op dit moment kunnen we deze hoofdlijnen vinden:

  1. Ondersteuning voor meer modellen (klassieke modellen in afwachting, GAN, RNN, Transformers, Amplified Learning-modellen, probabilistische programmering, AutoML, enz.).
  2. Breid API's en bibliotheken uit om de bruikbaarheid en programmeerervaring te verbeteren (meer operators, meer optimizers, meer verliesfuncties, enz.)
  3. Uitgebreide Huawei Ascend-processorondersteuning en prestatie-optimalisatie (compilatie-optimalisatie, verbetering van resourcegebruik, enz.)
  4. Evolutie van de softwarestack en uitvoering van computationele grafiekoptimalisaties (verbetering van de intermediaire IR-representatie, toevoeging van extra optimalisatiemogelijkheden, enz.).
  5. Ondersteuning voor meer programmeertalen (niet alleen Python).
  6. Verbeterd gedistribueerd leren met optimalisatie van automatische planning, gegevensdistributie, enz.
  7. Verbeter de MindInsight-tool om het de programmeur gemakkelijker te maken om "debug" te maken en de afstemming van hyperparameters tijdens het leerproces te verbeteren.
  8. Vooruitgang bij het leveren van inferentiefunctionaliteit aan apparaten in Edge (beveiliging, ondersteuning voor niet-platformmodellen via ONNX, enz.)

Op de communitypagina kun je zien dat MindSpore partners heeft buiten Huawei en China, zoals de University of Edinburgh, Imperial College London, University of Munster (Duitsland) of Paris-Saclay University. Ze zeggen dat ze een open bestuursmodel zullen volgen en de hele gemeenschap zullen uitnodigen om bij te dragen aan zowel de code als de documentatie.

Gevolgtrekking

Na een snelle eerste blik lijkt het erop dat de juiste ontwerp- en implementatiebeslissingen (zoals gelijktijdigheid en automatische differentiatie) ruimte kunnen bieden voor verbeteringen en optimalisaties die betere prestaties opleveren dan de frameworks die ze willen overtreffen. Maar er is nog veel werk voor de boeg om PyTorch en TensorFlow te vangen en vooral een community op te bouwen, niet alleen! We weten echter allemaal al dat met de steun van één groot bedrijf in de sector zoals Huawei, alles mogelijk is, of het was drie jaar geleden duidelijk toen de eerste versie van PyTorch (Facebook) uitkwam dat het dicht bij de hiel zou kunnen zijn van TensorFlow (Google)?

Aanbevolen: