Chris Lattner, fundatur u perit ewlieni ta’ LLVM u kreatur tal-lingwa ta’ programmar Swift, u Tim Davis, eks kap ta’ proġetti Google AI bħal Tensorflow u JAX, introduċew lingwa ta’ programmar ġdida, Mojo, li tgħaqqad il-faċilità ta’ użu għall-iżvilupp tar-riċerka u prototipi rapidi bil-potenzjal li jifformulaw prodotti finali ta 'prestazzjoni għolja. L-ewwel jinkiseb permezz tal-użu tas-sintassi familjari tal-lingwa Python, u t-tieni permezz tal-kapaċità li tiġbor f'kodiċi tal-magni, mekkaniżmi sikuri għall-memorja, u l-użu ta 'għodod ta' aċċelerazzjoni tal-ħardwer.
Il-proġett huwa ffokat fuq l-użu għall-iżvilupp fil-qasam tat-tagħlim tal-magni, iżda huwa ppreżentat bħala lingwa għal skopijiet ġenerali li testendi l-kapaċitajiet ta 'Python b'għodod ta' programmar ta 'sistemi u hija adattata għal firxa wiesgħa ta' kompiti. Pereżempju, il-lingwa hija applikabbli għal oqsma bħall-kompjuters ta' prestazzjoni għolja, l-ipproċessar tad-dejta u t-trasformazzjoni. Karatteristika interessanti ta 'Mojo hija l-abbiltà li tispeċifika l-karattru emoji "🔥" bħala estensjoni għall-fajls tal-kodiċi (per eżempju, "helloworld.🔥"), minbarra l-estensjoni tat-test ".mojo".
Bħalissa, il-lingwa tinsab fl-istadju ta 'żvilupp intensiv u l-interface onlajn biss hija offruta għall-ittestjar. Assemblaġġi separati għat-tħaddim fuq sistemi lokali huma mwiegħda li jiġu ppubblikati aktar tard, wara li jirċievu feedback dwar l-operat tal-ambjent tal-web interattiv. Il-kodiċi sors għall-kompilatur, JIT u żviluppi oħra relatati mal-proġett huwa ppjanat li jinfetaħ wara li titlesta l-arkitettura interna (il-mudell għall-iżvilupp ta 'prototip ta' ħidma wara bibien magħluqa huwa reminixxenti tal-istadju inizjali tal-iżvilupp ta 'LLVM, Clang u Swift). Peress li s-sintassi Mojo hija bbażata fuq il-lingwa Python, u s-sistema tat-tip hija qrib C/C++, fil-futur qed jippjanaw li jiżviluppaw għodod biex jissimplifikaw it-traduzzjoni ta’ proġetti eżistenti miktuba f’C/C++ u Python għal Mojo, kif ukoll biex tiżviluppa proġetti ibridi li jgħaqqdu l-kodiċi Python u Mojo.
Il-proġett huwa ddisinjat biex jinvolvi r-riżorsi tal-ħardwer disponibbli ta 'sistemi eteroġenji fit-twettiq tal-kalkoli. Pereżempju, il-GPUs, l-aċċeleraturi speċjalizzati tat-tagħlim tal-magni, u l-vettori tal-istruzzjoni tal-proċessur (SIMD) jistgħu jintużaw biex imexxu applikazzjonijiet Mojo u jipparallelizzaw il-komputazzjonijiet. Ir-raġunijiet mogħtija għall-iżvilupp ta’ subsett separat tal-lingwa Python aktar milli jingħaqdu max-xogħol ta’ ottimizzazzjoni CPython eżistenti jinkludu fokus fuq il-kumpilazzjoni, l-integrazzjoni tal-kapaċitajiet ta’ programmar tas-sistema, u l-użu ta’ arkitettura interna fundamentalment differenti li tippermetti li l-kodiċi jaħdem fuq GPUs u diversi Aċċeleraturi tal-ħardwer. Madankollu, l-iżviluppaturi Mojo beħsiebhom jibqgħu kompatibbli ma 'CPython kemm jista' jkun.
Mojo jista 'jintuża kemm fil-mod ta' interpretazzjoni bl-użu ta 'JIT, kif ukoll għal kumpilazzjoni f'fajls eżekutibbli (AOT, qabel iż-żmien). Il-kompilatur għandu teknoloġiji moderni mibni għal ottimizzazzjoni awtomatika, caching u kumpilazzjoni distribwita. It-testi tas-sors fil-lingwa Mojo huma kkonvertiti f'kodiċi intermedju ta 'livell baxx MLIR (Rappreżentanza Intermedja f'Multi-Level), żviluppat mill-proġett LLVM u li jipprovdi kapaċitajiet addizzjonali għall-ottimizzazzjoni tal-ipproċessar tal-grafika tal-fluss tad-dejta. Il-kompilatur jippermettilek tuża diversi backends li jappoġġjaw MLIR biex tiġġenera kodiċi tal-magni.
L-użu ta 'mekkaniżmi ta' ħardwer addizzjonali biex jitħaffef il-kalkoli jagħmilha possibbli li tinkiseb prestazzjoni li hija superjuri għal applikazzjonijiet C/C++ waqt kalkoli intensivi. Pereżempju, meta tiġi ttestjata applikazzjoni għall-ġenerazzjoni tas-sett Mandelbrot, applikazzjoni kkumpilata fil-lingwa Mojo meta eżegwita fis-sħab tal-AWS (r7iz.metal-16xl) irriżulta li kienet 6 darbiet aktar mgħaġġla mill-implimentazzjoni f'C++ (0.03 sek. vs. . 0.20 sek.), u wkoll 35 elf darba aktar mgħaġġla minn applikazzjoni Python meta tuża CPython standard 3.10.9 (0.03 sek. vs. 1027 sek.) u 1500 darba aktar malajr meta tuża PYPY (0.03 sek. vs 46.1 sek.) .
Meta tiġi vvalutata l-prestazzjoni fil-qasam tas-soluzzjoni tal-problemi tat-tagħlim tal-magni, l-AI stack Modular Inference Engine, miktuba fil-lingwa Mojo, meta mqabbla ma’ soluzzjoni bbażata fuq il-librerija TensorFlow, kienet 3 darbiet aktar mgħaġġla meta pproċessa mudell tal-lingwa fuq sistema b’ proċessur Intel, 6.4 darbiet aktar mgħaġġel meta tipproċessa l-eżekuzzjoni tal-mudell ta 'ġenerazzjoni ta' rakkomandazzjoni u 2.1 darbiet aktar mgħaġġla meta taħdem ma 'mudelli għall-ipproċessar ta' informazzjoni viżiva. Meta tuża proċessuri AMD, il-qligħ meta tuża Mojo kien 3.2, 5 u 2.2 darbiet, u meta tuża proċessuri ARM - 5.3, 7.5 u 1.7 darbiet, rispettivament. Is-soluzzjoni bbażata fuq PyTorch baqgħet lura wara Mojo b'1.4, 1.1 u 1.5 darbiet fuq CPUs Intel, 2.1, 1.2 u 1.5 darbiet fuq CPUs AMD u 4, 4.3 u 1.3 darbiet fuq CPUs ARM.

Il-lingwa tappoġġja l-ittajpjar statiku u l-karatteristiċi ta 'livell baxx ta' memorja sigura li jfakkru s-sadid, bħall-intraċċar tal-ħajja ta 'referenza u l-kontroll tas-self. Minbarra l-faċilitajiet għal xogħol sikur bil-pointers, il-lingwa tipprovdi wkoll karatteristiċi għal xogħol ta 'livell baxx, pereżempju, aċċess dirett għall-memorja f'modalità mhux sigura bl-użu tat-tip Pointer, sejħa ta' struzzjonijiet individwali SIMD, jew aċċess għal estensjonijiet ta 'hardware bħal TensorCores u AMX .

Biex tissimplifika s-separazzjoni tal-kodiċi Python klassiku u ottimizzat għal funzjonijiet b'definizzjonijiet tat-tip espliċiti għall-varjabbli kollha, huwa propost li tintuża keyword separata "fn" minflok "def". Bl-istess mod għall-klassijiet, jekk għandek bżonn tippakkja b'mod statiku d-dejta fil-memorja waqt il-kumpilazzjoni (bħal f'Ċ), tista 'tuża t-tip "struct" minflok "klassi". Huwa wkoll possibbli li sempliċement timporta moduli f'lingwi C/C++, pereżempju, biex timporta l-funzjoni cos mil-librerija tal-matematika, tista 'tispeċifika "minn "math.h" importazzjoni cos".
Sors: opennet.ru
