Huawei oznámil, že jeho middleware MindSpore Deep Learning ve stylu TensorFlow a PyTorch je nyní otevřeným zdrojovým kódem. V tomto článku zjistíte jeho nejdůležitější vlastnosti.
Společnost Huawei právě oznámila, že její rámec MindSpore pro vývoj aplikací AI se stává otevřeným zdrojovým kódem a je k dispozici pro GiHub a Gitee. MindSpore je další rámec Deep Learning pro trénování modelů neuronových sítí, podobný TensorFlow nebo PyTorch, navržený pro použití od Edge do Cloudu, který podporuje jak GPU, tak samozřejmě procesory Huawei Ascend.
Loni v srpnu, kdy společnost Huawei oznámila oficiální spuštění svého procesoru Ascend, byl poprvé představen MindSpore s tím, že „v typickém tréninku založeném na ResNet-50 je kombinace Ascend 910 a MindSpore zhruba dvakrát rychlejší. Při trénování modelů AI oproti jiným významným výukovým kartám pomocí TensorFlow Je pravda, že se v posledních letech objevilo mnoho rámců a možná MindSpore není nic jiného než jedna skupina, která může dokonce vzdáleně konkurovat TensorFlow (s podporou Google) a PyTorch (podporováno Facebookem)).
Architektura systému
Web MindSpore popisuje, že infrastruktura se skládá ze tří hlavních vrstev: frontendový výraz, grafický modul a back-endový běhový modul. Následující obrázek ukazuje vizuální diagram:
První úroveň MindSpore nabízí programátorské rozhraní Python API. Protože jazyková lingvistika v naší komunitě je de facto Python, a jinak chce MindSpore konkurovat PyTorch a TensorFlow. S tímto API mohou programátoři manipulovat s modely (školení, odvození atd.) A zpracovávat data. Tato první úroveň zahrnuje také podporu prozatímní reprezentace kódu (MindSpore IR), na které bude založeno mnoho optimalizací, které lze provést v paralelizaci a automatické diferenciaci (GHLO).
Níže je vrstva Graph Engine, která poskytuje nezbytné funkce pro vytváření a provádění automatické diferenciace grafu provádění. S MindSpore se rozhodli pro jiný model automatické diferenciace než PyTorch (který generuje graf dynamického provedení) nebo TensorFlow (ačkoli původně byla zvolena možnost vytvořit efektivnější plán statického provedení, nyní také nabízí možnost dynamického grafu provedení a umožňuje statická verze grafu s použitím dekorátoru @ tf.function jeho nízkoúrovňového API).
MindSpore si vybral, že převede zdrojový kód do formátu mezilehlého kódu (MindSpore IR), aby využil výhod těchto dvou modelů (další informace najdete v části „Automatická separace“na webu MindSpore).
Finální vrstva se skládá ze všech knihoven a běhových prostředí potřebných k podpoře různých hardwarových architektur, ve kterých bude kód zpracován. S největší pravděpodobností to bude backend velmi podobný ostatním frameworkům, snad s funkcemi Huawei, jako jsou knihovny jako HCCL (Huawei Collective Communication Library), ekvivalent NVIDIA NCCL (NVIDIA Collective Communication Library).
Podpora vizualizace školení
Podle tutoriálu MindSpore, i když bylo nemožné je nainstalovat a používat, mají MindInsight k vytváření vizualizací, které poněkud připomínají TensorBoard, TensorFlow. Podívejte se na některé snímky obrazovky, které zobrazují na svých webových stránkách:
Podle příručky MindSpore v současné době používá mechanismus zpětného volání (připomíná to, jak se to děje s Kerasem) k zápisu (do souboru protokolu) v procesu trénování všech parametrů modelu a hyperparametrů, které chceme, stejně jako plán výpočtu, když kompilace neuronové sítě do mezilehlého kódu je dokončena.
Rovnoběžnost
Ve svém tutoriálu hovoří o dvou režimech paralelizace (DATA_PARALLEL a AUTO_PARALLEL) a poskytují ukázkový kód, který trénuje ResNet-50 s datovou sadou CIFAR pro procesor Ascend 910 (který jsem nemohl otestovat). DATA_PARALLEL odkazuje na strategii běžně známou jako datový paralelismus, která spočívá v rozdělení tréninkových dat do více podmnožin, z nichž každá běží na stejné replice modelu, ale v různých jednotkách zpracování. Podpora Graph Engine je poskytována pro paralelizaci kódu a zejména pro AUTO_PARALLEL paralelismus.
Režim AUTO_PARALLEL automaticky optimalizuje paralelizaci kombinací strategie paralelizace dat (popsaná výše) se strategií paralelizace modelu, ve které je model rozdělen na různé části a každá část je prováděna paralelně v různých jednotkách zpracování. Tento automatický režim vybírá strategii paralelizace, která nabízí nejlepší výhody, o kterých si můžete přečíst v sekci Automatická paralelní na webu MindSpore (i když nepopisují, jak se provádějí odhady a rozhodnutí). Budeme muset počkat, než si technický tým udělá čas na rozšíření dokumentace a pochopení dalších podrobností o strategii automatické paralelizace. Je však zřejmé, že tato strategie auto-paralelizace je zásadní, a právě zde by měli a mohou konkurovat TensorFlow nebo PyTorch a dosahovat výrazně lepšího výkonu pomocí procesorů Huawei.
Plánovaný plán a jak přispět
Je zřejmé, že je třeba udělat ještě hodně práce, a v tomto okamžiku zefektivnili myšlenky, které mají na mysli pro příští rok, v rozsáhlém plánu uvedeném na této stránce, ale tvrdí, že priority budou upraveny podle uživatele.
Zpětná vazba. V tuto chvíli můžeme najít tyto hlavní linie:
- Podpora více modelů (nevyřízené klasické modely, GAN, RNN, transformátory, zesílené modely učení, pravděpodobnostní programování, AutoML atd.).
- Rozšiřte rozhraní API a knihovny, abyste zlepšili použitelnost a zkušenosti s programováním (více operátorů, více optimalizátorů, více ztrátových funkcí atd.)
- Komplexní podpora procesorů Huawei Ascend a optimalizace výkonu (optimalizace kompilace, zlepšení využití zdrojů atd.)
- Vývoj softwarového zásobníku a provádění optimalizací výpočtových grafů (zlepšení mezilehlé IR reprezentace, přidání dalších optimalizačních schopností atd.).
- Podpora více programovacích jazyků (nejen Pythonu).
- Vylepšené distribuované učení s optimalizací automatického plánování, distribuce dat atd.
- Vylepšete nástroj MindInsight, abyste programátorovi usnadnili „ladění“a vylepšili vyladění hyperparametru během procesu učení.
- Pokrok v poskytování odvozovacích funkcí zařízením v Edge (zabezpečení, podpora modelů jiných platforem prostřednictvím ONNX atd.)
Na stránce komunity můžete vidět, že MindSpore má partnery mimo Huawei a Čínu, například University of Edinburgh, Imperial College London, University of Munster (Německo) nebo Paris-Saclay University. Říkají, že se budou řídit modelem otevřené správy věcí veřejných a vyzvou celou komunitu, aby přispěla jak ke kódu, tak k dokumentaci.
Závěr
Po krátkém prvním pohledu se zdá, že správná rozhodnutí o návrhu a implementaci (například souběžnost a automatická diferenciace) mohou přidat prostor pro vylepšení a optimalizace, které zajistí lepší výkon než rámce, které chtějí překonat. Je však ještě spousta práce, jak chytit PyTorch a TensorFlow, a především budovat komunitu, nejen! Všichni však již víme, že s podporou jedné velké společnosti v odvětví, jako je Huawei, je možné všechno, nebo bylo zřejmé před třemi lety, kdy vyšla první verze PyTorch (Facebook), že by to mohlo být blízko k patě of TensorFlow (Google)?