Huawei ilmoitti, että sen TensorFlow- ja PyTorch-tyylinen MindSpore Deep Learning -väliohjelmisto on nyt avoimen lähdekoodin. Selvitä tässä artikkelissa sen tärkeimmät ominaisuudet.
Huawei on juuri ilmoittanut, että sen MindSpore-kehys tekoälysovellusten kehittämiseksi on tulossa avoimen lähdekoodin ja saataville GiHubille ja Giteelle. MindSpore on toinen Deep Learning -kehys hermoverkkomallien kouluttamiseen, samanlainen kuin TensorFlow tai PyTorch, joka on suunniteltu käytettäväksi reunasta pilveen, joka tukee sekä GPU: ita että ilmeisesti Huawei Ascend -suoritimia.
Viime elokuussa, kun Huawei ilmoitti Ascend-prosessorinsa virallisesta lanseerauksesta, MindSpore esiteltiin ensimmäisen kerran ja todettiin, että tyypillisessä ResNet-50-pohjaisessa harjoituksessa Ascend 910: n ja MindSporen yhdistelmä on noin kaksi kertaa nopeampi. Kun harjoitellaan tekoälymalleja verrattuna muihin tärkeimpiin oppimiskortteihin TensorFlow-tekniikkaa käyttäen, on totta, että viime vuosina on kehitetty monia kehyksiä, ja ehkä MindSpore on vain yksi ryhmä, joka voi jopa kilpailla TensorFlow'n (Googlen tukema) ja PyTorchin (Facebook tukee) kanssa).
Järjestelmäarkkitehtuuri
MindSporen verkkosivusto kuvaa, että infrastruktuuri koostuu kolmesta pääkerroksesta: käyttöliittymän ilmaisusta, grafiikkamoottorista ja backendin ajonajasta. Seuraava kuva esittää visuaalisen kaavion:
MindSporen ensimmäinen taso tarjoaa Python-sovellusliittymän ohjelmoijille. Koska yhteisömme kielioppi on tosiasiallisesti Python, ja muuten MindSpore haluaa kilpailla PyTorchin ja TensorFlow'n kanssa. Tämän API: n avulla ohjelmoijat voivat manipuloida malleja (koulutus, päättely jne.) Ja käsitellä tietoja. Tämä ensimmäinen taso sisältää myös koodin väliaikaisen esityksen (MindSpore IR) tuen, johon perustuvat monet optimoinnit, jotka voidaan suorittaa rinnakkaistamisen ja automaattisen erottelun (GHLO) avulla.
Alla on Graph Engine -kerros, joka tarjoaa tarvittavat toiminnot suorituskaavion automaattisen erottelun luomiseksi ja suorittamiseksi. MindSporen avulla he valitsivat muun automaattisen erottelumallin kuin PyTorch (joka luo dynaamisen suorituskaavion) tai TensorFlow (vaikka alun perin valittiin mahdollisuus luoda tehokkaampi staattinen toteutusaikataulu, se tarjoaa nyt myös dynaamisen suorituskaaviovaihtoehdon ja sallii staattinen versio kaaviosta käyttämällä sen matalan tason sovellusliittymän @ tf.function sisustajaa).
MindSporen valinta on muuntaa lähdekoodi välikoodimuodoksi (MindSpore IR) molempien mallien hyödyntämiseksi (lisätietoja on MindSporen verkkosivuston Automaattinen erotus -osiossa).
Viimeinen kerros koostuu kaikista kirjastoista ja ajonaikaisista ympäristöistä, joita tarvitaan eri laitteistoarkkitehtuurien tukemiseen, joissa koodia käsitellään. Todennäköisesti se on taustakuva, joka on hyvin samanlainen kuin muut kehykset, ehkä Huawei-ominaisuuksien, kuten HCCL: n (Huawei Collective Communication Library) kaltaisten kirjastojen kanssa, mikä vastaa NVIDIA NCCL: ää (NVIDIA Collective Communication Library).
Koulutuksen visualisointituki
MindSpore-opetusohjelman mukaan, vaikka niiden asentaminen ja käyttö oli mahdotonta, heillä on MindInsight luoda visualisointeja, jotka muistuttavat jonkin verran TensorBoardia, TensorFlow'ta. Katso joitain kuvakaappauksia, joita he näyttävät verkkosivustollaan:
Käsikirjan mukaan MindSpore käyttää tällä hetkellä soittopyyntömekanismia (muistuttaa kuinka se tapahtuu Kerasin kanssa) kirjoittaakseen (lokitiedostoon) kaikki haluamamme malliparametrit ja hyperparametrit sekä laskentataulukon, kun hermoverkon kokoaminen välikoodiksi on valmis.
Rinnakkaisuus
Opetusohjelmassaan he puhuvat kahdesta rinnakkaistamistilasta (DATA_PARALLEL ja AUTO_PARALLEL) ja toimittavat esimerkkikoodin, joka kouluttaa ResNet-50: tä CIFAR-tietojoukolla Ascend 910 -prosessorille (jota en voinut testata). DATA_PARALLEL viittaa strategiaan, joka tunnetaan yleisesti nimellä tietojen rinnakkaisuus, joka koostuu harjoitteludatan jakamisesta useisiin osajoukoihin, joista jokainen toimii samalla mallin kopiolla, mutta eri käsittelyyksiköissä. Graph Engine -tukea tarjotaan koodien rinnakkaistamiseen ja erityisesti AUTO_PARALLEL-rinnakkaisuuteen.
AUTO_PARALLEL-tila optimoi rinnakkaisuuden automaattisesti yhdistämällä tietojen rinnakkaistamisstrategian (käsitelty edellä) mallin rinnakkaisstrategiaan, jossa malli on jaettu eri osiin ja jokainen osa suoritetaan rinnakkain eri prosessointiyksiköissä. Tämä automaattitila valitsee parhaat edut tarjoavan rinnakkaisstrategian, josta voi lukea MindSpore-verkkosivuston Automaattinen rinnakkaisuus -osiossa (vaikka ne eivät kuvaa, miten arviot ja päätökset tehdään). Meidän on odotettava, jotta teknisellä tiimillä on aikaa laajentaa dokumentaatiota ja ymmärtää lisätietoja automaattisen rinnakkaistamisen strategiasta. Mutta on selvää, että tämä automaattinen rinnakkaisstrategia on kriittinen, ja tässä heidän pitäisi ja voi kilpailla TensorFlowin tai PyTorchin kanssa, saavuttaen huomattavasti paremman suorituskyvyn Huawei-prosessoreilla.
Suunniteltu etenemissuunnitelma ja miten osallistua
Työtä on tietysti paljon, ja tässä vaiheessa he ovat virtaviivaistaneet ajatuksiaan ensi vuodeksi tällä sivulla esitetyssä laaja-alaisessa etenemissuunnitelmassa, mutta he väittävät, että prioriteetteja mukautetaan käyttäjän mukaan.
Palaute. Tällä hetkellä voimme löytää nämä päälinjat:
- Tuki muille malleille (vireillä olevat klassiset mallit, GAN, RNN, muuntajat, vahvistetut oppimismallit, todennäköisyysohjelmointi, AutoML jne.).
- Laajenna sovellusliittymiä ja kirjastoja käytettävyyden ja ohjelmointikokemuksen parantamiseksi (enemmän operaattoreita, enemmän optimoijia, enemmän menetystoimintoja jne.)
- Kattava Huawei Ascend -suorittimen tuki ja suorituskyvyn optimointi (kokoelman optimointi, resurssien käytön parantaminen jne.)
- Ohjelmistopinon kehitys ja laskennallisten kaaviooptimointien suorittaminen (välisen IR-esityksen parantaminen, lisäoptimointimahdollisuuksien lisääminen jne.).
- Tuki useammalle ohjelmointikielelle (ei vain Pythonille).
- Parannettu hajautettu oppiminen optimoimalla automaattinen aikataulutus, tiedonjako jne.
- Paranna MindInsight-työkalua, jotta ohjelmoija voi helpottaa "virheenkorjausta" ja parantaa hyperparametrien viritystä oppimisprosessin aikana.
- Edistyminen päättelytoimintojen toimittamisessa Edgen laitteille (tietoturva, tuki muille kuin alustan malleille ONNX: n kautta jne.)
Yhteisösivulla näet, että MindSporella on kumppaneita Huawei ja Kiinan ulkopuolella, kuten Edinburghin yliopisto, Lontoon Imperial College, Münsterin yliopisto (Saksa) tai Paris-Saclay University. He sanovat noudattavansa avointa hallintomallia ja kutsuvan koko yhteisön osallistumaan sekä koodiin että dokumentaatioon.
Johtopäätös
Nopean ensisilmäyksen jälkeen näyttää siltä, että oikeat suunnittelu- ja toteutuspäätökset (kuten samanaikaisuus ja automaattinen erottelu) voivat lisätä tilaa parannuksille ja optimoinnille, jotka saavuttavat paremman suorituskyvyn kuin kehykset, joita he haluavat ylittää. Mutta edessä on vielä paljon työtä PyTorchin ja TensorFlow'n saamiseksi, ja ennen kaikkea rakenna yhteisö, ei vain! Me kaikki tiedämme kuitenkin jo, että yhden suuren yrityksen, kuten Huawei, tuella kaikki on mahdollista, tai oli ilmeistä kolme vuotta sitten, kun PyTorchin (Facebook) ensimmäinen versio ilmestyi, että se voisi olla lähellä kantapäätä yrityksestä TensorFlow (Google)?