„Huawei“„MindSpore“: Naujas „TensorFlow“ir „PyTorch“konkurentas?

Turinys:

„Huawei“„MindSpore“: Naujas „TensorFlow“ir „PyTorch“konkurentas?
„Huawei“„MindSpore“: Naujas „TensorFlow“ir „PyTorch“konkurentas?

Video: „Huawei“„MindSpore“: Naujas „TensorFlow“ir „PyTorch“konkurentas?

Video: „Huawei“„MindSpore“: Naujas „TensorFlow“ir „PyTorch“konkurentas?
Video: Huawei MindSpore AI calculation framework 2024, Gegužė
Anonim

„Huawei“paskelbė, kad jos „TensorFlow“ir „PyTorch“stiliaus „MindSpore Deep Learning“tarpinė programinė įranga dabar yra atviro kodo. Šiame straipsnyje sužinokite apie svarbiausias jo savybes.

„Huawei“„MindSpore“
„Huawei“„MindSpore“

„Huawei“ką tik paskelbė, kad jos „MindSpore“programa, skirta kurti AI programas, tampa atviro kodo ir pasiekiama „GiHub“ir „Gitee“. „MindSpore“yra dar viena „Deep Learning“sistema, skirta neuroninių tinklo modelių mokymui, panaši į „TensorFlow“ar „PyTorch“, sukurta naudoti nuo „Edge“iki „Cloud“, palaikanti tiek GPU, tiek akivaizdžiai „Huawei Ascend“procesorius.

Pernai rugpjūtį, kai „Huawei“paskelbė oficialų savo „Ascend“procesoriaus paleidimą, pirmą kartą buvo pristatytas „MindSpore“, teigiantis, kad „tipiškoje„ ResNet-50 “pagrįstoje treniruotėje„ Ascend 910 “ir„ MindSpore “derinys yra maždaug dvigubai greitesnis. Mokant dirbtinio intelekto modelius, palyginti su kitomis pagrindinėmis mokymosi kortelėmis naudojant „TensorFlow“, tiesa, kad pastaraisiais metais atsirado daugybė sistemų ir galbūt „MindSpore“yra ne kas kita, kaip viena grupė, galinti net nuotoliniu būdu konkuruoti su „TensorFlow“(palaikoma „Google“) ir „PyTorch“(palaikoma „Facebook“).).

Architektūros sistema

„MindSpore“svetainėje aprašoma, kad infrastruktūrą sudaro trys pagrindiniai sluoksniai: „frontend“išraiška, grafikos variklis ir „backend“vykdymo laikas. Šiame paveikslėlyje parodyta vaizdinė schema:

Vaizdas
Vaizdas

Pirmasis „MindSpore“lygis siūlo „Python“API programuotojams. Kadangi kalbų kalbotyros principai mūsų bendruomenėje yra faktiškai „Python“, kitaip „MindSpore“nori konkuruoti su „PyTorch“ir „TensorFlow“. Naudodami šią API programuotojai gali manipuliuoti modeliais (mokymai, išvados ir kt.) Ir apdoroti duomenis. Šis pirmasis lygis taip pat apima kodo tarpinio atvaizdavimo („MindSpore IR“) palaikymą, kuriuo bus pagrįsta daugybė optimizacijų, kurias galima atlikti lygiagrečiai ir automatiškai diferencijuojant (GHLO).

Žemiau yra „Graph Engine“sluoksnis, kuris suteikia reikiamą funkciją, kad būtų galima sukurti ir vykdyti automatinį vykdymo grafiko diferenciaciją. Naudodami „MindSpore“, jie pasirinko kitokį nei „PyTorch“(kuris sukuria dinamišką vykdymo grafiką) arba „TensorFlow“automatinį diferenciacijos modelį (nors iš pradžių buvo pasirinkta galimybė sukurti efektyvesnį statinio vykdymo tvarkaraštį, dabar jis taip pat siūlo dinaminio vykdymo grafiko parinktį ir leidžia statinė grafiko versija, naudojant jos žemo lygio API dekoratorių @ tf.function).

„MindSpore“pasirinkimas yra konvertuoti šaltinio kodą į tarpinio kodo formatą („MindSpore IR“), kad būtų galima pasinaudoti dviem modeliais (daugiau informacijos ieškokite „MindSpore“svetainės skyriuje „Automatinis atskyrimas“).

Galutinį sluoksnį sudaro visos bibliotekos ir vykdymo trukmės aplinkos, reikalingos palaikyti įvairias aparatūros architektūras, kuriose kodas bus apdorojamas. Labiausiai tikėtina, kad tai bus labai panaši į kitas sistemas backend, galbūt su „Huawei“funkcijomis, tokiomis kaip bibliotekos, tokios kaip HCCL („Huawei Collective Communication Library“), prilygstančios NVIDIA NCCL („NVIDIA Collective Communication Library“).

Treniruočių vizualizavimo palaikymas

Pagal „MindSpore“mokymo programą, nors jų neįmanoma įdiegti ir naudoti, jie turi „MindInsight“, kad galėtų sukurti vizualizacijas, kurios šiek tiek primena „TensorBoard“, „TensorFlow“. Pažvelkite į kai kurias ekrano kopijas, kurias jie rodo savo svetainėje:

Vaizdas
Vaizdas
Vaizdas
Vaizdas

