Huawei- ն հայտարարեց, որ իր TensorFlow և PyTorch ոճի MindSpore Deep Learning միջդիրն այժմ բաց աղբյուր է: Այս հոդվածում պարզեք դրա ամենակարևոր հատկությունները:
Huawei- ն վերջերս հայտարարեց, որ AI M ծրագրերը մշակելու իր MindSpore շրջանակը դառնում է բաց կոդով և մատչելի GiHub- ում և Gitee- ում: MindSpore- ը նյարդային ցանցի մոդելների վերապատրաստման մեկ այլ Deep Learning շրջանակ է, որը նման է TensorFlow- ին կամ PyTorch- ին, որը նախատեսված է Edge- ից Cloud օգտագործման համար, որն աջակցում է ինչպես GPU- ներին, այնպես էլ ակնհայտորեն Huawei Ascend պրոցեսորներին:
Անցյալ օգոստոսին, երբ Huawei- ն հայտարարեց իր Ascend պրոցեսորի պաշտոնական գործարկման մասին, առաջին անգամ ներկայացվեց MindSpore- ը `նշելով, որ« ResNet-50- ի վրա հիմնված սովորական դասընթացում Ascend 910- ի և MindSpore- ի համադրությունը մոտ երկու անգամ ավելի արագ է: Երբ TensorFlow- ն օգտագործում է AI մոդելներն ընդդեմ այլ հիմնական ուսման քարտերի, ճիշտ է, որ վերջին տարիներին շատ շրջանակներ են ի հայտ եկել, և միգուցե MindSpore- ը ոչ այլ ինչ է, քան մեկ խումբ, որը կարող է նույնիսկ հեռակա մրցել TensorFlow- ի հետ (աջակցում է Google- ը) և PyTorch- ին (աջակցում է Facebook- ը):)
Համակարգի ճարտարապետություն
MindSpore կայքը նկարագրում է, որ ենթակառուցվածքը բաղկացած է երեք հիմնական շերտերից. Առջևի արտահայտություն, գրաֆիկական շարժիչ և հետադարձ աշխատանքի ժամանակ: Հետևյալ նկարը ցույց է տալիս տեսողական դիագրամ.
MindSpore- ի առաջին մակարդակը ծրագրավորողների համար առաջարկում է Python API: Քանի որ մեր համայնքում լեզվական լեզվաբանությունը դե ֆակտո Python է, և հակառակ դեպքում MindSpore- ն ուզում է մրցել PyTorch- ի և TensorFlow- ի հետ: Այս API- ի միջոցով ծրագրավորողները կարող են շահարկել մոդելները (ուսուցում, եզրակացություն և այլն) և մշակել տվյալներ: Այս առաջին մակարդակը ներառում է նաև կոդի միջանկյալ ներկայացման աջակցություն (MindSpore IR), որի վրա հիմնված կլինեն բազմաթիվ օպտիմալացումներ, որոնք կարող են իրականացվել զուգահեռացման և ավտոմատ տարբերակման (GHLO) զուգահեռ:
Ստորև ներկայացված է Graph Engine շերտը, որն ապահովում է անհրաժեշտ ֆունկցիոնալությունը կատարման գծապատկերի ավտոմատ տարբերակումը ստեղծելու և իրականացնելու համար: MindSpore- ի հետ նրանք ընտրեցին տարբերակել ավտոմատ տարբերակման մոդել, բացի PyTorch- ից (որը առաջացնում է դինամիկ կատարման գրաֆիկ) կամ TensorFlow (չնայած սկզբում ընտրվել էր ավելի արդյունավետ ստատիկ կատարման ժամանակացույց ստեղծելու տարբերակը, այն այժմ նաև առաջարկում է կատարման դինամիկ գծապատկերի տարբերակ և թույլ է տալիս գրաֆիկի ստատիկ տարբերակ ՝ օգտագործելով դրա ցածր մակարդակի API- ի @ tf.function դեկորատորը):
MindSpore- ի ընտրությունն է երկու աղբյուրներից օգտվելու համար աղբյուրի կոդը միջին կոդի ձևաչափի (MindSpore IR) փոխարկելը (լրացուցիչ տեղեկությունների համար տե՛ս MindSpore կայքի «Ավտոմատ տարանջատում» բաժինը):
Վերջնական շերտը բաղկացած է բոլոր գրադարաններից և գործարկման ժամանակավոր միջավայրերից, որոնք անհրաժեշտ են տարբեր ապարատային ճարտարապետություններին աջակցելու համար, որոնցում մշակվելու է կոդը: Ամենայն հավանականությամբ, դա կլինի հետին պլան, որը շատ նման է այլ շրջանակներին, գուցե Huawei- ի առանձնահատկություններին, ինչպիսիք են գրադարանները, ինչպիսիք են HCCL (Huawei Collective Communication Library), համարժեք NVIDIA NCCL (NVIDIA հավաքական հաղորդակցման գրադարան):
Դասընթացի արտացոլման աջակցություն
Ըստ MindSpore ձեռնարկի, չնայած դրանք տեղադրելը և օգտագործելը անհնար էր, նրանք ունեն MindInsight ՝ պատկերացումներ ստեղծելու համար, որոնք ինչ-որ չափով հիշեցնում են TensorBoard, TensorFlow: Նայեք մի քանի սքրինշոթի, որոնք նրանք ցույց են տալիս իրենց կայքում.
Ձեռնարկի համաձայն, MindSpore- ը ներկայումս օգտագործում է հետ կանչման մեխանիզմ (հիշեցնում է, թե ինչպես է դա արվում Keras- ի հետ) ՝ գրելու համար (գրանցամատյանի ֆայլում) բոլոր մեր ուզած մոդելի պարամետրերի և հիպարամետրերի ուսուցման գործընթացում, ինչպես նաև հաշվարկի ժամանակացույցը, երբ նեյրոնային ցանցի միջանկյալ ծածկագրի կազմումը ավարտված է:
Paraուգահեռություն
Իրենց ձեռնարկի ընթացքում նրանք խոսում են զուգահեռացման երկու ռեժիմների (DATA_PARALLEL և AUTO_PARALLEL) մասին և տալիս կոդերի նմուշ, որոնք մարզում են ResNet-50- ը Ascend 910 պրոցեսորի համար CIFAR տվյալների բազա (որը ես չկարողացա փորձարկել): DATA_PARALLEL- ը վերաբերում է ռազմավարությանը, որը սովորաբար հայտնի է որպես տվյալների զուգահեռականություն, որը բաղկացած է վերապատրաստման տվյալների բաժանմանը բազմաթիվ ենթաբազմությունների, որոնցից յուրաքանչյուրն աշխատում է մոդելի նույն կրկնօրինակով, բայց տարբեր մշակման միավորներում: Գծապատկերային շարժիչի աջակցությունը տրամադրվում է կոդերի զուգահեռացման և, մասնավորապես, AUTO_PARALLEL զուգահեռացման համար:
AUTO_PARALLEL ռեժիմն ավտոմատ կերպով օպտիմալացնում է զուգահեռացումը ՝ տվյալների զուգահեռացման ռազմավարությունը (վերը քննարկված) համատեղելով մոդելի զուգահեռացման ռազմավարության հետ, որում մոդելը բաժանված է տարբեր մասերի, և յուրաքանչյուր մաս զուգահեռ կատարվում է տարբեր մշակման միավորներում: Այս ավտոմատ ռեժիմը ընտրում է լավագույն առավելություններն առաջարկող զուգահեռացման ռազմավարությունը, որի մասին կարելի է կարդալ MindSpore կայքի Ավտոմատ զուգահեռ բաժնում (չնայած դրանք չեն նկարագրում, թե ինչպես են կատարվում գնահատումներն ու որոշումները): Մենք ստիպված կլինենք սպասել, որպեսզի ժամանակ տրամադրենք, որպեսզի տեխնիկական թիմը ընդլայնի փաստաթղթավորումը և ավելի շատ մանրամասներ հասկանա ավտ զուգահեռացման ռազմավարության վերաբերյալ: Բայց ակնհայտ է, որ այս ինքն զուգահեռացման ռազմավարությունը կարևոր նշանակություն ունի, և այստեղ է, որ նրանք պետք է և կարողանան մրցել TensorFlow- ի կամ PyTorch- ի հետ `զգալիորեն ավելի լավ կատարողականություն ստանալով Huawei պրոցեսորների միջոցով:
Պլանավորված ճանապարհային քարտեզ և ներդրում կատարելու եղանակ
Ակնհայտ է, որ շատ աշխատանք կա անելու, և այս պահին նրանք այս էջում ներկայացված ընդարձակ ճանապարհային քարտեզում կատարելագործել են իրենց մտքում եղած գաղափարները հաջորդ տարվա համար, բայց նրանք պնդում են, որ առաջնահերթությունները կկարգավորվեն ըստ օգտագործողի:
Հետադարձ կապ Այս պահին մենք կարող ենք գտնել այս հիմնական տողերը.
- Աջակցություն ավելի շատ մոդելների (սպասվող դասական մոդելներ, GAN, RNN, Տրանսֆորմատորներ, ուժեղացված ուսուցման մոդելներ, հավանական հավանական ծրագրավորում, AutoML և այլն):
- Ընդլայնել API- ներն ու գրադարանները ՝ օգտագործման և ծրագրավորման փորձը բարելավելու համար (ավելի շատ օպերատորներ, ավելի շատ օպտիմիզատորներ, ավելի շատ կորուստների գործառույթներ և այլն)
- Huawei Ascend պրոցեսորների համապարփակ աջակցություն և կատարողականի օպտիմիզացում (կազմման օպտիմիզացում, ռեսուրսների օգտագործման բարելավում և այլն)
- Theրագրաշարի բույգի էվոլյուցիա և հաշվարկային գրաֆիկի օպտիմիզացումների կատարում (միջանկյալ IR ներկայացուցչության բարելավում, օպտիմալացման լրացուցիչ հնարավորությունների ավելացում և այլն):
- Աջակցություն ավելի շատ ծրագրավորման լեզուների (ոչ միայն Python):
- Բարելավված բաշխված ուսուցում ՝ ավտոմատ պլանավորման, տվյալների բաշխման և այլնի օպտիմալացմամբ
- Բարելավեք MindInsight գործիքը `ուսուցման ընթացքում ծրագրավորողի համար ավելի հեշտ դարձնելու« կարգաբերումը »և բարելավելու հիպարամետրերի կարգավորումը:
- Առաջընթաց Edge- ի սարքերին եզրակացության գործառույթների առաքման գործում (անվտանգություն, ոչ պլատֆորմային մոդելների աջակցություն ONNX- ի միջոցով և այլն)
Համայնքի էջում կարող եք տեսնել, որ MindSpore- ն ունի գործընկերներ Huawei- ից և Չինաստանից դուրս, ինչպիսիք են Էդինբուրգի համալսարանը, Լոնդոնի կայսերական քոլեջը, Մյունստերի համալսարանը (Գերմանիա) կամ Փարիզ-Սաքլեյի համալսարանը: Նրանք ասում են, որ հետևելու են կառավարման բաց մոդելին և հրավիրում են ամբողջ համայնքին ներդրում ունենալ ինչպես օրենսգրքում, այնպես էլ փաստաթղթավորման մեջ:
Եզրակացություն
Արագ առաջին հայացքից հետո թվում է, որ նախագծման և իրականացման ճիշտ որոշումները (ինչպես համընկնումը և ավտոմատ տարբերակումը) կարող են տեղ ավելացնել բարելավումների և օպտիմալացման համար, որոնք ավելի լավ արդյունք են ապահովում, քան այն շրջանակները, որոնք նրանք ցանկանում են գերազանցել:Բայց դեռ շատ աշխատանք կա PyTorch- ին և TensorFlow- ին որսալու համար, և առաջին հերթին համայնք կառուցելու համար, ոչ միայն: Այնուամենայնիվ, մենք բոլորս արդեն գիտենք, որ Huawei- ի նման հատվածի մեկ մեծ ընկերության աջակցությամբ ամեն ինչ հնարավոր է, կամ դա ակնհայտ էր երեք տարի առաջ, երբ PyTorch- ի (Facebook) առաջին տարբերակը հայտնվեց, որ այն կարող է մոտ լինել կրունկին: TensorFlow- ի (Google- ի)՞: