LLVM Creator-ը մշակում է Mojo ծրագրավորման նոր լեզու

LLVM-ի հիմնադիր և գլխավոր ճարտարապետ և Swift ծրագրավորման լեզվի ստեղծող Քրիս Լաթները և Google AI նախագծերի նախկին ղեկավար Թիմ Դևիսը, ինչպիսիք են Tensorflow-ը և JAX-ը, ներկայացրել են ծրագրավորման նոր լեզու՝ Mojo-ն, որը համատեղում է հետազոտության զարգացման և օգտագործման հեշտությունը: արագ նախատիպավորում՝ բարձր արդյունավետությամբ վերջնական արտադրանք ստեղծելու ներուժով: Առաջինը ձեռք է բերվում Python լեզվի ծանոթ շարահյուսության կիրառմամբ, իսկ երկրորդը՝ մեքենայական կոդով կոմպիլյացիայի, հիշողության համար անվտանգ մեխանիզմների և ապարատային արագացման գործիքների կիրառման ունակության շնորհիվ:

Նախագիծը կենտրոնացած է մեքենայական ուսուցման ոլորտում զարգացման համար օգտագործման վրա, սակայն ներկայացված է որպես ընդհանուր նշանակության լեզու, որը ընդլայնում է Python-ի հնարավորությունները համակարգերի ծրագրավորման գործիքներով և հարմար է խնդիրների լայն շրջանակի համար: Օրինակ, լեզուն կիրառելի է այնպիսի ոլորտների համար, ինչպիսիք են բարձր արդյունավետությամբ հաշվարկները, տվյալների մշակումը և փոխակերպումը: Mojo-ի հետաքրքիր առանձնահատկությունն այն է, որ «🔥» էմոջի նիշը որպես կոդային ֆայլերի ընդլայնում (օրինակ՝ «helloworld.🔥»), բացի «.mojo» տեքստային ընդլայնումից նշելու հնարավորությունն է։

Ներկայումս լեզուն ինտենսիվ մշակման փուլում է և թեստավորման համար առաջարկվում է միայն առցանց ինտերֆեյսը։ Լոկալ համակարգերում գործարկվող առանձին հավաքույթները խոստանում են հրապարակել ավելի ուշ՝ ինտերակտիվ վեբ միջավայրի աշխատանքի վերաբերյալ արձագանք ստանալուց հետո: Կազմողի, JIT-ի և նախագծին առնչվող այլ մշակումների սկզբնական կոդը նախատեսվում է բացել ներքին ճարտարապետության ավարտից հետո (փակ դռների հետևում աշխատանքային նախատիպի մշակման մոդելը հիշեցնում է LLVM, Clang և մշակման սկզբնական փուլը։ Սվիֆթ): Քանի որ Mojo շարահյուսությունը հիմնված է Python լեզվի վրա, և տիպային համակարգը մոտ է C/C++-ին, ապագայում նրանք նախատեսում են մշակել գործիքներ՝ C/C++-ով և Python-ով Mojo-ով գրված գոյություն ունեցող նախագծերի թարգմանությունը պարզեցնելու համար, ինչպես նաև. զարգացնել հիբրիդային նախագծեր, որոնք համատեղում են Python կոդը և Mojo-ն:

Ծրագիրը նախատեսված է հաշվարկների կատարման մեջ ներգրավելու տարասեռ համակարգերի առկա ապարատային ռեսուրսները: Օրինակ, GPU-ները, մասնագիտացված մեքենայական ուսուցման արագացուցիչները և պրոցեսորի հրահանգավորման վեկտորները (SIMD) կարող են օգտագործվել Mojo հավելվածները գործարկելու և հաշվարկները զուգահեռացնելու համար: Python լեզվի առանձին ենթաբազմություն մշակելու համար, այլ ոչ թե գոյություն ունեցող CPython-ի օպտիմալացման աշխատանքներին միանալու պատճառները ներառում են կենտրոնացում կոմպիլյացիայի վրա, համակարգի ծրագրավորման հնարավորությունների ինտեգրումը և սկզբունքորեն տարբեր ներքին ճարտարապետության օգտագործումը, որը թույլ է տալիս կոդը գործարկել GPU-ների և տարբեր համակարգերի վրա: ապարատային արագացուցիչներ. Այնուամենայնիվ, Mojo-ի մշակողները մտադիր են հնարավորինս համատեղելի մնալ CPython-ի հետ:

Mojo-ն կարող է օգտագործվել ինչպես մեկնաբանման ռեժիմում՝ օգտագործելով JIT-ը, այնպես էլ գործարկվող ֆայլերում կոմպիլյացիայի համար (AOT, ժամանակից շուտ): Կազմողն ունի ներկառուցված ժամանակակից տեխնոլոգիաներ ավտոմատ օպտիմալացման, քեշավորման և բաշխված կոմպիլյացիայի համար: Աղբյուրի տեքստերը Mojo լեզվով վերածվում են ցածր մակարդակի միջանկյալ կոդի՝ MLIR (Multi-Level Intermediate Representation), որը մշակվել է LLVM նախագծի կողմից և տրամադրում է լրացուցիչ հնարավորություններ տվյալների հոսքի գրաֆիկի մշակման օպտիմալացման համար: Կոմպիլյատորը թույլ է տալիս օգտագործել տարբեր հետնամասեր, որոնք աջակցում են MLIR՝ մեքենայի կոդ ստեղծելու համար:

Հաշվարկներն արագացնելու համար լրացուցիչ ապարատային մեխանիզմների օգտագործումը հնարավորություն է տալիս ինտենսիվ հաշվարկների ժամանակ հասնել այնպիսի կատարողականության, որը գերազանցում է C/C++ հավելվածներին: Օրինակ, Mandelbrot հավաքածուի ստեղծման հավելվածը փորձարկելիս, Mojo լեզվով կազմված հավելվածը, երբ իրականացվել է AWS ամպում (r7iz.metal-16xl), պարզվել է, որ 6 անգամ ավելի արագ է, քան C++-ում իրականացումը (0.03 վրկ ընդդեմ: 0.20 վրկ.), ինչպես նաև 35 հազար անգամ ավելի արագ, քան Python հավելվածը, երբ օգտագործում եք ստանդարտ CPython 3.10.9 (0.03 վրկ. ընդդեմ 1027 վրկ.) և 1500 անգամ ավելի արագ, երբ օգտագործում եք PYPY (0.03 վրկ. ընդդեմ 46.1 վրկ): .

Մեքենայական ուսուցման խնդիրների լուծման ոլորտում կատարողականությունը գնահատելիս Mojo լեզվով գրված AI-stack Modular Inference Engine-ը, համեմատած TensorFlow գրադարանի վրա հիմնված լուծման հետ, 3 անգամ ավելի արագ էր համակարգում լեզվի մոդել մշակելիս: Intel պրոցեսոր՝ 6.4 անգամ ավելի արագ՝ առաջարկությունների ստեղծման մոդելի կատարումը մշակելիս և 2.1 անգամ ավելի արագ՝ տեսողական տեղեկատվության մշակման մոդելների հետ աշխատելիս: AMD պրոցեսորներ օգտագործելիս Mojo-ի օգտագործման ժամանակ շահույթը կազմել է 3.2, 5 և 2.2 անգամ, իսկ ARM պրոցեսորների օգտագործման դեպքում՝ համապատասխանաբար 5.3, 7.5 և 1.7 անգամ։ PyTorch-ի վրա հիմնված լուծումը հետ է մնացել Mojo-ից 1.4, 1.1 և 1.5 անգամ Intel պրոցեսորներում, 2.1, 1.2 և 1.5 անգամ AMD պրոցեսորներում և 4, 4.3 և 1.3 անգամ ARM պրոցեսորներում:

LLVM Creator-ը մշակում է Mojo ծրագրավորման նոր լեզու

Լեզուն աջակցում է ստատիկ մուտքագրման և ցածր մակարդակի հիշողության համար անվտանգ գործառույթներ, որոնք հիշեցնում են Rust-ը, ինչպես օրինակ՝ տեղեկանքի ողջ կյանքի ընթացքում հետևելը և փոխառության ստուգիչը: Ի լրումն ցուցիչների հետ անվտանգ աշխատանքի հարմարությունների, լեզուն տրամադրում է նաև գործառույթներ ցածր մակարդակի աշխատանքի համար, օրինակ՝ անմիջական մուտք դեպի հիշողություն ոչ անվտանգ ռեժիմում՝ օգտագործելով Pointer տիպը, զանգահարելով անհատական ​​SIMD հրահանգներ կամ մուտք գործել ապարատային ընդլայնումներ, ինչպիսիք են TensorCores-ը և AMX-ը: .

LLVM Creator-ը մշակում է Mojo ծրագրավորման նոր լեզու

Դասական և օպտիմիզացված Python կոդի բաժանումը պարզեցնելու համար բոլոր փոփոխականների համար հստակ տիպի սահմանումներ ունեցող ֆունկցիաների համար առաջարկվում է «def»-ի փոխարեն օգտագործել «fn» առանձին հիմնաբառ: Նմանապես դասերի դեպքում, եթե կոմպիլյացիայի ժամանակ ձեզ անհրաժեշտ է տվյալների ստատիկ փաթեթավորում հիշողության մեջ (ինչպես C-ում), կարող եք օգտագործել «struct» տեսակը «class»-ի փոխարեն: Հնարավոր է նաև պարզապես ներմուծել մոդուլներ C/C++ լեզուներով, օրինակ՝ cos ֆունկցիան մաթեմատիկայի գրադարանից ներմուծելու համար կարող եք նշել «math.h» ներմուծման cos-ից։

Source: opennet.ru

Գնեք հուսալի հոստինգ DDoS պաշտպանությամբ կայքերի, VPS VDS սերվերների համար 🔥 Գնեք հուսալի կայքերի հոսթինգ՝ DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster