Da li ste ikada poželjeli da napravite brže i efikasnije aplikacije, ali ste ipak otkrili da standardni programski jezici nisu u stanju da zadovolje vaše zahteve?
Tada na scenu stupa Mojo jezik.
Mojo je novi programski jezik koji je razvio Modularni, kompanija specijalizovana za AI infrastrukturu.
Posebno je dizajniran da omogući programerima da naprave brže i robusnije aplikacije za nekoliko slučajeva upotrebe, uključujući razvoj umjetne inteligencije. U ovom postu ćemo pogledati šta mojo je, kako funkcionira i zašto biste ga trebali koristiti na svom sljedećem projektu.
Poreklo Mojoa
Kreatori Mojoa prepoznali su potrebu za programskim jezikom koji kombinuje upotrebljivost Pythona sa brzinom i efikasnošću C.
I, uspostavili su jezik koji bi omogućio programerima da naprave aplikacije visokih performansi bez potrebe da uče standardne jezike za opis hardvera.
Kao rezultat toga, stvorili su Mojo, koji treba da bude potpuno kompatibilan sa Python ekosistemom, a istovremeno pruža brzinu na nivou C.
Modularno: Organizacija iza Mojo jezika
Dakle, ko su kreatori ovog futurističkog jezika?
Modular je vodeći svjetski startup za AI infrastrukturu koju su kreirali Chris Lattner i Tim Davis, koji su se upoznali u Google-u i shvatili da previše komplikovana i fragmentirana infrastruktura ograničava globalni utjecaj umjetne inteligencije.
Cilj i cilj Modulara su ponovno promišljanje AI infrastrukture kako bi se unaprijedilo čovječanstvo. Njihova kultura i principi daju prednost klijentima, visokokvalitetnom proizvodnom softveru i davanju značajnih rezultata
Ciljevi Mojoa
Mojo je dizajniran da pruži jedinstven model programiranja za akceleratore mašinskog učenja.
Modular je utvrdio da bi Mojo trebao omogućiti programiranje opće namjene jer današnji CPU imaju tenzore i druge AI akceleratore. Nadalje, budući da se Python intenzivno koristi u mašinskom učenju i drugim poljima, Modular je odlučio da se pridruži Python ekosistemu.
Upotreba Pythona dodatno je olakšala dizajn jezika. Budući da je većina sintakse već bila određena, korporacija bi se umjesto toga mogla koncentrirati na izgradnju kompilacijskog mehanizma i pružanje specijaliziranih mogućnosti programiranja.
Važne karakteristike koje treba uzeti u obzir
Programibilnost
Progresivni tipovi
Funkcija progresivnih tipova Mojo jezika omogućava programerima da koriste napomene tipa poboljšati efikasnost i provjere grešaka.
Programeri mogu dizajnirati efikasniji kod koji otkriva greške tokom kompajliranja, eliminišući greške i povećavajući efikasnost, pružanjem detaljnijih informacija o tipu.
Apstrakcije nulte cijene
Programeri mogu preuzeti kontrolu nad skladištenjem tako što inline alociraju podatke u strukture zahvaljujući apstrakcijama bez troškova koje pruža Mojo jezik.
Uklanjanjem zahtjeva za dodatnom dodjelom memorije, ova funkcija poboljšava efikasnost koda i smanjuje količinu standardnog koda.
Integrirano automatsko podešavanje jezika
Funkcionalnost automatskog podešavanja integrisana u jezik u Mojo jeziku omogućava programerima da automatski odrede idealne vrednosti parametara kako bi imali koristi od ciljnog hardvera.
Uz ovu funkcionalnost, jednostavnije je optimizirati kod bez potrebe da ga ručno prilagođavate za svaku kombinaciju hardvera.
Mojo jezik je fleksibilan i efikasan alat za razvoj veštačke inteligencije jer takođe pruža svu moć MLIR-a (Multi-Level Intermediate Representation), paralelno heterogeno vreme izvođenja i brzo vreme izrade.
Paralelizacija
Mojo koristi MLIR, koji omogućava programerima da koriste vektore, niti i hardverske jedinice za AI za paralelizaciju. Mojo podržava paralelnu obradu preko nekoliko jezgara za razliku od Python-ovog jednonitnog izvršavanja.
Sa 35,000x ubrzanjem u odnosu na Python, Mojo nadmašuje druge jezike u pogledu brzine.
interoperabilnost
Interoperabilnost sa celim Python ekosistemom je jedna od jedinstvenih prednosti Mojoa. Ovo implicira da možete kombinovati Mojo sa bilo kojim proizvoljnim bibliotekama, kao što su Numpy i Matplotlib, kao i sa vašim kodom po meri.
Na primjer, možete vizualizirati podatke u svom Mojo kodu koristeći Python biblioteku Matplotlib.
Rasširivost
Mojo je takođe prilično fleksibilan, omogućavajući korisnicima da jednostavno dodaju korake pre i naknadne obrade modelima ili zamene postojeće korake novim.
Da bi poboljšali svoje modele i modularni stog, programeri mogu koristiti fuziju kernela, prepisivanje grafova, funkcije oblika i druge tehnike.
Zašto biste ga odabrali umjesto Pythona?
Python je popularan razvojni jezik AI zbog svoje fleksibilnosti i kompajliranih biblioteka visokih performansi. Međutim, značajno je sporiji od jezika kao što je C++.
Stoga programeri uče da koriste Python omote oko bržih jezika kako bi izbjegli korištenje Pythona za područja koja su kritična za performanse.
Ovo dovodi do problema sa dva jezika, u kojem se modeli moraju transformisati iz Pythona u bržu implementaciju, kao što je ONNX ili torch skripta, koja ne podržava sve mogućnosti Pythona. Python takođe ima problema sa performansama i nedostatak dobre paralelne obrade.
Čak i iskusnim programerima je teško proučavati, otklanjati greške i rješavati probleme performansi zbog dileme o dva jezika.
Postoje i osnovna ograničenja za ono što Python može učiniti zbog načina na koji je jezik strukturiran. Iako implementacija algoritama koji koriste osnovne komponente u stvarnom svijetu može izgledati jednostavno, znatno je teža i zahtijeva upotrebu bržeg jezika.
Kako započeti?
Možete početi koristiti Mojo jezik odmah na njihovom Playgroundu da biste započeli. Igralište zasnovano na JupyterHub-u daje lekcije i priliku da kreirate sopstveni Mojo kod, iako je Mojo još uvek u toku.
Možete se registrirati za pristup na njihovoj web stranici kako biste pristupili Playgroundu.
Da bi postigao svoje ciljeve performansi, Mojo koristi tehnologiju kompajlera nove generacije sa integrisanim keširanjem, multithreading i tehnologijama distribucije u oblaku.
On dodaje dodatne primitive sistemskom programiranju i teži da vremenom postane Python superskup. Da biste započeli kodiranje sa Mojom, koristite Mojo kompajler da pokrenete Mojo program sa terminala na isti način na koji to radi Python.
Jezik je trenutno u razvoju i namenjen je programerima sa iskustvom u sistemskom programiranju.
Zamotati
Mojo se smatra Python supersetom. I, ima potencijal da revolucioniše programiranje kombinovanjem jednostavnosti Pythona sa performansama C++ i Rusta.
Može iskoristiti u potpunosti Python biblioteka ekosistem, koji omogućava programerima da kreiraju biblioteke visokih performansi bez potrebe za C, C++, Rust ili CUDA.
Omogućava proizvodnju prenosivog koda zahvaljujući svojim funkcijama automatskog podešavanja i metaprogramiranja u vrijeme kompajliranja.
Iako je još uvijek u toku, on ima potencijal da postane moćan programski alat i transformira programsku industriju. Dakle, trebali bismo pratiti budući razvoj Modulara!
Chris Santos
Mislite li da bi osoba sa osnovnim ili srednjim znanjem mogla započeti svoje studije na ovom novom jeziku? Ili savjetujete da prvo proučite osnovnije jezike, kao što su Javascript ili Python?
İlke Candan Bengi
Zdravo Chris, izvinjavam se na kasnom odgovoru! Vjerujem da bi prethodno osnovno razumijevanje/iskustvo o Pythonu moglo biti od pomoći prije nego što počnete s Mojom.