Inanunsyo ng Huawei na ang TensorFlow at PyTorch style na MindSpore Deep Learning na middleware ay bukas na mapagkukunan ngayon. Alamin sa artikulong ito ang pinakamahalagang katangian.
Inihayag lamang ng Huawei na ang balangkas ng MindSpore para sa pagbuo ng mga aplikasyon ng AI ay nagiging bukas na mapagkukunan at magagamit sa GiHub at Gitee. Ang MindSpore ay isa pang balangkas ng Deep Learning para sa pagsasanay ng mga modelo ng neural network, katulad ng TensorFlow o PyTorch, na idinisenyo para magamit mula sa Edge to Cloud, na sumusuporta sa parehong mga GPU at halatang mga Huawei Ascend na processor.
Noong Agosto, nang ibinalita ng Huawei ang opisyal na paglulunsad ng processor ng Ascend nito, unang ipinakilala ang MindSpore, na sinasabing sa isang karaniwang sesyon ng pagsasanay na nakabatay sa ResNet-50, ang kombinasyon ng Ascend 910 at MindSpore ay halos dalawang beses nang mas mabilis. Kapag sinasanay ang mga modelo ng AI kumpara sa iba pang mga pangunahing kard sa pag-aaral gamit ang TensorFlow Totoo na maraming mga balangkas ang lumitaw sa mga nagdaang taon, at marahil ang MindSpore ay hindi hihigit sa isang pangkat na maaari ring makipagkumpitensya sa malayo sa TensorFlow (sinusuportahan ng Google) at PyTorch (sinusuportahan ng Facebook).
Arkitektura ng system
Inilalarawan ng website ng MindSpore na ang imprastraktura ay binubuo ng tatlong pangunahing mga layer: expression ng frontend, graphics engine, at backend runtime. Ang sumusunod na pigura ay nagpapakita ng isang visual diagram:
Ang unang antas ng MindSpore ay nag-aalok ng isang Python API para sa mga programmer. Dahil ang lingguwistika ng wika sa aming komunidad ay de facto Python, at kung hindi man ay nais ng MindSpore na makipagkumpetensya sa PyTorch at TensorFlow. Sa API na ito, maaaring manipulahin ng mga programmer ang mga modelo (pagsasanay, hinuha, atbp.) At iproseso ang data. Kasama rin sa unang antas na ito ang suporta para sa representasyon ng pansamantalang code (MindSpore IR), kung saan ibabatay ang maraming mga pag-optimize na maaaring gampanan sa parallelization at awtomatikong pagkita ng kaibhan (GHLO).
Nasa ibaba ang layer ng Graph Engine na nagbibigay ng kinakailangang pag-andar upang lumikha at magpatupad ng awtomatikong pagkita ng kaibhan sa graph ng pagpapatupad. Sa MindSpore, pumili sila para sa isang awtomatikong modelo ng pagkita ng kaibhan maliban sa PyTorch (na bumubuo ng isang dynamic na graph ng pagpapatupad) o TensorFlow (bagaman ang pagpipilian upang lumikha ng isang mas mahusay na iskedyul ng pagpapatupad na static ay orihinal na napili, nag-aalok din ito ngayon ng isang pagpipilian ng graph ng pagpapatupad ng pagpapatakbo at pinapayagan isang static na bersyon ng grap na may paggamit ng @ tf.function na dekorador ng mababang antas na API).
Ang pagpipilian ng MindSpore ay i-convert ang source code sa intermediate na format ng code (MindSpore IR) upang samantalahin ang dalawang mga modelo (para sa karagdagang impormasyon, tingnan ang seksyong "Awtomatikong Paghiwalay" sa website ng MindSpore).
Ang huling layer ay binubuo ng lahat ng mga aklatan at mga kapaligiran sa runtime na kinakailangan upang suportahan ang iba't ibang mga arkitektura ng hardware kung saan ipaproseso ang code. Malamang, ito ay magiging isang backend na halos kapareho sa iba pang mga balangkas, marahil sa mga tampok ng Huawei, tulad ng mga aklatan tulad ng HCCL (Huawei Collective Communication Library), katumbas ng NVIDIA NCCL (NVIDIA Collective Communication Library).
Pagsuporta sa suporta sa visualization
Ayon sa tutorial ng MindSpore, bagaman imposibleng i-install at gamitin ang mga ito, mayroon silang MindInsight upang lumikha ng mga visualization na medyo nakapagpapaalala ng TensorBoard, TensorFlow. Tingnan ang ilang mga screenshot na ipinapakita nila sa kanilang website:
Ayon sa manu-manong, ang MindSpore ay kasalukuyang gumagamit ng isang mekanismo ng callback (nakapagpapaalala kung paano ito ginagawa sa Keras) upang magsulat (sa isang file ng log) sa proseso ng pagsasanay sa lahat ng mga parameter ng modelo at hyperparameter na gusto namin, pati na rin ang iskedyul ng pagkalkula kung kailan ang pag-compile ng neural network sa intermediate code ay kumpleto na.
Paralelismo
Sa kanilang tutorial, pinag-uusapan nila ang tungkol sa dalawang mga mode ng parallelization (DATA_PARALLEL at AUTO_PARALLEL) at nagbibigay ng sample code na nagsasanay sa ResNet-50 na may isang CIFAR dataset para sa isang Ascend 910 na processor (na hindi ko masubukan). Ang DATA_PARALLEL ay tumutukoy sa isang diskarte na karaniwang kilala bilang data parallelism, na binubuo ng paghahati ng data ng pagsasanay sa maraming mga subset, bawat isa ay tumatakbo sa parehong kopya ng modelo, ngunit sa iba't ibang mga yunit sa pagproseso. Ibinigay ang suporta sa Graph Engine para sa parallelization ng code at sa partikular para sa AUTO_PARALLEL parallelism.
Ang AUTO_PARALLEL mode ay awtomatikong na-optimize ang parallelization sa pamamagitan ng pagsasama ng diskarte sa parallelization ng data (tinalakay sa itaas) sa diskarte sa parallelization ng modelo, kung saan ang modelo ay nahahati sa iba't ibang bahagi, at ang bawat bahagi ay naisagawa nang kahanay sa iba't ibang mga yunit ng pagproseso. Pinipili ng awtomatikong mode na ito ang diskarte sa parallelization na nag-aalok ng pinakamahusay na mga benepisyo, na maaaring mabasa tungkol sa seksyon ng Awtomatikong Parallel sa website ng MindSpore (bagaman hindi nila inilalarawan kung paano ginawa ang mga pagtatantya at pagpapasya). Maghihintay kami upang gumawa ng oras para sa pangkat na panteknikal upang mapalawak ang dokumentasyon at maunawaan ang higit pang mga detalye tungkol sa diskarte sa auto-parallelization. Ngunit malinaw na kritikal ang diskarteng ito ng auto-parallelization, at dito nila dapat at maaaring makipagkumpitensya sa TensorFlow o PyTorch, nakakakuha ng mas mahusay na pagganap gamit ang mga prosesor ng Huawei.
Pinlanong roadmap at kung paano mag-ambag
Malinaw na maraming trabahong dapat gawin at sa puntong ito ay naayos nila ang mga ideya na nasa isip nila para sa susunod na taon sa malawak na roadmap na ipinakita sa pahinang ito, ngunit sinabi nila na ang mga priyoridad ay maaayos ayon sa gumagamit.
Puna Sa ngayon maaari nating hanapin ang mga pangunahing linya:
- Suporta para sa higit pang mga modelo (nakabinbing mga klasikong modelo, GAN, RNN, Transformers, pinalakas na mga modelo ng pag-aaral, probabilistic na programa, AutoML, atbp.).
- Palawakin ang mga API at aklatan upang mapabuti ang kakayahang magamit at karanasan sa pagprograma (mas maraming mga operator, mas maraming mga optimizer, mas maraming mga pag-andar ng pagkawala, atbp.)
- Komprehensibong suporta ng Huawei Ascend processor at pag-optimize sa pagganap (pag-optimize sa compilation, pagpapabuti ng paggamit ng mapagkukunan, atbp.)
- Ang ebolusyon ng stack ng software at pagpapatupad ng mga pag-optimize sa computational graph (pagpapabuti ng intermediate IR na representasyon, pagdaragdag ng mga karagdagang kakayahan sa pag-optimize, atbp.).
- Suporta para sa higit pang mga wika sa programa (hindi lamang sa Python).
- Pinahusay na pamamahagi ng pag-aaral sa pag-optimize ng awtomatikong pag-iiskedyul, pagbabahagi ng data, atbp.
- Pagbutihin ang tool na MindInsight upang gawing mas madali para sa programmer na "i-debug" at pagbutihin ang pag-tune ng hyperparameter sa panahon ng proseso ng pag-aaral.
- Pag-usad sa paghahatid ng pag-andar ng paghihinuha sa mga aparato sa Edge (seguridad, suporta para sa mga hindi pang-platform na modelo sa pamamagitan ng ONNX, atbp.)
Sa pahina ng pamayanan, makikita mo na ang MindSpore ay may mga kasosyo sa labas ng Huawei at China, tulad ng University of Edinburgh, Imperial College London, University of Munster (Germany) o Paris-Saclay University. Sinasabi nila na susundan nila ang isang bukas na modelo ng pamamahala at anyayahan ang buong pamayanan na magbigay ng kontribusyon sa parehong code at dokumentasyon.
Konklusyon
Pagkatapos ng mabilis na unang tingin, tila ang tamang mga desisyon sa pagpapatupad at pagpapatupad (tulad ng pagsabay at awtomatikong pagkita ng pagkakaiba) ay maaaring magdagdag ng lugar para sa mga pagpapabuti at pag-optimize na nakakamit ng mas mahusay na pagganap kaysa sa mga balangkas na nais nilang lumagpas. Ngunit marami pa ring gawain sa hinaharap upang mahuli ang PyTorch at TensorFlow, at higit sa lahat bumuo ng isang komunidad, hindi lamang! Gayunpaman, alam na nating lahat na sa pagsuporta ng isang malaking kumpanya sa sektor tulad ng Huawei, posible ang anumang bagay, o halata tatlong taon na ang nakalilipas nang lumabas ang unang bersyon ng PyTorch (Facebook) na maaaring malapit ito sa takong ng TensorFlow (Google)?