Huaweis MindSpore: En Ny Konkurrent Til TensorFlow Og PyTorch?

Indholdsfortegnelse:

Huaweis MindSpore: En Ny Konkurrent Til TensorFlow Og PyTorch?
Huaweis MindSpore: En Ny Konkurrent Til TensorFlow Og PyTorch?

Video: Huaweis MindSpore: En Ny Konkurrent Til TensorFlow Og PyTorch?

Video: Huaweis MindSpore: En Ny Konkurrent Til TensorFlow Og PyTorch?
Video: MindSpore от Huawei: новый конкурент для TensorFlow и PyTorch? 2024, Kan
Anonim

Huawei meddelte, at dets TensorFlow og PyTorch-stil MindSpore Deep Learning middleware nu er open source. Find ud af i denne artikel dens vigtigste egenskaber.

MindSpore af Huawei
MindSpore af Huawei

Huawei har netop meddelt, at MindSpore-rammen til udvikling af AI-applikationer bliver open source og tilgængelig på GiHub og Gitee. MindSpore er en anden Deep Learning-ramme til træning af neurale netværksmodeller, der ligner TensorFlow eller PyTorch, designet til brug fra Edge til Cloud, som understøtter både GPU'er og naturligvis Huawei Ascend-processorer.

Sidste august, da Huawei annoncerede den officielle lancering af sin Ascend-processor, blev MindSpore først introduceret og sagde, at”i en typisk ResNet-50-baseret træningssession er kombinationen af Ascend 910 og MindSpore ca. dobbelt så hurtig. Når du træner AI-modeller i forhold til andre større læringskort ved hjælp af TensorFlow, er det rigtigt, at der er opstået mange rammer i de seneste år, og måske er MindSpore ikke andet end en gruppe, der endda kan konkurrere eksternt med TensorFlow (bakket op af Google) og PyTorch (støttet af Facebook).

Systemarkitektur

MindSpore-webstedet beskriver, at infrastrukturen består af tre hovedlag: frontendekspression, grafikmotor og backend runtime. Følgende figur viser et visuelt diagram:

Billede
Billede

Det første niveau af MindSpore tilbyder en Python API til programmører. Da sproglingvistik i vores samfund er de facto Python, og ellers ønsker MindSpore at konkurrere med PyTorch og TensorFlow. Med denne API kan programmører manipulere modeller (træning, slutning osv.) Og behandle data. Dette første niveau inkluderer også understøttelse af kodeinterimsrepræsentation (MindSpore IR), hvorpå mange optimeringer vil være baseret, der kan udføres parallelt og automatisk differentiering (GHLO).

Nedenfor er Graph Engine-laget, der giver den nødvendige funktionalitet til at oprette og udføre automatisk differentiering af eksekveringsgrafen. Med MindSpore valgte de en anden differentieringsmodel end PyTorch (som genererer en dynamisk eksekveringsgraf) eller TensorFlow (selvom muligheden for at oprette en mere effektiv statisk udførelsesplan oprindeligt blev valgt, tilbyder den nu også en dynamisk eksekveringsgrafindstilling og tillader en statisk version af grafen ved hjælp af @ tf.function dekorator af dens lave niveau API).

MindSpores valg er at konvertere kildekoden til mellemkodeformat (MindSpore IR) for at drage fordel af de to modeller (for mere information, se afsnittet “Automatisk adskillelse” på MindSpore-webstedet).

Det sidste lag består af alle biblioteker og runtime-miljøer, der er nødvendige for at understøtte de forskellige hardwarearkitekturer, hvor koden skal behandles. Mest sandsynligt vil det være en backend, der minder meget om andre rammer, måske med Huawei-funktioner, såsom biblioteker som HCCL (Huawei Collective Communication Library), svarende til NVIDIA NCCL (NVIDIA Collective Communication Library).

Træning visualisering support

Ifølge MindSpore-tutorialen, selvom det var umuligt at installere og bruge dem, har de MindInsight til at skabe visualiseringer, der minder noget om TensorBoard, TensorFlow. Se på nogle skærmbilleder, de viser på deres hjemmeside:

Billede
Billede
Billede
Billede

Ifølge manualen bruger MindSpore i øjeblikket en tilbagekaldsmekanisme (der minder om, hvordan det gøres med Keras) til at skrive (i en logfil) i processen med at træne alle de modelparametre og hyperparametre, vi ønsker, samt beregningsplanen, når kompilering af neuralt netværk til mellemkode er komplet.

Parallelisme

I deres vejledning taler de om to paralleliseringstilstande (DATA_PARALLEL og AUTO_PARALLEL) og giver eksempler på kode, der træner ResNet-50 med et CIFAR-datasæt til en Ascend 910-processor (som jeg ikke kunne teste). DATA_PARALLEL henviser til en strategi, der almindeligvis kaldes dataparallelisme, som består i at opdele træningsdata i flere undergrupper, der hver kører på den samme replika af modellen, men i forskellige behandlingsenheder. Grafmotorsupport leveres til kodeparallelisering og især til AUTO_PARALLEL parallelisme.

AUTO_PARALLEL-tilstand optimerer automatisk parallelisering ved at kombinere dataparalleliseringsstrategien (diskuteret ovenfor) med modelparalleliseringsstrategien, hvor modellen er opdelt i forskellige dele, og hver del udføres parallelt i forskellige behandlingsenheder. Denne automatiske tilstand vælger den paralleliseringsstrategi, der giver de bedste fordele, som kan læses om i afsnittet Automatic Parallel på MindSpore-webstedet (skønt de ikke beskriver, hvordan skøn og beslutninger træffes). Vi bliver nødt til at vente med at få tid til det tekniske team til at udvide dokumentationen og forstå flere detaljer om den automatiske paralleliseringsstrategi. Men det er klart, at denne auto-paralleliseringsstrategi er kritisk, og det er her, de skal og kan konkurrere med TensorFlow eller PyTorch, hvilket får betydeligt bedre ydeevne ved hjælp af Huawei-processorer.

Planlagt køreplan og hvordan man kan bidrage

Der er åbenbart meget arbejde at gøre, og på dette tidspunkt har de strømlineret de ideer, de har i tankerne for næste år i den omfattende køreplan, der præsenteres på denne side, men de hævder, at prioriteterne vil blive justeret efter brugeren.

Feedback. I øjeblikket kan vi finde disse hovedlinjer:

  1. Understøttelse af flere modeller (i afventning af klassiske modeller, GAN, RNN, Transformere, forstærkede læringsmodeller, probabilistisk programmering, AutoML osv.).
  2. Udvid API'er og biblioteker for at forbedre brugervenligheden og programmeringsoplevelsen (flere operatører, flere optimeringer, flere tabsfunktioner osv.)
  3. Omfattende Huawei Ascend-processorsupport og ydeevneoptimering (kompileringsoptimering, forbedring af ressourceudnyttelse osv.)
  4. Udvikling af softwarestakken og udførelse af beregningsgrafoptimeringer (forbedring af den mellemliggende IR-repræsentation, tilføjelse af yderligere optimeringsfunktioner osv.).
  5. Støtte til flere programmeringssprog (ikke kun Python).
  6. Forbedret distribueret læring med optimering af automatisk planlægning, datadistribution mv.
  7. Forbedre MindInsight-værktøjet for at gøre det lettere for programmøren at "fejle" og forbedre hyperparameter-tuning under læringsprocessen.
  8. Fremskridt med at levere inferensfunktionalitet til enheder i Edge (sikkerhed, understøttelse af ikke-platformsmodeller via ONNX osv.)

På community-siden kan du se, at MindSpore har partnere uden for Huawei og Kina, såsom University of Edinburgh, Imperial College London, University of Munster (Germany) eller Paris-Saclay University. De siger, at de vil følge en åben styringsmodel og opfordre hele samfundet til at bidrage til både koden og dokumentationen.

Konklusion

Efter et hurtigt første øjekast ser det ud til, at de rigtige beslutninger om design og implementering (som samtidighed og automatisk differentiering) kan tilføje plads til forbedringer og optimeringer, der opnår bedre ydeevne end de rammer, de ønsker at overgå. Men der er stadig meget arbejde fremad for at fange PyTorch og TensorFlow og frem for alt opbygge et samfund, ikke kun! Vi ved alle imidlertid allerede, at med opbakning fra et stort firma i sektoren som Huawei, er alt muligt, eller det var tydeligt for tre år siden, da den første version af PyTorch (Facebook) kom ud, at den kunne være tæt på hælen fra TensorFlow (Google)?

Anbefalede: