Huawei MindSpore: Nový Konkurent Pre TensorFlow A PyTorch?

Obsah:

Huawei MindSpore: Nový Konkurent Pre TensorFlow A PyTorch?
Huawei MindSpore: Nový Konkurent Pre TensorFlow A PyTorch?

Video: Huawei MindSpore: Nový Konkurent Pre TensorFlow A PyTorch?

Video: Huawei MindSpore: Nový Konkurent Pre TensorFlow A PyTorch?
Video: PyTorch or TensorFlow? | 2021 2024, November
Anonim

Spoločnosť Huawei oznámila, že jej stredný softvér MindSpore Deep Learning v štýle TensorFlow a PyTorch je teraz otvoreným zdrojom. V tomto článku nájdete jeho najdôležitejšie vlastnosti.

MindSpore od spoločnosti Huawei
MindSpore od spoločnosti Huawei

Spoločnosť Huawei práve oznámila, že jej rámec MindSpore pre vývoj aplikácií AI sa stáva otvoreným zdrojom a je k dispozícii pre GiHub a Gitee. MindSpore je ďalší rámec Deep Learning pre výcvik modelov neurónových sietí, podobný TensorFlow alebo PyTorch, navrhnutý pre použitie od Edge po Cloud, ktorý podporuje GPU aj procesory Huawei Ascend.

Vlani v auguste, keď spoločnosť Huawei oznámila oficiálne uvedenie svojho procesora Ascend, na trh bola prvýkrát predstavená platforma MindSpore, v ktorej sa uvádza, že „pri typickom školení založenom na ResNet-50 je kombinácia Ascend 910 a MindSpore zhruba dvakrát rýchlejšia. Pri výcviku modelov AI oproti iným hlavným vzdelávacím kartám pomocou TensorFlow Je pravda, že za posledné roky vzniklo veľa rámcov a možno MindSpore nie je nič iné ako jedna skupina, ktorá dokáže dokonca na diaľku konkurovať TensorFlow (podporovaný spoločnosťou Google) a PyTorch (podporovaný Facebookom)).

Architektúra systému

Webové stránky MindSpore popisujú, že infraštruktúra sa skladá z troch hlavných vrstiev: frontendový výraz, grafický engine a backendový runtime. Nasledujúci obrázok zobrazuje vizuálny diagram:

Obrázok
Obrázok

Prvá úroveň MindSpore ponúka programátorské rozhranie Python API. Pretože jazyková lingvistika v našej komunite je de facto Python, a inak chce MindSpore konkurovať PyTorch a TensorFlow. Pomocou tohto API môžu programátori manipulovať s modelmi (školenie, inferencia atď.) A spracovávať údaje. Táto prvá úroveň obsahuje aj podporu dočasnej reprezentácie kódu (MindSpore IR), na ktorej bude založených veľa optimalizácií, ktoré je možné vykonať v paralelizácii a automatickej diferenciácii (GHLO).

Ďalej je uvedená vrstva Graph Engine, ktorá poskytuje potrebné funkcie na vytváranie a vykonávanie automatickej diferenciácie grafu vykonania. S programom MindSpore sa rozhodli pre iný model automatickej diferenciácie ako PyTorch (ktorý generuje dynamický graf vykonania) alebo TensorFlow (hoci bola pôvodne vybraná možnosť vytvoriť efektívnejší plán statického vykonania, teraz ponúka aj možnosť dynamického vykonania grafu statická verzia grafu s použitím dekorátora @ tf.function jeho nízkoúrovňového API).

MindSpore si vybral, že prevádza zdrojový kód na formát prechodného kódu (MindSpore IR), aby využil výhody týchto dvoch modelov (ďalšie informácie nájdete v časti „Automatická separácia“na webovej stránke MindSpore).

Finálna vrstva pozostáva zo všetkých knižníc a runtime prostredí potrebných na podporu rôznych hardvérových architektúr, v ktorých sa bude kód spracovávať. S najväčšou pravdepodobnosťou pôjde o backend veľmi podobný iným rámcom, možno s funkciami Huawei, ako sú knižnice ako HCCL (Huawei Collective Communication Library), ekvivalent NVIDIA NCCL (NVIDIA Collective Communication Library).

Podpora vizualizácie tréningu

Podľa tutoriálu MindSpore síce nebolo možné ich nainštalovať a používať, ale na vytváranie vizualizácií, ktoré trochu pripomínajú TensorBoard, TensorFlow, majú program MindInsight. Pozrite sa na niektoré snímky obrazovky, ktoré zobrazujú na svojich webových stránkach:

Obrázok
Obrázok
Obrázok
Obrázok

Podľa manuálu MindSpore v súčasnosti používa mechanizmus spätného volania (pripomína to, ako sa to deje s Kerasom) na zápis (do logovacieho súboru) v procese školenia všetkých tých parametrov modelu a hyperparametrov, ktoré chceme, ako aj plán výpočtu, kedy kompilácia neurónovej siete do medzikódu je hotová.

Paralelizmus

Vo svojom tutoriáli hovoria o dvoch režimoch paralelizácie (DATA_PARALLEL a AUTO_PARALLEL) a poskytujú ukážkový kód, ktorý trénuje ResNet-50 s CIFAR dátovou sadou pre procesor Ascend 910 (ktorý som však nemohol otestovať). DATA_PARALLEL označuje stratégiu všeobecne známu ako dátový paralelizmus, ktorá spočíva v rozdelení tréningových údajov do viacerých podmnožín, z ktorých každá beží na rovnakej replike modelu, ale v rôznych procesorových jednotkách. Podpora Graph Engine je poskytovaná pre paralelizáciu kódu a najmä pre paralelizmus AUTO_PARALLEL.

Režim AUTO_PARALLEL automaticky optimalizuje paralelizáciu kombináciou stratégie paralelizácie dát (diskutovanej vyššie) so stratégiou paralelizácie modelu, v ktorej je model rozdelený na rôzne časti a každá časť je vykonávaná paralelne v rôznych jednotkách spracovania. Tento automatický režim vyberá stratégiu paralelizácie, ktorá ponúka najlepšie výhody, o ktorých sa dočítate v časti Automatická paralelná na webovej stránke MindSpore (aj keď nepopisujú, ako sa robia odhady a rozhodnutia). Budeme si musieť počkať, kým si technický tím vyhradí čas na rozšírenie dokumentácie a pochopenie ďalších podrobností o stratégii automatickej paralelizácie. Je však zrejmé, že táto stratégia automatickej paralelizácie je zásadná, a práve tu by mali a môžu konkurovať technológiám TensorFlow alebo PyTorch a dosahovať výrazne lepší výkon pomocou procesorov Huawei.

Plánovaný plán a spôsob prispievania

Je zrejmé, že je potrebné ešte veľa urobiť, a v tomto okamihu zjednodušili nápady, ktoré majú na mysli na budúci rok, v rozsiahlom pláne uvedenom na tejto stránke. Tvrdia však, že priority sa upravia podľa používateľa.

Spätná väzba V súčasnej dobe môžeme nájsť tieto hlavné línie:

  1. Podpora viacerých modelov (čakajú sa na klasické modely, GAN, RNN, transformátory, zosilnené modely učenia, pravdepodobnostné programovanie, AutoML atď.).
  2. Rozšírte rozhrania API a knižnice, aby ste zlepšili použiteľnosť a skúsenosti s programovaním (viac operátorov, viac optimalizátorov, viac stratových funkcií atď.)
  3. Komplexná podpora procesorov Huawei Ascend a optimalizácia výkonu (optimalizácia kompilácie, zlepšenie využitia zdrojov atď.)
  4. Vývoj softvérového zásobníka a vykonávanie optimalizácií výpočtových grafov (zlepšenie sprostredkovanej IR reprezentácie, pridanie ďalších optimalizačných schopností atď.).
  5. Podpora viacerých programovacích jazykov (nielen Pythonu).
  6. Vylepšené distribuované učenie s optimalizáciou automatického plánovania, distribúcie údajov atď.
  7. Vylepšite nástroj MindInsight, aby ste programátorovi uľahčili „ladenie“a vylepšili vyladenie hyperparametrov počas procesu učenia.
  8. Pokrok v poskytovaní inferenčných funkcií zariadeniam v Edge (zabezpečenie, podpora modelov mimo platformy prostredníctvom protokolu ONNX atď.)

Na komunitnej stránke môžete vidieť, že MindSpore má partnerov mimo spoločností Huawei a Čína, napríklad University of Edinburgh, Imperial College London, University of Munster (Nemecko) alebo Paris-Saclay University. Tvrdia, že sa budú riadiť modelom otvoreného riadenia a vyzvú celú komunitu, aby prispela ku kódexu aj k dokumentácii.

Záver

Na prvý pohľad sa zdá, že správne rozhodnutia o dizajne a implementácii (ako súbežnosť a automatická diferenciácia) môžu pridať priestor na vylepšenia a optimalizácie, ktoré dosiahnu lepší výkon ako rámce, ktoré chcú prekonať. Je však ešte veľa práce, aby ste chytili PyTorch a TensorFlow a predovšetkým vybudovali komunitu, nielen! Všetci však už vieme, že s podporou jednej veľkej spoločnosti v sektore, ako je Huawei, je všetko možné, alebo bolo zrejmé pred tromi rokmi, keď vyšla prvá verzia programu PyTorch (Facebook), že by to mohlo byť blízko päty z TensorFlow (Google)?

Odporúča: