Thug Chris Lattner, stèidheadair agus prĂŹomh ailtire LLVM agus neach-cruthachaidh cĂ nan prògramadh Swift, agus Tim Davis, a bha na cheannard air pròiseactan AI Google leithid Tensorflow agus JAX, cĂ nan prògramadh Mojo Ăšr a-steach a tha aâ cothlamadh furasta a chleachdadh airson R&D agus prototyping luath le freagarrachd airson toraidhean deireannach Ă rd-choileanadh. Tha a 'chiad fhear air a choileanadh tro bhith a' cleachdadh co-chòrdadh eòlach cĂ nan Python, agus tha an dĂ rna fear mar thoradh air a 'chomas a bhith a' cur ri chèile gu còd inneal, dòighean airson riaghladh cuimhne sĂ bhailte, agus cleachdadh innealan airson luathachadh bathar-cruaidh Ă ireamhachadh.
Tha am pròiseact ag amas air cleachdadh airson leasachadh ionnsachadh innealan, ach tha e air a thaisbeanadh mar chĂ nan coitcheann a leudaicheas comasan cĂ nan Python le prògramadh shiostaman agus a tha freagarrach airson raon farsaing de ghnĂŹomhan. Mar eisimpleir, tha an cĂ nan buntainneach do raointean leithid coimpiutaireachd Ă rd-choileanadh, giollachd dĂ ta agus cruth-atharrachadh. Is e feart inntinneach de Mojo an comas an samhla emoji "đĽ" a shònrachadh mar leudachadh airson faidhlichean còd (mar eisimpleir, "helloworld.đĽ"), a bharrachd air an leudachadh teacsa ".mojo".
An-drĂ sta, tha an cĂ nan fo leasachadh dian agus chan eil ach an eadar-aghaidh air-loidhne air a thabhann airson deuchainn. Thathas aâ gealltainn gun tèid co-chruinneachaidhean fa leth a ruith air siostaman ionadail fhoillseachadh nas fhaide air adhart, Ă s deidh dhaibh fios fhaighinn air ais mu obair na h-Ă rainneachd lĂŹn eadar-ghnĂŹomhach. Thathas an dĂšil an còd stòr airson an neach-cruinneachaidh, JIT agus leasachaidhean eile co-cheangailte ris aâ phròiseact fhosgladh Ă s deidh dealbhadh an ailtireachd a-staigh a chrĂŹochnachadh (tha modal leasachaidh prototype obrach air cĂšl dhorsan dĂšinte coltach ris aâ chiad ĂŹre de leasachadh LLVM, Clang. agus Swift). Leis gu bheil co-chòrdadh Mojo stèidhichte air Python agus gu bheil an siostam seòrsa faisg air C / C ++, tha planaichean ann san Ă m ri teachd inneal a leasachadh gus eadar-theangachadh phròiseactan gnĂ thaichte sgrĂŹobhte ann an C / C ++ agus Python gu Mojo a dhèanamh comasach, a bharrachd air a leasachadh. pròiseactan tar-chinealach a tha aâ cothlamadh còd Python. agus Mojo.
Tha am pròiseact air a dhealbhadh gus na goireasan bathar-cruaidh de shiostaman heterogeneous a tha rim faighinn san t-siostam a thoirt a-steach don Ă ireamhachadh. Mar eisimpleir, faodar GPUn, luathaichean ionnsachaidh inneal sònraichte, agus stiĂšireadh giollachd vector (SIMDn) a chleachdadh gus tagraidhean Mojo a ruith agus gus Ă ireamhachadh a cho-thaobhadh. Tha an adhbhar airson fo-sheata fa leth den chĂ nan Python a leasachadh, seach a bhith aâ tighinn còmhla ri obair optimization an CPython a thâ ann mar-thĂ , air ainmeachadh mar fhòcas cruinneachaidh, amalachadh comasan prògramadh siostaim, agus cleachdadh ailtireachd a-staigh a tha gu bunaiteach eadar-dhealaichte a leigeas le còd a bhith. air a chuir gu bĂ s air GPUs agus diofar luathadairean bathar-cruaidh. Aig an aon Ă m, tha luchd-leasachaidh Mojo an dĂšil cumail ri co-chòrdalachd le CPython cho mòr âs as urrainn.
Faodar Mojo a chleachdadh an dĂ chuid ann am modh eadar-mhĂŹneachaidh JIT agus airson a chur ri chèile ann am faidhlichean so-ghnĂŹomhaichte (AOT, ro-lĂ imh). Tha teicneòlasan Ăšr-nodha aig an inneal-cruinneachaidh airson optimization fèin-ghluasadach, caching agus cruinneachadh sgaoilte. Tha teacsaichean stòr anns aâ chĂ nan Mojo air an tionndadh gu còd eadar-mheadhanach ĂŹre ĂŹosal MLIR (Riochdachadh Eadar-mheadhanach Ioma-ĂŹre), air a leasachadh leis aâ phròiseact LLVM agus aâ toirt seachad feartan a bharrachd airson a bhith aâ giullachd graf sruth dĂ ta. Leigidh an compiler leat diofar backends a chleachdadh a bheir taic do MLIR gus còd inneal a ghineadh.
Tha cleachdadh uidheamachdan bathar-cruaidh a bharrachd gus Ă ireamhachadh a luathachadh ga dhèanamh comasach coileanadh a choileanadh a tha, le Ă ireamhachadh dian, nas Ă irde na tagraidhean C / C ++. Mar eisimpleir, nuair a bhathas aâ dèanamh deuchainn air tagradh gus seata Mandelbrot a ghineadh, bha an tagradh Mojo a chaidh a chur ri chèile, nuair a chaidh a chur gu bĂ s san sgòth AWS (r7iz.metal-16xl), 6 tursan nas luaithe na buileachadh C ++ (0.03 diog. vs 0.20 diog). .), A bharrachd air 35 mĂŹle uair nas luaithe na tagradh Python aâ cleachdadh stoc CPython 3.10.9 (0.03 sec vs 1027 sec) agus 1500 uair nas luaithe aâ cleachdadh PYPY (0.03 sec vs 46.1 sec).
Nuair a bhathas aâ measadh coileanadh ann an raon fuasgladh dhuilgheadasan ionnsachaidh innealan, thionndaidh an stac Modular Inference Engine AI a chaidh a sgrĂŹobhadh ann an cĂ nan Mojo, an taca ri fuasgladh stèidhichte air leabharlann TensorFlow, a-mach gu bhith 3 tursan nas luaithe air siostam le Intel pròiseasar nuair a bhios tu aâ giullachd modail cĂ nain, 6.4 tursan nas luaithe nuair a thèid am modal gineadh molaidh a chur an gnĂŹomh agus 2.1 uair nas luaithe nuair a bhios tu ag obair le modalan airson fiosrachadh lèirsinneach a ghiullachd. Nuair a bha thu a âcleachdadh pròiseasairean AMD, bâ e a âbhuannachd nuair a bha thu aâ cleachdadh Mojo amannan 3.2, 5 agus 2.2, agus nuair a bha iad a âcleachdadh pròiseasairean ARM - amannan 5.3, 7.5 agus 1.7, fa leth. Chaidh am fuasgladh stèidhichte air PyTorch sĂŹos air cĂšl Mojo le amannan 1.4, 1.1 agus 1.5 air an Intel CPU, 2.1, 1.2 agus 1.5 amannan air an AMD CPU agus amannan 4, 4.3 agus 1.3 air an ARM CPU.

Tha an cĂ nan aâ toirt taic do thaidhpeadh statach agus feartan cuimhne-sĂ bhailte aig ĂŹre ĂŹosal a tha coltach ri feartan Rust leithid tracadh fad-beatha iomraidh agus dearbhadair iasad caochlaideach (dearcan iasad). A bharrachd air na dòighean airson obrachadh sĂ bhailte le comharran, tha an cĂ nan cuideachd aâ toirt seachad feartan airson obair aig ĂŹre ĂŹosal, mar eisimpleir, tha e comasach faighinn gu cuimhne gu dĂŹreach ann am modh cunnartach aâ cleachdadh an seòrsa Pointer, cuir fios gu stiĂšireadh SIMD fa leth, no faighinn gu leudachadh bathar-cruaidh mar sin. mar TensorCores agus AMX.

Gus sgaradh còd Python clasaigeach agus lĂ n-leasaichte a dhèanamh nas sĂŹmplidhe airson gnĂŹomhan le mĂŹneachaidhean seòrsa soilleir airson a h-uile caochladair, thathas aâ moladh prĂŹomh fhacal âfnâ air leth a chleachdadh an Ă ite âdefâ. Mar an ceudna airson clasaichean, ma dh'fheumas tu dĂ ta a phacadh gu statach mar chuimhneachan aig Ă m cruinneachaidh (mar ann an C), an Ă ite "clas" faodaidh tu an seòrsa "struct" a chleachdadh. Tha e comasach cuideachd modalan a thoirt a-steach ann an cĂ nanan C / C ++, mar eisimpleir, gus an gnĂŹomh cos a thoirt a-steach bhon leabharlann matamataigeach, faodaidh tu "bho "math.h" import cos" a shònrachadh.
Source: fosgailtenet.ru
