Huaweis MindSpore: En Ny Konkurrent For TensorFlow Og PyTorch?

Innholdsfortegnelse:

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

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

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

Huawei kunngjorde at TensorFlow og PyTorch-stil MindSpore Deep Learning mellomvare nå er åpen kildekode. Finn ut i denne artikkelen de viktigste egenskapene.

MindSpore av Huawei
MindSpore av Huawei

Huawei har nettopp kunngjort at MindSpore-rammeverket for utvikling av AI-applikasjoner blir åpen kildekode og tilgjengelig på GiHub og Gitee. MindSpore er et annet Deep Learning-rammeverk for opplæring av nevrale nettverksmodeller, som ligner på TensorFlow eller PyTorch, designet for bruk fra Edge til Cloud, som støtter både GPUer og åpenbart Huawei Ascend-prosessorer.

I august i fjor, da Huawei kunngjorde den offisielle lanseringen av Ascend-prosessoren, ble MindSpore først introdusert og sa at i en typisk ResNet-50-basert treningsøkt er kombinasjonen av Ascend 910 og MindSpore omtrent dobbelt så rask. Når du trener AI-modeller mot andre store læringskort ved hjelp av TensorFlow, er det sant at mange rammer har dukket opp de siste årene, og kanskje MindSpore ikke er noe mer enn en gruppe som til og med kan konkurrere eksternt med TensorFlow (støttet av Google) og PyTorch (støttet av Facebook).

System arkitektur

Nettstedet MindSpore beskriver at infrastrukturen består av tre hovedlag: frontend-uttrykk, grafikkmotor og backend-kjøretid. Følgende figur viser et visuelt diagram:

Bilde
Bilde

Det første nivået av MindSpore tilbyr et Python API for programmerere. Siden språklingvistikk i samfunnet vårt er de facto Python, og ellers vil MindSpore konkurrere med PyTorch og TensorFlow. Med dette API-et kan programmerere manipulere modeller (opplæring, slutning osv.) Og behandle data. Dette første nivået inkluderer også støtte for kodeinterimsrepresentasjon (MindSpore IR), som vil være basert på mange optimaliseringer som kan utføres i parallellisering og automatisk differensiering (GHLO).

Nedenfor er Graph Engine-laget som gir den nødvendige funksjonaliteten for å opprette og utføre automatisk differensiering av utførelsesgrafen. Med MindSpore valgte de en annen differensieringsmodell enn PyTorch (som genererer en dynamisk kjøringsgraf) eller TensorFlow (selv om alternativet for å lage en mer effektiv statisk kjøringsplan opprinnelig ble valgt, tilbyr den nå også et dynamisk kjøringsgrafalternativ og tillater en statisk versjon av grafen ved hjelp av @ tf.function dekoratør av dets lave nivå API).

MindSpores valg er å konvertere kildekoden til mellomkodeformat (MindSpore IR) for å dra nytte av de to modellene (for mer informasjon, se delen "Automatisk separasjon" på MindSpore-nettstedet).

Det endelige laget består av alle biblioteker og kjøretidsmiljøer som trengs for å støtte de forskjellige maskinvarearkitekturene der koden skal behandles. Mest sannsynlig vil det være en backend som er veldig lik andre rammer, kanskje med Huawei-funksjoner, for eksempel biblioteker som HCCL (Huawei Collective Communication Library), tilsvarende NVIDIA NCCL (NVIDIA Collective Communication Library).

Opplæring visualisering støtte

I følge MindSpore-opplæringen, selv om det var umulig å installere og bruke dem, har de MindInsight for å lage visualiseringer som minner litt om TensorBoard, TensorFlow. Ta en titt på noen skjermbilder de viser på nettstedet deres:

Bilde
Bilde
Bilde
Bilde

Ifølge håndboken bruker MindSpore for tiden en tilbakekallingsmekanisme (som minner om hvordan det gjøres med Keras) for å skrive (i en loggfil) i prosessen med å trene opp alle de modellparametrene og hyperparametrene vi ønsker, samt beregningsplanen når kompilering av nevrale nettverk til mellomkode er fullført.

Parallelisme

I opplæringen snakker de om to parallelliseringsmodi (DATA_PARALLEL og AUTO_PARALLEL) og gir eksempler på kode som trener ResNet-50 med et CIFAR-datasett for en Ascend 910-prosessor (som jeg ikke klarte å teste). DATA_PARALLEL refererer til en strategi kjent som dataparallellisme, som består i å dele opplæringsdata i flere delmengder, som hver kjører på samme replika av modellen, men i forskjellige prosesseringsenheter. Grafmotorstøtte er gitt for parallellisering av koder og spesielt for AUTO_PARALLEL parallellisme.

AUTO_PARALLEL-modus optimaliserer automatisk parallellisering ved å kombinere dataparalliseringsstrategien (diskutert ovenfor) med modellparallelliseringsstrategien, der modellen er delt inn i forskjellige deler, og hver del utføres parallelt i forskjellige prosesseringsenheter. Denne automatiske modusen velger parallelliseringsstrategien som gir de beste fordelene, som du kan lese om i delen Automatic Parallel på nettstedet MindSpore (selv om de ikke beskriver hvordan estimater og beslutninger tas). Vi må vente på å ta oss tid til det tekniske teamet for å utvide dokumentasjonen og forstå mer detaljer om strategien for automatisk parallellisering. Men det er klart at denne strategien for automatisk parallellisering er avgjørende, og det er her de skal og kan konkurrere med TensorFlow eller PyTorch, og får betydelig bedre ytelse ved hjelp av Huawei-prosessorer.

Planlagt veikart og hvordan du kan bidra

Det er åpenbart mye arbeid å gjøre, og på dette tidspunktet har de strømlinjeformet ideene de har i tankene for neste år i den omfattende veikartet som presenteres på denne siden, men de argumenterer for at prioriteringene vil bli justert i henhold til brukeren.

Tilbakemelding. For øyeblikket kan vi finne disse hovedlinjene:

  1. Støtte for flere modeller (i påvente av klassiske modeller, GAN, RNN, Transformers, forsterkede læringsmodeller, sannsynlig programmering, AutoML, etc.).
  2. Utvid APIer og biblioteker for å forbedre brukervennlighet og programmeringsopplevelse (flere operatører, flere optimaliserere, flere tapsfunksjoner osv.)
  3. Omfattende Huawei Ascend-prosessorstøtte og ytelsesoptimalisering (kompileringsoptimalisering, ressursutnyttelse, etc.)
  4. Utvikling av programvarestakken og utførelse av beregningsgrafoptimaliseringer (forbedring av den mellomliggende IR-representasjonen, tillegg av ytterligere optimaliseringsmuligheter osv.).
  5. Støtte for flere programmeringsspråk (ikke bare Python).
  6. Forbedret distribuert læring med optimalisering av automatisk planlegging, datadistribusjon, etc.
  7. Forbedre MindInsight-verktøyet for å gjøre det lettere for programmereren å "feilsøke" og forbedre innstillingen av hyperparameter under læringsprosessen.
  8. Fremgang med å levere inferensfunksjonalitet til enheter i Edge (sikkerhet, støtte for ikke-plattformsmodeller via ONNX, etc.)

På fellessiden kan du se at MindSpore har partnere utenfor Huawei og Kina, som University of Edinburgh, Imperial College London, University of Munster (Tyskland) eller Paris-Saclay University. De sier at de vil følge en åpen styringsmodell og invitere hele samfunnet til å bidra til både koden og dokumentasjonen.

Konklusjon

Etter et raskt første øyekast ser det ut til at de riktige design- og implementeringsbeslutningene (som samtidighet og automatisk differensiering) kan gi rom for forbedringer og optimaliseringer som oppnår bedre ytelse enn rammene de vil utkonkurrere. Men det er fremdeles mye arbeid fremover for å fange PyTorch og TensorFlow, og fremfor alt bygge et samfunn, ikke bare! Imidlertid vet vi alle sammen at med støtte fra et stort selskap i sektoren som Huawei, er alt mulig, eller det var åpenbart for tre år siden da den første versjonen av PyTorch (Facebook) kom ut at den kunne være nær hælen av TensorFlow (Google)?

Anbefalt: