Huawei MindSpore: Uus Konkurent TensorFlow Ja PyTorchile?

Sisukord:

Huawei MindSpore: Uus Konkurent TensorFlow Ja PyTorchile?
Huawei MindSpore: Uus Konkurent TensorFlow Ja PyTorchile?

Video: Huawei MindSpore: Uus Konkurent TensorFlow Ja PyTorchile?

Video: Huawei MindSpore: Uus Konkurent TensorFlow Ja PyTorchile?
Video: MindSpore от Huawei: новый конкурент для TensorFlow и PyTorch? 2024, Mai
Anonim

Huawei teatas, et tema TensorFlow ja PyTorch stiilis MindSpore Deep Learning vahevara on nüüd avatud lähtekoodiga. Siit saate teada selle kõige olulisemad omadused.

MindSpore, autor: Huawei
MindSpore, autor: Huawei

Huawei teatas äsja, et tema MindSpore'i raamistik tehisintellektide arendamiseks on muutumas avatud lähtekoodiga ning saadaval ka GiHubis ja Gitees. MindSpore on teine Deep Learning raamistik närvivõrgu mudelite koolitamiseks, sarnane TensorFlow või PyTorchiga, mis on mõeldud kasutamiseks servast pilve, mis toetab nii GPU-sid kui ka ilmselgelt Huawei Asceni protsessoreid.

Eelmise aasta augustis, kui Huawei teatas oma Asseni protsessori ametlikust turule toomisest, tutvustati esmakordselt MindSpore'i, öeldes, et „tüüpilisel ResNet-50-põhisel koolitusel on Ascend 910 ja MindSpore kombinatsioon umbes kaks korda kiirem. Tehisintellekti mudelite ja teiste suuremate õppekaartide koolitamisel TensorFlow abil on tõsi, et viimastel aastatel on välja töötatud palju raamistikke ja võib-olla pole MindSpore midagi muud kui üks rühm, mis suudab isegi eemalt konkureerida TensorFlow'iga (mida toetab Google) ja PyTorchiga (toetab Facebook).

Süsteemi arhitektuur

MindSpore'i veebisait kirjeldab, et infrastruktuur koosneb kolmest põhikihist: esiosa avaldis, graafikamootor ja taustaprogrammi käitusaeg. Järgmisel joonisel on visuaalne diagramm:

Pilt
Pilt

MindSpore'i esimene tase pakub programmeerijatele Pythoni API-d. Kuna meie kogukonnas on keeleteadus de facto Python ja muidu tahab MindSpore konkureerida PyTorchi ja TensorFlow'ga. Selle API abil saavad programmeerijad manipuleerida mudelitega (koolitus, järeldused jne) ja töödelda andmeid. See esimene tasand sisaldab ka koodi ajutise esitamise (MindSpore IR) tuge, millel põhinevad paljud optimeerimised, mida saab teha paralleelselt ja automaatselt diferentseeritult (GHLO).

Allpool on kiht Graph Engine, mis tagab vajaliku funktsionaalsuse täitmisgraafiku automaatse eristamise loomiseks ja teostamiseks. MindSpore'i abil valisid nad automaatse diferentseerimismudeli kui PyTorch (mis loob dünaamilise teostusgraafiku) või TensorFlow (kuigi algselt valiti tõhusama staatilise täitmisgraafiku loomise võimalus, pakub see nüüd ka dünaamilise teostusgraafiku valikut ja võimaldab graafiku staatiline versioon, kasutades selle madalama taseme API-i @ tf.function dekoraatorit).

MindSpore'i valik on teisendada lähtekood vahekoodivorminguks (MindSpore IR), et kasutada neid kahte mudelit (lisateabe saamiseks vaadake MindSpore'i veebisaidi jaotist "Automaatne eraldamine").

Viimane kiht koosneb kõigist teekidest ja käituskeskkondadest, mis on vajalikud erinevate riistvaraarhitektuuride toetamiseks, milles koodi töödeldakse. Tõenäoliselt on see taustaprogramm, mis on väga sarnane teiste raamistikega, võib-olla koos Huawei funktsioonidega, näiteks teekidega nagu HCCL (Huawei kollektiivse kommunikatsiooni raamatukogu), mis on samaväärne NVIDIA NCCL-iga (NVIDIA kollektiivse kommunikatsiooni raamatukogu).

Koolituse visualiseerimise tugi

MindSpore'i õpetuse kohaselt on nende installimine ja kasutamine võimatu, kuid neil on MindInsight, et luua visualiseeringuid, mis meenutavad mõnevõrra TensorBoardi, TensorFlow'i. Vaadake mõnda ekraanipilti, mida nad oma veebisaidil näitavad:

Pilt
Pilt
Pilt
Pilt

Juhendi kohaselt kasutab MindSpore praegu tagasihelistamismehhanismi (meenutades, kuidas Kerasega tehakse), et kirjutada (logifaili) koolitusprotsessi käigus kõik need mudeli parameetrid ja hüperparameetrid, mida me soovime, samuti arvutuste ajakava, kui närvivõrgu koostamine vahekoodiks on lõppenud.

Paralleelsus

Oma õpetuses räägivad nad kahest paralleelsusrežiimist (DATA_PARALLEL ja AUTO_PARALLEL) ning pakuvad näidiskoodi, mis koolitab ResNet-50 koos CIFAR-andmekogumiga Ascend 910 protsessori jaoks (mida ma ei suutnud testida). DATA_PARALLEL viitab strateegiale, mida tavaliselt nimetatakse andmete paralleelsuseks ja mis koosneb treeningandmete jagamisest mitmeks alamhulgaks, millest igaüks töötab mudeli samal koopial, kuid erinevates töötlusüksustes. Graafikumootori tugi on ette nähtud koodi paralleelseks muutmiseks ja eriti AUTO_PARALLEL paralleelsuse jaoks.

Režiim AUTO_PARALLEL optimeerib paralleelsuse automaatselt, ühendades andmete paralleelsuse strateegia (käsitletud eespool) mudeli paralleelsuse strateegiaga, milles mudel on jagatud erinevateks osadeks ja iga osa täidetakse paralleelselt erinevates töötlusüksustes. See automaatrežiim valib parimate eeliste pakkuva paralleelstrateegia, millest saab lugeda MindSpore'i veebisaidi jaotisest Automaatne paralleel (kuigi need ei kirjelda, kuidas hinnanguid ja otsuseid tehakse). Peame ootama, kuni tehnilise meeskonna jaoks on aega dokumentatsiooni laiendamiseks ja automaatse paralleelstrateegia üksikasjade mõistmiseks. Kuid on selge, et see automaatse paralleelimise strateegia on kriitiline ja just seal peaksid ja saaksid nad võistelda TensorFlow või PyTorchiga, saades Huawei protsessorite abil oluliselt parema jõudluse.

Kavandatud tegevuskava ja kuidas panustada

Teha on ilmselgelt palju tööd ja siinkohal on nad sellel lehel esitatud ulatuslikus tegevuskavas sujuvamaks muutnud järgmise aasta ideed, kuid väidavad, et prioriteete kohandatakse vastavalt kasutajale.

Tagasiside. Praegu võime leida need põhiliinid:

  1. Toetus veel mudelitele (ootel klassikalised mudelid, GAN, RNN, trafod, võimendatud õppemudelid, tõenäosuslik programmeerimine, AutoML jne).
  2. Laiendage API-sid ja teeke, et parandada kasutatavust ja programmeerimiskogemust (rohkem operaatoreid, rohkem optimeerijaid, rohkem kadumisfunktsioone jne)
  3. Põhjalik Huawei Ascend protsessori tugi ja jõudluse optimeerimine (kompileerimise optimeerimine, ressursside kasutamise täiustamine jne)
  4. Tarkvarapaketi areng ja arvutuslike graafikute optimeerimiste teostamine (infrapuna vahepealsete kujutiste parandamine, täiendavate optimeerimisvõimaluste lisamine jne).
  5. Toetus rohkemale programmeerimiskeelele (mitte ainult Pythonile).
  6. Täiustatud hajutatud õpe koos automaatse ajastamise, andmete jaotamise jms optimeerimisega
  7. Parandage tööriista MindInsight, et programmeerijal oleks õppeprotsessi ajal lihtsam "siluda" ja parandada hüperparameetrite häälestamist.
  8. Edge'i seadmetes järeldusfunktsioonide edastamine (turvalisus, tugi platvormivälistele mudelitele ONNX-i kaudu jne)

Kogukonna lehel näete, et MindSporel on partnereid väljaspool Huawei ja Hiinat, näiteks Edinburghi ülikool, Londoni Imperial College, Munsteri ülikool (Saksamaa) või Paris-Saclay ülikool. Nad ütlevad, et järgivad avatud valitsemismudelit ja kutsuvad kogu kogukonda panustama nii koodeksi kui ka dokumentatsiooni koostamisse.

Järeldus

Kiire esmapilgul näib, et õiged kujundus- ja rakendusotsused (nagu samaaegsus ja automaatne diferentseerimine) võivad anda ruumi parandustele ja optimeerimistele, mis saavutavad parema jõudluse kui raamistikud, mida nad tahavad ületada. Kuid PyTorchi ja TensorFlow püüdmiseks on veel palju tööd ees ja ennekõike kogukonna loomine, mitte ainult! Kuid me kõik juba teame, et sektori ühe suure ettevõtte, nagu Huawei, toel on kõik võimalik või oli ilmne juba kolm aastat tagasi, kui PyTorchi (Facebook) esimene versioon välja tuli, et see võib olla kanna lähedal TensorFlow'ist (Google)?

Soovitan: