Huawei MindSpore: TensorFlow және PyTorch үшін жаңа бәсекелес?

Мазмұны:

Huawei MindSpore: TensorFlow және PyTorch үшін жаңа бәсекелес?
Huawei MindSpore: TensorFlow және PyTorch үшін жаңа бәсекелес?

Бейне: Huawei MindSpore: TensorFlow және PyTorch үшін жаңа бәсекелес?

Бейне: Huawei MindSpore: TensorFlow және PyTorch үшін жаңа бәсекелес?
Бейне: MindSpore от Huawei: новый конкурент для TensorFlow и PyTorch? 2024, Мамыр
Anonim

Huawei өзінің TensorFlow және PyTorch стиліндегі MindSpore Deep Learning орта бағдарламалық жасақтамасының қазір ашық көзі екенін жариялады. Бұл мақалада оның маңызды сипаттамаларын біліңіз.

MindSpore - Huawei
MindSpore - Huawei

Huawei жақында жасанды интеллектуалды қосымшаларды әзірлеуге арналған MindSpore құрылымы GiHub және Gitee-де қол жетімді болатынын жариялады. MindSpore - бұл TensorFlow немесе PyTorch сияқты нейрондық желі модельдерін оқытуға арналған тағы бір Deep Learning негізі, бұл GPU-ді және Huawei Ascend процессорларын қолдайтын Edge-ден Cloud-қа дейін пайдалануға арналған.

Өткен тамызда, Huawei өзінің Ascend процессорының ресми басталғаны туралы жариялаған кезде, MindSpore алғаш рет енгізіліп, «ResNet-50 негізіндегі әдеттегі жаттығуда Ascend 910 мен MindSpore тіркесімі шамамен екі есе жылдам. TensorFlow-ті қолданып AI модельдерін басқа негізгі оқу карталарына қарсы оқытқанда, соңғы жылдары көптеген құрылымдар пайда болғаны рас, мүмкін MindSpore TensorFlow (Google қолдауымен) және PyTorch (Facebook қолдауымен) қашықтықтан бәсекеге түсетін бір топтан басқа ештеңе емес.).

Жүйе архитектурасы

MindSpore веб-сайтында инфрақұрылымның үш негізгі қабаттан тұратындығы сипатталған: фронтальды өрнек, графикалық қозғалтқыш және артқы жұмыс уақыты. Келесі суретте визуалды диаграмма көрсетілген:

Кескін
Кескін

MindSpore бағдарламасының бірінші деңгейі бағдарламашыларға арналған Python API ұсынады. Біздің қоғамдастық тілдік лингвистика іс жүзінде Python болғандықтан, әйтпесе MindSpore PyTorch және TensorFlow-пен бәсекелескісі келеді. Осы API көмегімен бағдарламашылар модельдерді басқара алады (оқыту, қорытынды жасау және т.б.) және деректерді өңдей алады. Бұл бірінші деңгей параллельдеу және автоматты дифференциалдау (GHLO) кезінде орындалуы мүмкін көптеген оңтайландырулар негізделетін кодтың аралық көрінісін (MindSpore IR) қолдауды да қамтиды.

Төменде графиктің автоматты түрде дифференциациясын құру және орындау үшін қажетті функционалдылықты қамтамасыз ететін Graph Engine қабаты берілген. MindSpore көмегімен олар PyTorch-тен (динамикалық орындалу графигін жасайтын) немесе TensorFlow-тан басқа автоматты түрде саралау моделін таңдады (статистикалық орындалу кестесін тиімді етіп құру мүмкіндігі бастапқыда таңдалғанымен, ол енді динамикалық орындау графигі параметрін ұсынады және мүмкіндік береді) графиктің статикалық нұсқасы, оның API деңгейінің төмен деңгейіндегі @ tf.function декораторын қолдану арқылы).

MindSpore таңдауы - екі модельдің артықшылығын пайдалану үшін бастапқы кодты аралық код пішіміне (MindSpore IR) түрлендіру (қосымша ақпарат алу үшін MindSpore веб-сайтындағы «Автоматты бөлу» бөлімін қараңыз).

Соңғы деңгей код өңделетін әр түрлі аппараттық архитектураны қолдау үшін қажет барлық кітапханалар мен жұмыс уақытының орталарынан тұрады. Бұл, мүмкін, басқа құрылымдарға өте ұқсас, мысалы Huawei мүмкіндіктерімен, мысалы, HCCL (Huawei ұжымдық байланыс кітапханасы) сияқты NVIDIA NCCL (NVIDIA ұжымдық байланыс кітапханасы) сияқты кітапханалармен.

Оқу көрнекіліктерін қолдау

MindSpore оқулығына сәйкес, оларды орнату және пайдалану мүмкін болмағанымен, оларда TensorBoard, TensorFlow бейнелерін еске түсіретін көрнекіліктер жасау үшін MindInsight бар. Өздерінің веб-сайттарында көрсетілген кейбір скриншоттарды қараңыз:

Кескін
Кескін
Кескін
Кескін

Нұсқаулыққа сәйкес, MindSpore қазіргі уақытта біз қалаған барлық модель параметрлері мен гиперпараметрлерін, сондай-ақ есептеу кестесін оқыту процесінде жазу үшін (журнал файлында) кері шақыру механизмін қолданады (оны Кераспен қалай жасайтынын еске түсіреді). нейрондық желіні аралық кодқа жинақтау аяқталды.

Параллелизм

Олар өздерінің оқулықтарында параллельдеудің екі режимі туралы айтады (DATA_PARALLEL және AUTO_PARALLEL) және AsNend 910 процессоры үшін ResNet-50-ді CIFAR мәліметтер жиынтығымен оқытатын үлгі кодын ұсынады (мен оны тексере алмадым). DATA_PARALLEL әдетте параллелизм деп аталатын стратегияны білдіреді, ол оқу деректерін бірнеше ішкі жиынға бөлуден тұрады, олардың әрқайсысы модельдің бірдей көшірмесінде жұмыс істейді, бірақ әр түрлі өңдеу бірліктерінде. Graph Engine қолдауы кодты параллельдеу үшін, атап айтқанда AUTO_PARALLEL параллельдігі үшін ұсынылған.

AUTO_PARALLEL режимі параллельдеуді автоматты түрде оңтайландырады, параллельдеу стратегиясын (жоғарыда талқыланған) модель параллельдеу стратегиясымен біріктіру арқылы параллельдеу, онда модель әр түрлі бөліктерге бөлініп, әр бөлік әр түрлі өңдеулерде параллель орындалады. Бұл автоматты режим MindSpore веб-сайтындағы автоматты параллель бөлімінен оқуға болатын ең жақсы артықшылықтарды ұсынатын параллельдеу стратегиясын таңдайды (бірақ олар бағалау мен шешімдердің қалай жасалатындығын сипаттамаса да). Техникалық топ құжаттаманы кеңейтіп, автопараллельдеу стратегиясы туралы толығырақ мәлімет алғанша уақытты күту керек. Бірақ бұл автоматты параллелизациялау стратегиясының маңызды екендігі түсінікті, және олар Huawei процессорларының көмегімен айтарлықтай жақсы өнімділікке ие бола отырып, TensorFlow немесе PyTorch-пен бәсекеге түсуі керек және бәсекелесе алады.

Жоспарланған жол картасы және қалай үлес қосу керек

Жасалатын жұмыс көп екені анық және осы сәтте олар осы бетте ұсынылған кең жол картасында келесі жылға ойлаған идеяларын оңтайландырды, бірақ олар басымдықтар пайдаланушыға сәйкес реттелетіндігін алға тартты.

Кері байланыс. Қазіргі уақытта біз келесі негізгі жолдарды таба аламыз:

  1. Көптеген модельдерді қолдау (классикалық модельдер, GAN, RNN, Transformers, күшейтілген оқыту модельдері, ықтимал бағдарламалау, AutoML және т.б.).
  2. Қолдану мен бағдарламалау тәжірибесін жақсарту үшін API мен кітапханаларды кеңейтіңіз (көбірек операторлар, оптимизаторлар, шығын функциялары және т.б.)
  3. Huawei Ascend процессорына кешенді қолдау және өнімділікті оңтайландыру (компиляцияны оңтайландыру, ресурстарды пайдалануды жақсарту және т.б.)
  4. Бағдарламалық жасақтама эволюциясы және есептеу графикалық оптимизациясының орындалуы (ИҚ-ның аралық көрінісін жақсарту, қосымша оңтайландыру мүмкіндіктерін қосу және т.б.).
  5. Қосымша бағдарламалау тілдерін қолдау (тек Python емес).
  6. Автоматты жоспарлауды, мәліметтерді таратуды және т.б. оңтайландырумен үлестірілген оқытуды жетілдірді.
  7. Бағдарламалаушыға «түзетуді» жеңілдету және оқу процесінде гиперпараметрлерді баптауды жақсарту үшін MindInsight құралын жетілдіріңіз.
  8. Edge ішіндегі құрылғыларға қорытынды функционалдылықты жеткізу барысы (қауіпсіздік, ONNX арқылы платформалық емес модельдерді қолдау және т.б.)

Қауымдастық парағында MindSpore-дің Huawei мен Қытайдан тыс Эдинбург Университеті, Лондон Империал Колледжі, Мюнстер Университеті (Германия) немесе Париж-Саклай Университеті сияқты серіктестері бар екенін көре аласыз. Олар ашық басқару моделін ұстанатындықтарын және бүкіл қоғамдастықты кодекске де, құжаттамаға да үлес қосуға шақырамыз дейді.

Қорытынды

Жылдам қарағаннан кейін, дұрыс жобалау және іске асыру шешімдері (параллельділік және автоматты түрде дифференциалдау сияқты) жақсартулар мен оңтайландыруларға мүмкіндік бере алады, олар өздері қалағандарға қарағанда жақсырақ өнімділікке жетеді. Алда PyTorch пен TensorFlow-ті ұстап қалу және бәрінен бұрын қоғамдастық құру үшін әлі көп жұмыс бар! Алайда, Huawei сияқты бір үлкен компанияның қолдауымен кез-келген нәрсе болуы мүмкін екенін немесе үш жыл бұрын PyTorch (Facebook) алғашқы нұсқасы шыққан кезде оның өкшеге жақын болуы мүмкін екендігі бәрімізге белгілі. туралы TensorFlow (Google)?

Ұсынылған: