- Python dominon IA-në për shkak të ekosistemit të saj, por GIL, shtypja dinamike dhe interpretuesi pengojnë performancën.
- Mojo, bazuar në MLIR, ofron kompilim, paralelizim të vërtetë dhe pajtueshmëri me bibliotekat Python.
- Modular unifikon kohët e ekzekutimit për PyTorch dhe TensorFlow, me përshpejtim dhe kuantizim të integruar.
- Përshpejtime të mëdha (Mandelbrot, SIMD) janë të mundshme; sfida është ta sjellim këtë avantazh në prodhim dhe në pajisje të shumëfishta.

Debati mbi performancën e Mojo vs. Python është i zjarrtë sepse prek thelbin e inteligjencës artificiale moderne: shpejtësinë reale, lehtësinë e përdorimit dhe mbështetjen e pajisjeve. Në vitet e fundit, kanë dalë shifra përshpejtimi që, në letër, duken si fantastiko-shkencore, por ato mbështeten nga ndryshime të thella në kompilues dhe në mënyrën se si ekzekutohet kodi në CPU, GPU dhe përshpejtues të inteligjencës artificiale.
Në këtë artikull, kemi përpiluar një përmbledhje gjithëpërfshirëse të gjithçkaje të publikuar në burime të ndryshme rreth Python, kufizimeve të performancës së tij dhe qasjes së Mojo , gjuhës së mundësuar nga Modular dhe të udhëhequr nga Chris Lattner (LLVM, Clang, Swift). Gjithashtu shpjegojmë MLIR, arsyet pas pengesave të GIL, ndryshimet midis CUDA dhe MPS, përputhshmërinë me ekosistemin Python dhe sfidat e adoptimit që ende na presin.
Python dominon inteligjencën artificiale, por arkitektura e saj nuk ndihmon në performancë
Nuk është çudi që Python është gjuha universale e IA-së : sintaksë e thjeshtë, mijëra librari, shumë tutoriale dhe një komunitet i madh. Megjithatë, ky popullaritet vjen me një realitet të pakëndshëm: Python interpretohet , shtypet dinamikisht dhe i nënshtrohet Global Interpreter Lock (GIL) , i cili kufizon ekzekutimin e njëkohshëm të kodit të pastër Python në një fije të vetme.
Ky dizajn lejon zhvillim më të shpejtë, por kompromenton shpejtësinë dhe efikasitetin e memories krahasuar me gjuhët e kompajluara si C/C++, Swift ose Rust. Në ngarkesat e punës ML/DL, ku çdo milisekondë ka rëndësi dhe hardueri është tepër i shpejtë, ky penalizim është jashtëzakonisht i dukshëm.
Për të kompensuar, ekosistemi është drejtuar te zgjidhjet alternative: NumPy (me pjesë në C dhe Fortran), librari që delegojnë në kodin vendas dhe zgjerime C/C++ për operacione kritike. Funksionon, po, por prezanton shtresa, varësi dhe një përbindësh të Frankenstein-it me versione, korniza dhe backend-e që mund të jenë të vështira për t'u mirëmbajtur në prodhim.
Për më tepër, paralelizmi në Python shpesh mbështetet në shumëpërpunim ose në biblioteka që lëshojnë GIL në seksione native. Rezultati është se, përveç nëse ngarkesa e punës delegohet shumë mirë në C/C++ ose GPU, performanca e papërpunuar e Python bëhet një pengesë.
NumPy dhe "arnime" të tjera: thelbësore, por me kufizime
NumPy është shembulli klasik: shumë nga operacionet e tij kritike janë shkruar në C ose Fortran , që është dukshëm më i shpejtë se Python i pastër. Megjithatë, kur bëhet fjalë për paralelizëm të imët, shkallëzim në bërthama të shumëfishta ose integrim me përshpejtues të rinj, kufizimet e Python rishfaqen , veçanërisht nëse rrjedha e kontrollit kthehet shpesh te interpretuesi.
Kjo qasje e shtresuar (Python → zgjerime C/C++ → drajverë/hardware) është efektive, por komplekse për t'u debuguar dhe vendosur . Në inteligjencën artificiale në shkallë të gjerë, me trajnime, konkluzione dhe kanale pas-përpunimi, ky kompleksitet operacional peshon pothuajse aq sa FLOPS-et e disponueshme.
CUDA, MPS dhe problemi i transportueshmërisë
Përshpejtimi CUDA (NVIDIA) është një shpëtimtar, por edhe një kafaz i praruar: disa modele dhe optimizime varen tërësisht nga grupi i procesorëve NVIDIA. Nëse përpiqeni të ekzekutoni të njëjtin kod në Apple Silicon me Metal Performance Shaders (MPS) ose në GPU-të AMD, mund të hasni udhëzime të pambështetura ose shtigje llogaritëse të paplota.
Krahasimi më i zakonshëm është i qartë: me CUDA-n po ngisni një "Ferrari", ndërsa MPS mund të duket më i kufizuar për ngarkesa të caktuara pune. Megjithatë, industria po shtyn drejt standardeve dhe portabilitetit sepse askush nuk dëshiron ta lidhë biznesin e tij me një shitës të vetëm harduerësh përveç nëse është absolutisht e nevojshme.
MLIR: ura që i nevojitet epokës së re të informatikës
Për të kuptuar se çfarë propozon Mojo, duhet të flasim për MLIR (Përfaqësim i Ndërmjetëm Shumënivelësh) , një projekt i lindur brenda ekosistemit LLVM që shton një përfaqësim të ndërmjetëm të projektuar për performancë të lartë dhe të mësuarit automatik . Ndryshe nga tubacioni klasik LLVM, MLIR trajton grafikët e të dhënave, vektorizimin, mozaikën, futjen e DMA-së dhe menaxhimin eksplicit të memorjes së përkohshme.
Me fjalë të thjeshta: MLIR lejon transformimin e kodit të nivelit të lartë në implementime shumë afër harduerit të synuar (CPU, GPU, TPU, NPU, FPGA, etj.), duke nxjerrë paralelizëm dhe duke aplikuar optimizime HPC që përpiluesi klasik nuk i mbulonte aq mirë për këto domene.
Çfarë është saktësisht Mojo?
Mojo është një gjuhë programimi që paraqitet si një superbashkësi e Python : ajo ruan një sintaksë të njohur, mund të shfrytëzojë të njëjtat biblioteka dhe integron një model modern përpilimi të mbështetur nga MLIR. U lançua në vitin 2023, fillimisht si një platformë interneti e aksesueshme sipas kërkesës, dhe më vonë me ekzekutim lokal në GNU/Linux dhe macOS. Në shkurt të vitit 2025, biblioteka e saj standarde u bë me burim të hapur, megjithëse përpiluesi mbetet i mbyllur deri më sot.
Qëllimi është ambicioz: thjeshtësia e Python me performancën e C/C++ , plus siguria dhe lehtësia e përdorimit që kemi parë në gjuhë si Rust ose Swift. Me fjalë të tjera, shkrimi në një nivel të lartë dhe prodhimi i skedarëve binare të vegjël, të shpejtë dhe të lehtë për t’u instaluar.
Çelësat e dizajnit: shtypja, memoria, strukturat dhe funksionet
Ndër karakteristikat më të habitshme janë shtypja e fortë (dhe shtypja statike kur është e nevojshme), përdorimi i let/var për të deklaruar elementë të pandryshueshëm dhe të ndryshueshëm, dhe mbështetja për strukturat me dizajne të përcaktuara nga kompilimi, të cilat lehtësojnë gjenerimin e kodit optimal të makinës.
Mojo ju lejon të deklaroni funksione me `fn` përveç `def` ; në përgjithësi, `fn` tenton të nënkuptojë më shumë kufizime dhe, për rrjedhojë, potencial më të mirë optimizimi për kompiluesin. Ai gjithashtu krenohet me "abstraksione me kosto zero" dhe aftësi vetë-akordimi , ku kompiluesi zgjedh parametra efikasë për platformën e synuar.
Pa GIL dhe me paralelizim real
Ndryshe nga Python, Mojo nuk mbështetet në GIL . Runtime dhe kompiluesi janë projektuar për të shfrytëzuar fijet, vektorët dhe përshpejtuesit pa pasur nevojë që zhvilluesi të përballet me njëkohshmërinë bazë të interpretuesit. Në praktikë, kjo do të thotë që detyrat që në Python "takohen" me GIL mund të funksionojnë vërtet paralelisht.
Kjo pikë është thelbësore në informatikën intensive: nëse mund ta ndani një problem në nëndetyra dhe t'i ekzekutoni ato njëkohësisht në një mënyrë native, rritja e performancës nuk është graduale, por një ndryshim i madh.
Performanca: nga Mandelbrot në versionet e vektorizuara
Për të matur përmirësimet, një test i përsëritur është bashkësia Mandelbrot , një gjenerator fraktal me shumë përdorime, perfekt për paralelizim. Me Python të pastër, janë raportuar kohë që tejkalojnë 1000 sekonda , ndërsa implementimet në Mojo kanë rënë në rreth 0,03 sekonda pas optimizimeve të njëpasnjëshme.
Janë dokumentuar përparime të llojit të mëposhtëm: versioni naiv i Python → NumPy → versioni naiv i Mojo → Mojo i vektorizuar me SIMD . Me këtë seri përmirësimesh, janë vërejtur përshpejtime të jashtëzakonshme, duke filluar nga 35.000x deri në shifra të raportuara prej 68.000x në skenarë specifikë. Këto janë shifra spektakolare që, si gjithmonë, varen nga algoritmi, hardueri dhe kujdesi që i kushtoni optimizimit.
Kompilim dhe vendosje e thjeshtë
Mojo ndjek filozofinë e ndërtimit në binar : ju ndërtoni, merrni një skedar ekzekutues dhe e shpërndani atë . Nëse përdorni Python, kjo shmang dhimbjet e kokës së mjediseve virtuale , rrotave dhe kombinimeve të versioneve të librarive që nuk funksionojnë gjithmonë mirë së bashku.
Për t'ju dhënë një ide, "Hello World" mund të kompilohet dhe të ekzekutohet me një mojo hello.mojo të thjeshtë . Për më tepër, skedarët kanë prapashtesën .mojo (emoji-t e flakës janë bërë gjithashtu të njohura si një sy), duke i bërë ato më të lehta për t'u identifikuar brenda projekteve hibride.
Pajtueshmëria dhe ekosistemi i Python-it
Një pjesë e hijeshisë së Mojo-s është se nuk të detyron të hedhësh poshtë atë që ke tashmë : përputhshmëria e tij me ekosistemin Python do të thotë që mund të vazhdosh të përdorësh biblioteka si NumPy, Pandas ose Matplotlib, ndërsa miraton struktura dhe lloje më efikase kur të përshtatet.
Në praktikë, kjo strategji “Python++” zbut kurbën e adoptimit: ju mirëmbani bazën e kodit tuaj , zhvendosni pjesë të nxehta në Mojo dhe shfrytëzoni përpiluesin dhe MLIR për të rritur performancën pa braktisur sintaksën që njihni.
Modular: një kohë ekzekutimi për të unifikuar PyTorch dhe TensorFlow
Përveç gjuhës, Modular ka prezantuar një kornizë/kohë ekzekutimi universale të aftë për të ekzekutuar modelet PyTorch dhe TensorFlow pa kërkuar instalimin e të dy pirgjeve. Sipas këtyre burimeve, arkitektura e saj mund të përshpejtojë ekzekutimin e TensorFlow deri në 3 herë dhe të PyTorch deri në 2,5 herë , ndërkohë që integron edhe mjete kuantizimi , duke kontribuar kështu në shkallëzueshmërinë e IA-së.
Vizioni është të shmanget ferri "me tre shtresa" (Python → C/C++ → harduer specifik) me një shtresë të vetme programimi dhe një backend që komunikon me çdo harduer dhe nxjerr më të mirën nga çdo platformë pa e rishkruar modelin tuaj çdo ditë të dytë.
Kuantizimi: zvogëlimi i madhësisë pa sakrifikuar saktësinë
Kuantizimi i modeleve është si një MP3 për rrjetet nervore: ju zvogëloni saktësinë në pesha/shtresa të caktuara dhe, në këmbim, zvogëloni madhësinë dhe përshpejtoni nxjerrjen e përfundimeve. Humbja e saktësisë është zakonisht e vogël (për shembull, duke kaluar nga 94% në 91% në një klasifikues) dhe fitimi në vendosje dhe shpejtësi e kompenson më shumë seç duhet.
Kjo qasje është thelbësore për sjelljen e modeleve në pajisjet lokale , duke respektuar njëkohësisht privatësinë. Në fakt, programe të tilla si Core ML dhe përshpejtues si NPU- të e Apple (nëpërmjet MPS/Accelerate) po shtyjnë përpara modelet e kompresuara që përshtaten dhe funksionojnë pa probleme në një iPhone ose Mac pa dërguar të dhëna në cloud.
Nga Swift për TensorFlow te Mojo: Udhëtimi i Lattner-it
Rruga deri në këtë pikë nuk është e rastësishme. Pas kohës së tij në Apple (LLVM, Clang, Swift ), Chris Lattner punoi në Tesla dhe Google Brain, ku udhëhoqi Swift për TensorFlow . Kjo përpjekje për të kombinuar një gjuhë moderne me të mësuarit automatik u la pas dore, por dha mësime që tani janë kristalizuar në MLIR dhe në dizajnin e Mojo.
Përpara Modular, Lattner u përfshi edhe në botën RISC-V (SciFive), e cila përputhet me idenë se e ardhmja e IA-së përfshin shumë lloje harduerësh dhe ne kemi nevojë për kompilues dhe kohë ekzekutimi të afta të përshtaten shpejt me të gjitha ato.
Statusi, mbështetja dhe miratimi i projektit
Mojo u lançua në vitin 2023 dhe, megjithëse gjuha po evoluon me shpejtësi, ajo është ende në një fazë pjekurie . Biblioteka e saj standarde u hap në shkurt 2025, por përpiluesi mbetet i mbyllur . Për sa i përket popullaritetit (indeksi TIOBE), Mojo renditet nën 50 më të mirat, gjë që pritet për një gjuhë që është vetëm dy vjeç.
Në seksionin "kush është kush", është përmendur mbështetja nga Amazon, AMD, NVIDIA dhe Inworld . Megjithatë, për të konkurruar me Python, do t'i duhet një komunitet, dokumentacion, paketa dhe histori suksesi në prodhim që mund të shërbejnë si pikë referimi për të tjerët.
Sfidat: komuniteti, reflektimi dhe karakteristikat dinamike
Përtej performancës, Python fiton në aspektin e komunitetit, burimeve dhe ekosistemit . Mojo do të duhet të mbyllë boshllëqet në fushat ku Python shkëlqen, siç janë mekanizmat e caktuar reflektimi ose modelet dinamike të përdorura gjerësisht. Gjithashtu do të duhet të vazhdojë të përmirësojë lehtësinë e përdorimit për ta bërë kalimin nga Python plotësisht të lehtë.
Nga një këndvështrim teknik, premtimi i " përpilimit për gjithçka " tingëllon shkëlqyeshëm, por çdo backend (CUDA, ROCm, MPS, TPU, FPGA…) ka nuancat e veta. Ruajtja e funksionalitetit dhe performancës së qëndrueshme në të gjitha ato gjatë kohës së ekzekutimit është një maratonë, jo një sprint.
Mojo dhe GPU-të: Përtej NVIDIA-s
Një nga pikat e forta të Mojo dhe MLIR është aftësia e tyre për të synuar GPU-të si nga NVIDIA ashtu edhe nga AMD , jo vetëm nga ekosistemi CUDA. Nëse kjo mbështetje mbetet e azhurnuar dhe konkurruese, shumë kompani do të shohin avantazhin strategjik të mos qenit të lidhura me një shitës të vetëm.
Në të njëjtën kohë, bota e Apple (me MPS ) dhe përshpejtues të tjerë të specializuar (NPU, FPGA ) kërkojnë shtigje dhe biblioteka të përshtatshme për kompilim. Premtimi "shkruaj një herë, ekzekuto shpejt kudo" është ambicioz dhe, nëse zbatohet siç duhet, do të ishte një ndryshim rrënjësor.
Debat: Gjuhë e re apo “Python++”?
Në forumet teknike, ka debat nëse Mojo është "një variant tjetër i Python" apo një gjuhë e re që ndan vetëm sintaksën. Për përdorim të përditshëm, gjëja thelbësore është që ju të mund të ripërdorni kodin dhe libraritë tuaja, ndërsa njëkohësisht shkruani komponentë të performancës me lloje dhe struktura më të pasura.
Ky dualitet, i kombinuar me kompiluesin modern MLIR, është ajo që lejon që "hello world" të jetë miqësor me përdoruesin, ndërkohë që gjithashtu u mundëson bërthamave tuaja kompjuterike t'i afrohen ose edhe t'i tejkalojnë performancën e C/C++ në skenarë të vektorizuar.
Burimet, komuniteti dhe të nxënit
Nëse sapo keni filluar në fushën e inteligjencës artificiale, komunitetet e të nxënit të hapur janë të paçmueshme. Këto hapësira, të orientuara si për studentët ashtu edhe për mësuesit, ofrojnë mundësi për të bërë pyetje, për të ndarë burime dhe për të përparuar nga teknikat bazë në ato të avancuara. Ato janë vende fantastike për të praktikuar, për të krahasuar qasjet dhe për të marrë përgjigje nga bota reale.
Ekosistemi i shtrirjes së aktiviteteve ndihmon gjithashtu: nga përmbledhjet e lançimeve të Mojo-s nga ekspertë si Jeremy Howard, deri te kurset falas të Python në platforma video që ju mësojnë të kodoni pa asnjë kosto. Sa më i fortë të jetë komuniteti që rrethon Mojo-n, aq më e lehtë do të jetë për kompanitë dhe zhvilluesit ta përvetësojnë atë.
Shënime praktike dhe detaje interesante
Detajet e vogla që ndikojnë në cilësinë e jetës gjithashtu shtohen: skedarët .mojo , mbështetja për fn / def , ekzekutimi i drejtpërdrejtë me komandën mojo ose qëllimi i qartë për të ofruar skedarë binare që shpërndahen lehtë . Janë gjëra të zakonshme, por kur shkallëzon projektet, ato bëjnë gjithë ndryshimin.
Në të njëjtën kohë, duhet të pranohet ndikimi i Rust dhe Swift në dizajnin e tipit, sigurinë e memories dhe abstraksionet me kosto zero . Kjo nuk është rastësi: Lattner vjen nga krijimi i Swift dhe pilotimi i LLVM/Clang; kjo trashëgimi është e dukshme në dizajnin e përpiluesit.
Nga laboratori në prodhim: çfarë mund të prisni
Nëse do ta provoni Mojo-n sot, ka kuptim ta përdorni në module me ndikim të lartë (bërthama llogaritëse, transformime intensive ose cikle të ngushta). Mbani orkestrimin dhe mjetet tuaja në Python dhe migroni komponentë me kërkesë të lartë në Mojo për të matur përfitimin e vërtetë në metrikat tuaja.
Sipas raporteve të analizuara, detyrat e tipit Mandelbrot ose bërthamat SIMD kanë arritur shpejtësi të jashtëzakonshme . Në tubacionet reale, me I/O, parapërpunim dhe biblioteka të palëve të treta, do të shihni përfitime të konsiderueshme, megjithëse më modeste dhe të varura nga pengesa mbizotëruese.
Shtresa të unifikuara: lamtumirë "Frankenstack"-ut
Një premtim kryesor i pirgut Modular është unifikimi i shtresave: në vend të backend-eve specifike të Python + C/C++ + të shpërndara, ai ofron një gjuhë të vetme për të tre shtresat dhe një kohë ekzekutimi që negocion me harduerin . Më pak "ngjitës", më pak papajtueshmëri dhe më pak mirëmbajtje mbrojtëse.
Nëse ky vizion bëhet realitet, proceset e trajnimit dhe nxjerrjes së përfundimeve mund të lëvizin midis NVIDIA, AMD, Apple Silicon, TPU-ve ose NPU-ve pa kërkuar një riprogramim të plotë të projektit. Dhe kjo, më shumë sesa një detaj teknik, është një strategji biznesi : liria për të zgjedhur harduerin bazuar në kosto, disponueshmëri ose efikasitet energjetik.
Një shënim mbi modelet e zërit dhe transkriptimin
Në implementimet e botës reale, kur portoni modele si Whisper (transkriptim) nga Python në rrugë native ose API të tjera (MPS/Accelerate), lindin papajtueshmëri: ekzistojnë udhëzime të caktuara në CUDA, por jo në MPS, ose anasjelltas. Këtu një backend i unifikuar dhe një kompajler me MLIR mund t'ju kursejnë shumë dhimbje koke.
Pa atë element të përbashkët ngjitës, përfundoni me degë kodi dhe portime manuale që ngadalësojnë evolucionin e projektit. Me të, premtimi është të shkruani një herë dhe të merrni një rrugëzim efikas në çdo platformë të mbështetur.
Konteksti “Meta”: shtrirja, sponsorizimet dhe komuniteti i teknologjisë
Disa nga materialet që nxisin këtë debat vijnë nga podkaste dhe blogje teknike që kombinojnë përmbajtje edukative me sponsorizime dhe komunitete (madje edhe me tregtim). Përtej anekdotave (kurse, aplikacione, Twitch, muzikë në sfond, mbështetje në rrjetin e podkasteve…), ajo që është interesante është se debati teknik ka shkuar përtej fushës së tij dhe po gjen jehonë në një gamë të gjerë audiencash.
Kjo zhurmë është e mirë: sjell pyetje të vështira, raste përdorimi nga bota reale dhe përvoja me një larmi pajisjesh. Rritja e shtrirjes së bisedës drejt MLIR dhe Mojo përshpejton zbulimin e defekteve, udhëzuesit e migrimit dhe krijimin e recetave që të gjithë mund t'i ripërdorim.
Pamja e përgjithshme është e qartë: Python do të mbetet porta hyrëse drejt inteligjencës artificiale, por një alternativë pragmatike ekziston tashmë kur performanca është parësore. Mojo nuk synon ta eliminojë Python-in, por përkundrazi ta ngrejë atë në nivelin e duhur me një përpilues modern , paralelizim të vërtetë dhe një shtresë të kohës së ekzekutimit që i kupton përshpejtuesit e sotëm dhe të nesërm. Nëse punoni në ML/DL dhe koha/kostoja për përfundim ose epoka e trajnimit kanë rëndësi, ia vlen ta provoni me të dhënat dhe harduerin tuaj.