Мојо језик за АИ програмере

Tehnološki svet neprestano napreduje. Najnovija inovacija je programski jezik Mojo. Njegov cilj je poboljšanje brzine izvršavanja projekata zasnovanih na Pythonu, pružajući programerima performanse uporedive sa C-om.

Python je jedan od vodećih programskih jezika. To je svestran jezik koji je jednostavan za učenje i omogućava početnicima da pristupe programiranju.

Nadalje, Python je odličan alat za iskusne programere koji ga mogu koristiti za izradu složenih aplikacija. Međutim, jedan od glavnih nedostataka Pythona je njegova brzina izvršavanja. Tu na scenu stupa Mojo.

Ovaj članak istražuje Mojo i njegovu povezanost sa Python ekosistemom. Krenimo!

Šta je Mojo?

Mojo je savremeni, visoko-nivo programski jezik. Odlikuje ga intuitivan dizajn koji omogućava programerima da brzo kreiraju aplikacije. Osim toga, teži da premosti jaz između razvoja i istraživanja, omogućavajući korisnicima da koriste metaprogramiranje i sistemsko programiranje, sve to koristeći Python sintaksu i ekosistem.

U velikoj meri se oslanja na Rust i donosi visoke brzine izvršavanja u Python ekosistem. Tehnički, Mojo je nadskup Pythona, pružajući pristup njegovim mogućnostima.

Tim koji stoji iza Moja dolazi iz Modulara, kompanije za AI infrastrukturu. To znači da je ovaj programski jezik namenjen programerima veštačke inteligencije. Pored Mojo programskog jezika, predstavili su i Inference Engine, alat koji programerima omogućava da poboljšaju radni proces, skaliraju AI proizvode i smanje latenciju inferencije (više o tome kasnije).

Prema rečima izvršnog direktora Modulara, Chrisa Lattnera, Mojo je do 35.000 puta brži od Pythona. On je takođe ključna osoba iza brzog razvoja ovog programskog jezika. Povećanje brzine se postiže zahvaljujući načinu na koji Mojo koristi LLVM kompajlerski lanac alata i MILR (Multi-Level Intermediate Representation Overview) kompajlersku infrastrukturu.

Ciljevi Mojo programskog jezika uključuju:

  • Potpunu kompatibilnost sa Python ekosistemom.
  • Omogućavanje programerima da implementiraju podskupove koda u akceleratorima.
  • Nizak nivo kontrole radi postizanja predvidljivih performansi.
  • Sprečavanje fragmentacije ekosistema.

Da biste isprobali Mojo, morate ga koristiti kroz njihovo okruženje hostovano u oblaku, Mojo Playground. Potrebno je da se prijavite, i možete dobiti radno okruženje!

Zašto nam je potreban Mojo?

Osnovna ideja iza Moja je da se objedini ML/AI infrastruktura pružanjem programskog jezika koji radi na celom steku. Štaviše, pojednostavljuje upotrebu, eliminišući potrebu za pisanjem MLIR koda.

Prema Modularu, Mojo će ponuditi skalabilan i inovativan model programiranja. Na taj način će korisnici u oblasti veštačke inteligencije moći lako da rade sa akceleratorima i heterogenim sistemima.

Tehnički, Mojo je programski jezik koji podržava metaprogramiranje tokom kompajliranja. Takođe podržava druge karakteristike kao što su keširanje tokom procesa kompilacije, tehnike adaptivne kompilacije itd. Ove karakteristike nisu uobičajene u drugim programskim jezicima.

Ako želite da saznate više o filozofiji Moja, pogledajte Modular dokumente – Zašto Mojo🔥.

Karakteristike Mojo programskog jezika

U ovom odeljku ćemo se osvrnuti na ključne karakteristike Mojo programskog jezika.

#1. Potpuna kompatibilnost sa Pythonom

Cilj Moja je da radi sa Python ekosistemom, a ne protiv njega. To se ogleda u činjenici da Mojo koristi iste funkcije, biblioteke i karakteristike koje nudi Python. Dakle, možete koristiti bilo koju Python biblioteku koju želite unutar Moja.

Za uvoz, moraćete da koristite sledeći kod:

from PythonInterface import Python

Nakon toga, možete koristiti Python.import_module() za uvoz bilo koje Python biblioteke.

Na primer, za uvoz NumPy, koristite sledeću liniju koda:

let np = Python.import_module(“numpy”)

U Pythonu biste koristili „import numpy as np“.

Nakon uvoza, možete ga koristiti za kreiranje nizova, obavljanje proračuna itd.

array = np.array([1, 2, 3])

print(array)

Slično tome, možete uvesti matplotlib.pyplot da biste kreirali grafikon u Moju.

Evo kako to izgleda kada pokrenem kod u Mojo Playground-u.

Ako želite da isprobate kod, kopirajte ga ispod.

from PythonInterface import Python

let np = Python.import_module("numpy")

array = np.array([1, 2, 3, 4, 5])

print(array)

#2. MILR

MILR je skraćenica za Multi-Level Intermediate Representation (višeslojnu intermedijarnu reprezentaciju). Mojo podržava MILR. Ovo, zauzvrat, omogućava programerima pristup novim naprednim funkcijama. Ove karakteristike uključuju AI hardverske jedinice, niti i vektore.

MILR poboljšava performanse zahvaljujući konkurentnosti, čineći Mojo bržim od Pythona. Osim toga, omogućava programerima da iskoriste prednosti višejezgrenih procesora.

#3. Provera vlasništva i pozajmljivača

Pythonovo upravljanje memorijom je bezbedno. Koristi sakupljač smeća, tako da programeri moraju da osiguraju da kod ne naiđe na uslove trke.

Mojo, slično kao Rust, primenjuje strogi model provere vlasništva i pozajmljivača. Trenutno se delimično sprovodi. Ideja iza korišćenja modela je da se poboljša konkurentnost i obezbedi efikasno upravljanje memorijom.

Model vlasništva takođe obezbeđuje bezbedan pristup nitima, što je idealno za pružanje odlične podrške konkurentnom izvršavanju zadataka. Na taj način, programi ne nailaze na uslove trke. Takođe, provera pozajmljivača obezbeđuje da se promenljive uvek proveravaju tokom izvršavanja.

#4. Nulta cena apstrakcije

Mojo nudi apstrakcije bez dodatnih troškova, omogućavajući programerima da preuzmu potpunu kontrolu nad skladištenjem. Ovde programeri mogu da izvrše in-line alokaciju vrednosti u strukturama.

#5. Auto-tjuniranje

Mojo takođe nudi automatsko tjuniranje. Ovo obezbeđuje automatsku alokaciju najboljih vrednosti za parametre, u zavisnosti od ciljanog hardvera.

Automatsko tjuniranje eliminiše potrebu za ručnom optimizacijom koda u skladu sa ciljanim hardverom.

Brzina: Koliko je brz Mojo jezik?

Python je programski jezik visokog nivoa, dizajniran sa fokusom na jednostavnost upotrebe i održavanje. Nažalost, to ga čini sporim u poređenju sa drugim rešenjima ili programskim jezicima.

U testu koji je sproveo Modular, utvrđeno je da je Mojo do 35000 puta brži. Koristili su Mandelbrot algoritam, izvršavajući ga na AWS instanci sa Intel Xeon procesorom. Testirali su PyPy, Scalar C++ i Mojo, zajedno sa Pythonom. Rezultati su bili izuzetno brzi, a možete ih videti u nastavku.

Izvor: modular.com

Da biste saznali više o Mojo brzini, pogledajte ovaj post na JuliaLang zajednici.

Modular Inference Engine – Pokrenite AI modele jeftino

Modular takođe razvija Modular Inference Engine, koji omogućava jeftinije pokretanje AI modela u proizvodnji. Mojo po defaultu podržava Modular Inference Engine. Omogućava timovima da pojednostave svoj radni proces. Takođe, programerima omogućava da smanje latenciju inferencije, što olakšava skaliranje AI proizvoda.

Programeri takođe ne moraju da menjaju svoj model da bi koristili Engine. Jednom učitan, može da učita PyTorch i TensorFlow modele, sposobne za pokretanje sa visokim performansama na širokom spektru hardvera.

Hoće li zameniti Python?

Mojo je nov jezik. Izgleda obećavajuće. Dakle, biće potrebno vremena da se dosegne ciljna publika, kao što su naučnici podataka ili programeri. I da, rešava određene probleme za AI entuzijaste i učenike. Međutim, postoji mnogo sličnih rešenja koja poboljšavaju brzinu Pythona. Na primer, postoje Jax, Codon i Julia – jezik orijentisan ka nauci o podacima.

Dakle, mogu se dogoditi dve stvari. Prvo, da eksponencijalno raste u pogledu funkcionalnosti, i da ga zajednica usvoji. Drugi ishod bi mogao biti da postane ad-hoc programski jezik koji koristi Python biblioteke i Modular Inference Engine.

Dakle, da li će Mojo zameniti Python? Samo vreme će pokazati.

U nastavku, pogledajte korisne Python jednolinijske kodove za pojednostavljivanje uobičajenih zadataka.