- Python dominira umjetnom inteligencijom zbog svog ekosustava, ali GIL, dinamičko tipkanje i interpreter ometaju performanse.
- Mojo, baziran na MLIR-u, nudi kompilaciju, pravu paralelizaciju i kompatibilnost s Python bibliotekama.
- Modular ujedinjuje vremena izvođenja za PyTorch i TensorFlow, s integriranim ubrzanjem i kvantizacijom.
- Moguća su ogromna ubrzanja (Mandelbrot, SIMD); izazov je prenijeti tu prednost na proizvodnju i višestruki hardver.

Rasprava o performansama Mojoa i Pythona je žestoka jer se dotiče srži moderne umjetne inteligencije: stvarne brzine, jednostavnosti korištenja i hardverske podrške. Posljednjih godina pojavile su se brojke ubrzanja koje na papiru izgledaju kao znanstvena fantastika, ali potkrijepljene su dubokim promjenama u kompajlerima i načinu izvršavanja koda na CPU-ima, GPU-ima i AI akceleratorima.
U ovom članku sastavili smo sveobuhvatan pregled svega što je objavljeno u raznim izvorima o Pythonu, njegovim ograničenjima performansi i pristupu Mojo-a , jezika koji pokreće Modular, a predvodi ga Chris Lattner (LLVM, Clang, Swift). Također objašnjavamo MLIR, razloge uskih grla GIL-a, razlike između CUDA-e i MPS-a, kompatibilnost s Python ekosustavom i izazove usvajanja koji su još uvijek pred nama.
Python dominira umjetnom inteligencijom, ali njegova arhitektura ne poboljšava performanse
Nije iznenađenje da je Python univerzalni jezik umjetne inteligencije : jednostavna sintaksa, tisuće biblioteka, mnoštvo tutorijala i ogromna zajednica. Međutim, ova popularnost dolazi s neugodnom stvarnošću: Python se interpretira , dinamički tipizira i podložan je Global Interpreter Locku (GIL) , koji ograničava istovremeno izvršavanje čistog Python koda na jednu nit.
Ovaj dizajn omogućuje brži razvoj, ali ugrožava brzinu i memorijsku učinkovitost u usporedbi s kompiliranim jezicima poput C/C++, Swifta ili Rusta. U ML/DL opterećenjima, gdje je svaka milisekunda važna, a hardver nevjerojatno brz, ova kazna je izuzetno primjetna.
Kako bi to kompenzirao, ekosustav je pribjegao zaobilaznim rješenjima: NumPy (s dijelovima u C-u i Fortranu), bibliotekama koje delegiraju na izvorni kod i C/C++ proširenjima za kritične operacije. Radi, da, ali uvodi slojeve, ovisnosti i Frankensteinovo čudovište verzija, okvira i pozadinskih sustava koje može biti teško održavati u produkciji.
Nadalje, paralelizam u Pythonu često se oslanja na multiprocesiranje ili na biblioteke koje objavljuju GIL u izvornim sekcijama. Rezultat je da, osim ako opterećenje nije dobro delegirano na C/C++ ili GPU, Python-ove sirove performanse postaju usko grlo.
NumPy i ostale "zakrpe": bitne, ali s ograničenjima
NumPy je klasičan primjer: mnoge njegove kritične operacije napisane su u C-u ili Fortranu , što je znatno brže od čistog Pythona. Međutim, kada je riječ o finom paralelizmu, skaliranju na više jezgri ili integraciji s novim akceleratorima, Pythonova ograničenja se ponovno pojavljuju , posebno ako se tok kontrole često vraća interpreteru.
Ovaj slojeviti pristup (Python → C/C++ ekstenzije → upravljački programi/hardver) je učinkovit, ali složen za otklanjanje pogrešaka i implementaciju . U umjetnoj inteligenciji velikih razmjera, s cjevovodima za obuku, zaključivanje i naknadnu obradu, ova operativna složenost teži gotovo jednako kao i dostupni FLOPS-ovi.
CUDA, MPS i problem prenosivosti
CUDA ubrzanje (NVIDIA) je spas, ali i pozlaćeni kavez: neki modeli i optimizacije u potpunosti ovise o NVIDIA steku. Ako pokušate pokrenuti isti kod na Apple Siliconu s Metal Performance Shaderima (MPS) ili na AMD GPU-ima, možete naići na nepodržane instrukcije ili nepotpune računalne putanje.
Najčešća usporedba je jasna: s CUDA-om vozite "Ferrari", dok se MPS može činiti ograničenijim za određena opterećenja. Unatoč tome, industrija se gura prema standardima i prenosivosti jer nitko ne želi vezati svoje poslovanje za jednog dobavljača hardvera osim ako to nije apsolutno neophodno.
MLIR: most koji je bio potreban novoj eri računarstva
Da bismo razumjeli što Mojo predlaže, moramo razgovarati o MLIR-u (Multi-Level Intermediate Representation) , projektu rođenom unutar LLVM ekosustava koji dodaje međureprezentaciju dizajniranu za visoke performanse i strojno učenje . Za razliku od klasičnog LLVM cjevovoda, MLIR obrađuje grafove podataka, vektorizaciju, teselaciju, umetanje DMA i eksplicitno upravljanje predmemorijom.
Laičkim rječnikom: MLIR omogućuje transformaciju visokorazinskog koda u implementacije vrlo blizu ciljnom hardveru (CPU-ovi, GPU-ovi, TPU-ovi, NPU-ovi, FPGA-ovi itd.), izdvajajući paralelizam i primjenjujući HPC optimizacije koje klasični kompajler nije tako dobro pokrivao za ove domene.
Što je točno Mojo?
Mojo je jezik koji se predstavlja kao nadskup Pythona : održava poznatu sintaksu, može koristiti iste biblioteke i integrira moderni model kompilacije koji podržava MLIR. Pokrenut je 2023. godine, u početku kao web igralište dostupno na zahtjev, a kasnije s lokalnim izvršavanjem na GNU/Linuxu i macOS-u. U veljači 2025. njegova standardna biblioteka postala je otvorenog koda, iako je kompajler do danas ostao zatvoren.
Cilj je ambiciozan: jednostavnost Pythona s performansama C/C++ , plus sigurnost i jednostavnost korištenja koju smo vidjeli u jezicima poput Rusta ili Swifta. Drugim riječima, pisanje na visokoj razini i izrada malih, brzih i jednostavnih za implementaciju binarnih datoteka.
Dizajnerske tipke: tipkanje, memorija, strukture i funkcije
Među najupečatljivijim značajkama su snažno tipiziranje (i statičko tipiziranje kada je potrebno), korištenje let/var za deklariranje nepromjenjivih i promjenjivih elemenata te podrška za strukture s dizajnom definiranim kompajliranjem, što olakšava generiranje optimalnog strojnog koda.
Mojo vam omogućuje deklariranje funkcija s `fn` uz `def` ; općenito govoreći, `fn` obično podrazumijeva više ograničenja i stoga bolji potencijal optimizacije za kompajler. Također se može pohvaliti "apstrakcijama bez troškova" i mogućnostima samopodešavanja , gdje kompajler odabire učinkovite parametre za ciljnu platformu.
Bez GIL-a i sa stvarnom paralelizacijom
Za razliku od Pythona, Mojo se ne oslanja na GIL . Runtime i kompajler su dizajnirani da iskoriste niti, vektore i akceleratore bez da se programer mora boriti s osnovnom konkurentnošću interpretera. U praksi, to znači da se zadaci koji se u Pythonu "susreću" s GIL-om zaista mogu izvoditi paralelno.
Ova je točka ključna u intenzivnom računalstvu: ako problem možete razbiti na podzadatke i istovremeno ih izvršavati na izvorni način, skok u performansama nije inkrementalan, već promjena lige.
Performanse: od Mandelbrota do vektoriziranih verzija
Za mjerenje poboljšanja, ponavljajući test je Mandelbrotov skup , računalno intenzivan fraktalni generator savršen za paralelizaciju. S čistim Pythonom zabilježena su vremena veća od 1000 sekundi , dok su implementacije u Moju pale na oko 0,03 sekunde nakon uzastopnih optimizacija.
Dokumentirani su napreci sljedećeg tipa: naivna verzija Pythona → NumPy → naivna verzija Mojo-a → vektorizirani Mojo sa SIMD-om . S ovim nizom poboljšanja uočena su ogromna ubrzanja, u rasponu od 35 000x do prijavljenih brojki od 68 000x u specifičnim scenarijima. To su spektakularne brojke koje, kao i uvijek, ovise o algoritmu, hardveru i pažnji koju ulažete u optimizaciju.
Jednostavno sastavljanje i implementacija
Mojo slijedi filozofiju izgradnje u binarnu datoteku : izgradite, dobijete izvršnu datoteku i distribuirate je . Ako dolazite s Pythona, ovo izbjegava glavobolje virtualnih okruženja , kotačića i kombinacija verzija biblioteka koje ne funkcioniraju uvijek dobro zajedno.
Da vam dam ideju, "Hello World" se može kompajlirati i pokrenuti s jednostavnim mojo hello.mojo . Nadalje, datoteke imaju ekstenziju .mojo (emoji plamena postao je popularan i kao namig), što ih čini lakšim za prepoznavanje unutar hibridnih projekata.
Kompatibilnost i ekosustav Pythona
Dio Mojovog šarma je u tome što vas ne prisiljava da odbacite ono što već imate : njegova kompatibilnost s Python ekosustavom znači da možete nastaviti koristiti biblioteke poput NumPy, Pandas ili Matplotlib, a istovremeno usvajati učinkovitije strukture i tipove kada vam to odgovara.
U praksi, ova strategija „Python++“ ublažava krivulju usvajanja: održavate svoju kodnu bazu , premještate vruće dijelove u Mojo i koristite kompajler i MLIR kako biste istisnuli performanse bez napuštanja sintakse koju poznajete.
Modularno: okruženje za izvođenje koje objedinjuje PyTorch i TensorFlow
Uz programski jezik, Modular je predstavio univerzalni framework/runtime sposoban za pokretanje PyTorch i TensorFlow modela bez potrebe za instalacijom oba stoga. Prema tim izvorima, njegova arhitektura može ubrzati izvršavanje TensorFlowa do 3x , a PyTorcha do 2,5x , a istovremeno integrira alate za kvantizaciju , čime doprinosi skalabilnosti umjetne inteligencije.
Vizija je izbjeći "troslojni" pakao (Python → C/C++ → specifični hardver) s jednim programskim slojem i pozadinskim sustavom koji komunicira s bilo kojim hardverom i izvlači najbolje iz svake platforme bez prepisivanja modela svaki drugi dan.
Kvantizacija: smanjenje veličine bez žrtvovanja točnosti
Kvantiziranje modela je poput MP3-a za neuronske mreže: smanjujete točnost određenih težina/slojeva i zauzvrat smanjujete veličinu i ubrzavate zaključivanje. Gubitak točnosti je obično mali (na primjer, s 94% na 91% u klasifikatoru), a dobitak u implementaciji i brzini više nego nadoknađuje.
Ovaj pristup je ključan za prenošenje modela na lokalne uređaje uz poštivanje privatnosti. Zapravo, paketi poput Core ML- a i akceleratori poput Appleovih NPU-ova (putem MPS/Accelerate) teže prema komprimiranim modelima koji se uklapaju i glatko rade na iPhoneu ili Macu bez slanja podataka u oblak.
Od Swifta za TensorFlow do Mojoa: Lattnerovo putovanje
Put do ove točke nije slučajan. Nakon vremena provedenog u Appleu (LLVM, Clang, Swift ), Chris Lattner je radio u Tesli i Google Brainu, gdje je predvodio Swift za TensorFlow . Taj pokušaj kombiniranja modernog jezika sa strojnim učenjem je odgođen, ali je donio lekcije koje su se sada kristalizirale u MLIR-u i dizajnu Mojoa.
Prije Modulara, Lattner se također bavio RISC-V svijetom (SciFive), što se uklapa u ideju da budućnost umjetne inteligencije uključuje mnoge vrste hardvera i da su nam potrebni kompajleri i okruženja za izvršavanje koja se mogu brzo prilagoditi svima njima.
Status projekta, podrška i usvajanje
Mojo je pokrenut 2023. godine i iako se jezik brzo razvija, još je uvijek u fazi sazrijevanja . Njegova standardna biblioteka otvorena je u veljači 2025., ali kompajler je i dalje zatvoren . Što se tiče popularnosti (TIOBE indeks), Mojo se nalazi ispod prvih 50, što je i očekivano za jezik koji postoji samo dvije godine.
U odjeljku "tko je tko" spomenuta je podrška tvrtki Amazon, AMD, NVIDIA i Inworld . Unatoč tome, da bi se mogao natjecati s Pythonom, trebat će mu zajednica, dokumentacija, paketi i uspješne priče o produkciji koje mogu poslužiti kao mjerilo za druge.
Izazovi: zajednica, refleksija i dinamičke karakteristike
Osim performansi, Python pobjeđuje u smislu zajednice, resursa i ekosustava . Mojo će morati popuniti praznine u područjima gdje Python briljira, poput određenih mehanizama refleksije ili široko korištenih dinamičkih obrazaca. Također će morati nastaviti poboljšavati svoju jednostavnost korištenja kako bi prijelaz s Pythona bio potpuno besprijekoran.
S tehničkog stajališta, obećanje " kompiliranja za sve " zvuči sjajno, ali svaki backend (CUDA, ROCm, MPS, TPU-ovi, FPGA-ovi...) ima svoje nijanse. Održavanje dosljedne funkcionalnosti i performansi na svima njima tijekom izvođenja je maraton, a ne sprint.
Mojo i GPU-i: Više od NVIDIA-e
Jedna od snaga Mojoa i MLIR-a je njihova sposobnost ciljanja GPU-ova tvrtki NVIDIA i AMD , ne samo CUDA ekosustava. Ako ova podrška ostane ažurna i konkurentna, mnoge će tvrtke vidjeti stratešku prednost jer nisu vezane za jednog dobavljača.
Istovremeno, Appleov svijet (s MPS-om ) i drugi specijalizirani akceleratori (NPU-ovi, FPGA-ovi ) zahtijevaju odgovarajuće putove kompilacije i biblioteke. Obećanje "napiši jednom, radi brzo svugdje" je ambiciozno i, ako se pravilno ispuni, promijenilo bi pravila igre.
Rasprava: Novi jezik ili „Python++“?
Na tehničkim forumima vodi se rasprava o tome je li Mojo "još jedna varijanta Pythona" ili novi jezik koji dijeli samo sintaksu. Za svakodnevnu upotrebu ključno je da možete ponovno koristiti svoj kod i biblioteke dok istovremeno pišete komponente performansi s bogatijim tipovima i strukturama.
Ova dualnost, u kombinaciji s modernim MLIR kompajlerom, omogućuje da "hello world" bude jednostavan za korištenje, a istovremeno omogućuje vašim računalnim jezgrama da se približe ili čak nadmaše performanse C/C++ u vektoriziranim scenarijima.
Resursi, zajednica i učenje
Ako tek počinjete s umjetnom inteligencijom, otvorene zajednice za učenje su neprocjenjive. Ovi prostori, usmjereni i na učenike i na nastavnike, nude prilike za postavljanje pitanja, dijeljenje resursa i napredak od osnova do naprednih tehnika. To su fantastična mjesta za vježbanje, usporedbu pristupa i dobivanje odgovora iz stvarnog svijeta.
Ekosustav informiranja također pomaže: od sažetaka lansiranja Mojoa koje objavljuju stručnjaci poput Jeremyja Howarda, do besplatnih tečajeva Pythona na video platformama koje vam omogućuju programiranje bez ikakvih troškova. Što je jača zajednica koja okružuje Mojo, to će tvrtkama i programerima biti lakše usvojiti ga.
Praktične bilješke i zanimljivi detalji
Sitni detalji koji utječu na kvalitetu rada također se zbrajaju: .mojo datoteke , podrška za fn / def , izravno izvršavanje s naredbom mojo ili eksplicitna namjera da se ponude binarne datoteke koje je lako distribuirati . To su obične stvari, ali kada skalirate projekte, one čine veliku razliku.
Istovremeno, mora se priznati utjecaj Rusta i Swifta na dizajn tipova, sigurnost memorije i apstrakcije s nultom cijenom . To nije slučajnost: Lattner dolazi iz stvaranja Swifta i pilotiranja LLVM/Clanga; to nasljeđe je vidljivo u dizajnu kompajlera.
Od laboratorija do proizvodnje: što možete očekivati
Ako ćete danas isprobati Mojo, ima smisla koristiti ga u modulima s velikim utjecajem (računalne jezgre, intenzivne transformacije ili uske petlje). Orkestraciju i alate zadržite u Pythonu, a komponente s velikom potražnjom migrirajte u Mojo kako biste izmjerili stvarnu korist u svojim metrikama.
Prema analiziranim izvješćima, zadaci Mandelbrotovog tipa ili SIMD kerneli postigli su ogromna ubrzanja . U stvarnim cjevovodima, s I/O operacijama, predprocesiranjem i bibliotekama trećih strana, vidjet ćete značajna poboljšanja, iako skromnija i ovisna o dominantnom uskom grlu.
Ujedinjeni slojevi: zbogom „Frankenstacku“
Ključno obećanje Modularnog paketa je ujedinjenje slojeva: umjesto raspršenih Python + C/C++ + specifičnih backendova, nudi jedan jezik za sva tri sloja i okruženje za izvođenje koje pregovara s hardverom . Manje "ljepila", manje nekompatibilnosti i manje obrambenog održavanja.
Ako se ova vizija ostvari, procesi obuke i zaključivanja mogu se kretati između NVIDIA, AMD, Apple Silicon, TPU ili NPU bez potrebe za potpunim reprogramiranjem projekta. A to je, više od tehničkog detalja, poslovna strategija : sloboda odabira hardvera na temelju cijene, dostupnosti ili energetske učinkovitosti.
Napomena o glasovnim modelima i transkripciji
U stvarnim implementacijama, prilikom prenošenja modela poput Whispera (transkripcija) iz Pythona na izvorne rute ili druge API-je (MPS/Accelerate), javljaju se nekompatibilnosti: određene instrukcije postoje u CUDA-i, ali ne i u MPS-u ili obrnuto. Ovdje vam ujedinjeni backend i kompajler s MLIR-om mogu uštedjeti mnogo glavobolja.
Bez tog zajedničkog ljepila, završit ćete s granama koda i ručnim portovima koji usporavaju evoluciju projekta. S njim je obećanje da ćete jednom napisati i dobiti učinkovito usmjeravanje na svakoj podržanoj platformi.
„Meta“ kontekst: informiranje, sponzorstva i tehnološka zajednica
Dio materijala koji potiče ovu raspravu dolazi iz podcasta i tehničkih blogova koji kombiniraju edukativni sadržaj sa sponzorstvima i zajednicama (čak i merchandisingom). Osim anegdota (tečajevi, aplikacije, Twitch, glazba u pozadini, podrška za mrežu podcasta...), zanimljivo je da je tehnička rasprava izašla izvan svoje niše i odjekuje kod širokog spektra publike.
Ta buka je dobra: donosi teška pitanja, primjere iz stvarnog svijeta i iskustva s raznim hardverom. Povećanje dosega razgovora prema MLIR-u i Moju ubrzava otkrivanje grešaka, vodiče za migraciju i stvaranje recepata koje svi možemo ponovno koristiti.
Ukupna slika je jasna: Python će ostati ulaz u umjetnu inteligenciju, ali pragmatična alternativa već postoji kada su performanse najvažnije. Mojo ne cilja eliminirati Python, već ga unaprijediti modernim kompajlerom , pravom paralelizacijom i slojem vremena izvođenja koji razumije i današnje i buduće akceleratore. Ako radite u ML/DL-u i vrijeme/cijena po zaključivanju ili epoha treniranja su važni, vrijedi pokušati s vlastitim podacima i hardverom.