Remiantis vadovu, „MindSpore“šiuo metu naudoja atgalinio skambinimo mechanizmą (primenantį, kaip tai daroma su „Keras“), kad treniruotės procese įrašytų (į žurnalo failą) visus tuos norimus modelio parametrus ir hiperparametrus, taip pat skaičiavimo grafiką, kai neuronų tinklo sukūrimas į tarpinį kodą baigtas.

Lygiagretumas

Savo pamokoje jie kalba apie du lygiagretinimo režimus (DATA_PARALLEL ir AUTO_PARALLEL) ir pateikia pavyzdinį kodą, kuris „ResNet-50“moko su „CIFAR“duomenų rinkiniu „Ascend 910“procesoriui (kurio man nepavyko išbandyti). DATA_PARALLEL nurodo strategiją, paprastai vadinamą duomenų lygiagretumu, kurią sudaro mokymo duomenų padalijimas į kelis pogrupius, kurių kiekvienas veikia su ta pačia modelio kopija, tačiau skirtinguose apdorojimo vienetuose. „Graph Engine“palaikymas teikiamas kodų lygiagretinimui ir ypač AUTO_PARALLEL lygiagretumui.

AUTO_PARALLEL režimas automatiškai optimizuoja lygiagretinimą, derindamas duomenų lygiagretinimo strategiją (aptartą aukščiau) su modelio lygiagretinimo strategija, kurioje modelis yra padalintas į skirtingas dalis, o kiekviena dalis vykdoma lygiagrečiai skirtinguose apdorojimo vienetuose. Šiuo automatiniu režimu parenkama lygiagretinimo strategija, siūlanti geriausius privalumus, apie kurią galima perskaityti „MindSpore“svetainės skiltyje „Automatinis lygiagretus“(nors jose neaprašoma, kaip priimami įvertinimai ir sprendimai). Turėsime palaukti, kol techninės komandos nariai galės išplėsti dokumentus ir suprasti daugiau informacijos apie automatinio lygiagretinimo strategiją. Tačiau akivaizdu, kad ši automatinio lygiagretinimo strategija yra kritinė, ir būtent čia jie turėtų ir gali konkuruoti su „TensorFlow“ar „PyTorch“, naudodamiesi „Huawei“procesoriais, žymiai geriau.

Suplanuotas planas ir kaip prisidėti

Akivaizdu, kad reikia nuveikti daug darbo, ir šiuo metu šiame puslapyje pateikiamame išsamiame plane jie supaprastino ateinančių metų idėjas, tačiau tvirtina, kad prioritetai bus koreguojami atsižvelgiant į vartotoją.

Atsiliepimas. Šiuo metu galime rasti šias pagrindines linijas:

  1. Palaikymas daugiau modelių (laukiantys klasikiniai modeliai, GAN, RNN, transformatoriai, sustiprinti mokymosi modeliai, tikimybinis programavimas, „AutoML“ir kt.).
  2. Išplėskite API ir bibliotekas, kad pagerintumėte naudojimo ir programavimo patirtį (daugiau operatorių, daugiau optimizatorių, daugiau nuostolių funkcijų ir kt.)
  3. Išsamus „Huawei Ascend“procesoriaus palaikymas ir našumo optimizavimas (kompiliavimo optimizavimas, išteklių naudojimo tobulinimas ir kt.)
  4. Programinės įrangos šūsnio raida ir skaičiavimo grafiko optimizavimo vykdymas (tarpinio IR vaizdavimo tobulinimas, papildomų optimizavimo galimybių pridėjimas ir kt.).
  5. Palaikymas daugiau programavimo kalbų (ne tik „Python“).
  6. Patobulintas paskirstytas mokymasis, optimizuojant automatinį planavimą, duomenų paskirstymą ir kt.
  7. Patobulinkite „MindInsight“įrankį, kad programuotojui būtų lengviau „derinti“ir pagerinti hiperparametrų derinimą mokymosi proceso metu.
  8. Pažanga teikiant išvadų funkcionalumą „Edge“įrenginiams (sauga, palaikymas ne platformos modeliams per ONNX ir kt.)

Bendruomenės puslapyje galite pamatyti, kad „MindSpore“turi partnerių už „Huawei“ir Kinijos ribų, tokių kaip Edinburgo universitetas, Londono imperatoriškasis koledžas, Miunsterio universitetas (Vokietija) ar Paryžiaus-Saclay universitetas. Jie sako, kad laikysis atviro valdymo modelio ir kvies visą bendruomenę prisidėti prie kodekso ir dokumentacijos.

Išvada

Greitai iš pirmo žvilgsnio atrodo, kad teisingi projektavimo ir įgyvendinimo sprendimai (pvz., Lygiagretumas ir automatinis diferenciacija) gali suteikti galimybių tobulėti ir optimizuoti, kad būtų pasiekta geresnių rezultatų, nei kadrų, kuriuos jie nori pralenkti. Tačiau dar reikia daug nuveikti, norint sugauti „PyTorch“ir „TensorFlow“, ir visų pirma kurti bendruomenę, ne tik! Tačiau mes visi jau žinome, kad remiant vienai didelei sektoriaus įmonei, tokiai kaip „Huawei“, viskas yra įmanoma, arba prieš trejus metus buvo akivaizdu, kai pasirodė pirmoji „PyTorch“(„Facebook“) versija, kad ji gali būti arti kulno iš „TensorFlow“(„Google“)?

Rekomenduojamas: