Мојо против Пајтона у перформансама: битка за брзу вештачку интелигенцију

Последње ажурирање: КСНУМКС новембра КСНУМКС
  • Пајтон доминира вештачком интелигенцијом због свог екосистема, али GIL, динамичко куцање и интерпретер смањују перформансе.
  • Мојо, базиран на MLIR-у, нуди компајлирање, праву паралелизацију и компатибилност са Пајтон библиотекама.
  • Модуларно обједињује времена извршавања за PyTorch и TensorFlow, са интегрисаним убрзањем и квантизацијом.
  • Огромна убрзања (Манделброт, SIMD) су могућа; изазов је пренети ту предност у производњу и на вишеструки хардвер.

Поређење перформанси између Mojo-а и Python-а

Дебата о перформансама Мојо наспрам Пајтона је жестока јер се дотиче сржи модерне вештачке интелигенције: стварне брзине, једноставности коришћења и хардверске подршке. Последњих година појавиле су се бројке убрзања које, на папиру, делују као научна фантастика, али су поткрепљене дубоким променама у компајлерима и начину на који се код извршава на процесорима, графичким процесорима и акцелераторима вештачке интелигенције.

У овом чланку смо саставили свеобухватан преглед свега што је објављено у различитим изворима о Пајтону, његовим ограничењима перформанси и приступу Мојоа , језика који покреће Модулар, а предводи га Крис Латнер (LLVM, Clang, Swift). Такође објашњавамо MLIR, разлоге за уска грла GIL-а, разлике између CUDA и MPS, компатибилност са Пајтон екосистемом и изазове усвајања који тек предстоје.

Пајтон доминира вештачком интелигенцијом, али његова архитектура не помаже перформансама

Није изненађење да је Пајтон универзални језик вештачке интелигенције : једноставна синтакса, хиљаде библиотека, мноштво туторијала и огромна заједница. Међутим, ова популарност долази са непријатном реалношћу: Пајтон се интерпретира , динамички типизира и подлеже Глобалном закључавању интерпретатора (GIL) , што ограничава истовремено извршавање чистог Пајтон кода на једну нит.

Овај дизајн омогућава бржи развој, али угрожава брзину и ефикасност меморије у поређењу са компајлираним језицима попут C/C++, Swift или Rust. У ML/DL радним оптерећењима, где је свака милисекунда важна, а хардвер невероватно брз, ова казна је изузетно приметна.

Да би се то надокнадило, екосистем је прибегао заобилазним решењима: NumPy (са деловима у C и Fortran језику), библиотекама које делегирају директан приступ изворном коду и C/C++ екстензијама за критичне операције. Ради, да, али уводи слојеве, зависности и Франкенштајново чудовиште верзија, фрејмворка и бекенда које може бити тешко одржавати у продукцији.

Штавише, паралелизам у Пајтону често се ослања на мултипроцесирање или на библиотеке које објављују GIL у изворним секцијама. Резултат је да, осим ако радно оптерећење није веома добро делегирано C/C++ или GPU-у, сирове перформансе Пајтона постају уско грло.

NumPy и друге „закрпе“: неопходне, али са ограничењима

NumPy је класичан пример: многе његове критичне операције су написане у C-у или Fortran-у , што је знатно брже од чистог Python-а. Међутим, када је у питању фина паралелност, скалирање на више језгара или интеграција са новим акцелераторима, Python-ова ограничења се поново појављују , посебно ако се ток контроле често враћа интерпретатору.

Овај слојевити приступ (Python → C/C++ екстензије → драјвери/хардвер) је ефикасан, али сложен за дебаговање и имплементацију . У вештачкој интелигенцији великих размера, са процесима обуке, закључивања и постпроцесне обраде, ова оперативна сложеност је готово једнако тешка као и расположиви FLOPS.

CUDA, MPS и проблем преносивости

CUDA убрзање (NVIDIA) је спас, али и златни кавез: неки модели и оптимизације су у потпуности зависни од NVIDIA стека. Ако покушате да покренете исти код на Apple Silicon-у са Metal Performance Shaders (MPS) или на AMD GPU-има, можете наићи на неподржане инструкције или непотпуне путање израчунавања.

Најчешће поређење је јасно: са CUDA-ом возите „Ферари“, док MPS може деловати ограниченије за одређена радна оптерећења. Упркос томе, индустрија тежи стандардима и преносивости јер нико не жели да веже своје пословање за једног добављача хардвера осим ако није апсолутно неопходно.

МЛИР: мост који је потребан новој ери рачунарства

Да бисмо разумели шта Мојо предлаже, морамо да говоримо о MLIR-у (Multi-Level Intermediate Representation - вишеслојна интермедијерна репрезентација) , пројекту насталом у оквиру LLVM екосистема који додаје интермедијерну репрезентацију дизајнирану за високе перформансе и машинско учење . За разлику од класичног LLVM цевовода, MLIR обрађује графове података, векторизацију, теселацију, уметање DMA и експлицитно управљање кешом.

Једноставно речено: MLIR омогућава трансформацију високог нивоа кода у имплементације веома близу циљног хардвера (CPU, GPU, TPU, NPU, FPGA, итд.), издвајајући паралелизам и примењујући HPC оптимизације које класични компајлер није тако добро покривао за ове домене.

  Како открити и избећи преваре са клонирањем гласа помоћу вештачке интелигенције

Шта је тачно Мојо?

Мојо је језик који се представља као надскуп Пајтона : одржава познату синтаксу, може да користи исте библиотеке и интегрише модерни модел компајлирања који подржава MLIR. Покренут је 2023. године, првобитно као веб игралиште доступно на захтев, а касније са локалним извршавањем на GNU/Linux- у и macOS-у. У фебруару 2025. године, његова стандардна библиотека је постала отвореног кода, иако је компајлер до данас затворен.

Циљ је амбициозан: једноставност Пајтона са перформансама C/C++ , плус безбедност и једноставност коришћења коју смо видели у језицима попут Rust или Swift. Другим речима, писање на високом нивоу и прављење малих, брзих и једноставних за имплементацију бинарних датотека.

Кључеви дизајна: куцање, меморија, структуре и функције

Међу најупечатљивијим карактеристикама су јако типизирање (и статичко типизирање када је потребно), употреба let/var за декларисање непроменљивих и променљивих елемената и подршка за структуре са дизајном дефинисаним компајлирањем, што олакшава генерисање оптималног машинског кода.

Mojo вам омогућава да декларишете функције са `fn` поред `def` ; генерално говорећи, `fn` тежи да подразумева више ограничења и, самим тим, бољи потенцијал оптимизације за компајлер. Такође се може похвалити „апстракцијама без трошкова“ и могућностима самоподешавања , где компајлер бира ефикасне параметре за циљну платформу.

Без GIL-а и са правом паралелизацијом

За разлику од Пајтона, Мојо се не ослања на ГИЛ . Извршно окружење и компајлер су дизајнирани да искористе нити, векторе и акцелераторе без потребе да се програмер бори са основном конкурентношћу интерпретера. У пракси, то значи да задаци који у Пајтону „сусрећу“ ГИЛ заиста могу да се извршавају паралелно.

Ова тачка је кључна у интензивном рачунарству: ако можете да разложите проблем на подзадатке и да их покренете истовремено на изворни начин, скок перформанси није постепен, већ промена лиге.

Перформансе: од Манделброта до векторизованих верзија

За мерење побољшања, понављајући тест је Манделбротов скуп , рачунарски интензиван фрактални генератор савршен за паралелизацију. Са чистим Пајтоном, пријављена су времена која прелазе 1000 секунди , док су имплементације у Мојо-у пале на око 0,03 секунде након узастопних оптимизација.

Документовани су напредци следећег типа: наивна верзија Пајтона → NumPy → наивна верзија Мојоа → векторизовани Мојо са SIMD-ом . Са овим низом побољшања, примећена су огромна убрзања, у распону од 35.000 пута до пријављених бројки од 68.000 пута у одређеним сценаријима. Ово су спектакуларни бројеви који, као и увек, зависе од алгоритма, хардвера и пажње коју улажете у оптимизацију.

Једноставна компилација и имплементација

Мојо прати филозофију изградње у бинарни формат : направите, добијете извршну датотеку и дистрибуирате је . Ако долазите са Пајтона, ово избегава главобоље виртуелних окружења , точкова и комбинација верзија библиотека које се не слажу увек добро заједно.

Да бисте стекли представу, „Hello World“ би се могао компајлирати и покренути једноставним mojo hello.mojo . Штавише, датотеке имају екстензију .mojo (емоџи пламена је постао популаран и као намигивање), што их чини лакшим за препознавање унутар хибридних пројеката.

Компатибилност и екосистем Пајтона

Део шарма Мојоа је то што вас не тера да баците оно што већ имате : његова компатибилност са Пајтон екосистемом значи да можете наставити да користите библиотеке попут NumPy, Pandas или Matplotlib, док усвајате ефикасније структуре и типове када вам то одговара.

У пракси, ова „Python++“ стратегија ублажава криву усвајања: одржавате своју кодну базу , премештате вруће делове у Mojo и користите компајлер и MLIR да бисте исцедили перформансе без напуштања синтаксе коју познајете.

Модуларно: окружење за извршавање које обједињује PyTorch и TensorFlow

Поред језика, Modular је представио универзални фрејмворк/окружење за извршавање способно за покретање PyTorch и TensorFlow модела без потребе за инсталацијом оба стека. Према овим изворима, његова архитектура може убрзати извршавање TensorFlow-а до 3 пута , а PyTorch-а до 2,5 пута , док истовремено интегрише алате за квантизацију , доприносећи тако скалабилности вештачке интелигенције.

Визија је да се избегне „трослојни“ пакао (Python → C/C++ → специфични хардвер) са једним програмским слојем и бекендом који комуницира са било којим хардвером и извлачи најбоље из сваке платформе без преписивања модела сваког другог дана.

  Развој Рубија: језик, екосистем и тренутна употреба

Квантизација: смањење величине без жртвовања тачности

Квантизација модела је као МП3 за неуронске мреже: смањујете тачност одређених тежина/слојева и, заузврат, смањујете величину и убрзавате закључивање. Губитак тачности је обично мали (на пример, са 94% на 91% код класификатора) ​​а добитак у распоређивању и брзини више него надокнађује.

Овај приступ је кључан за преношење модела на локалне уређаје уз поштовање приватности. У ствари, стекови попут Core ML- а и акцелератори попут Apple- ових NPU-ова (преко MPS/Accelerate) теже ка компресованим моделима који се уклапају и раде глатко на iPhone-у или Mac-у без слања података у облак.

Од Свифта за ТенсорФлоу до Мојоа: Латнеров пут

Пут до ове тачке није случајан. Након времена проведеног у компанији Apple (LLVM, Clang, Swift ), Крис Латнер је радио у компанијама Tesla и Google Brain, где је предводио Swift за TensorFlow . Тај покушај комбиновања модерног језика са машинским учењем је одложен, али је донео лекције које су се сада кристалисале у MLIR-у и дизајну Mojo-а.

Пре Модуларног система, Латнер се такође бавио RISC-V светом (SciFive), што се уклапа у идеју да будућност вештачке интелигенције укључује многе врсте хардвера и да су нам потребни компајлери и времена извршавања способни да се брзо прилагоде свима њима.

Статус пројекта, подршка и усвајање

Мојо је покренут 2023. године и иако се језик брзо развија, још увек је у фази сазревања . Његова стандардна библиотека је отворена у фебруару 2025. године, али компајлер је и даље затворен . По популарности (TIOBE индекс), Мојо се налази испод првих 50, што је и очекивано за језик који постоји само две године.

У одељку „ко је ко“, поменута је подршка од стране Amazon-а, AMD-а, NVIDIA-е и Inworld-а . Упркос томе, да би се такмичио са Python-ом, биће му потребна заједница, документација, пакети и приче о успеху у продукцији које могу послужити као референтна тачка за друге.

Изазови: заједница, рефлексија и динамичке карактеристике

Поред перформанси, Пајтон побеђује у погледу заједнице, ресурса и екосистема . Мојо ће морати да попуни празнине у областима где Пајтон истиче своје карактеристике, као што су одређени механизми рефлексије или широко коришћени динамички обрасци. Такође ће морати да настави да усавршава своју једноставност коришћења како би прелазак са Пајтона био потпуно беспрекоран.

Са техничке тачке гледишта, обећање „ компајлирања за све “ звучи одлично, али сваки бекенд (CUDA, ROCm, MPS, TPU, FPGA…) има своје нијансе. Одржавање доследне функционалности и перформанси на свима њима током извршавања је маратон, а не спринт.

Mojo и графички процесори: Више од NVIDIA-е

Једна од предности Mojo-а и MLIR-а је њихова способност да циљају GPU-ове и NVIDIA и AMD-а , а не само CUDA екосистем. Ако ова подршка остане ажурирана и конкурентна, многе компаније ће видети стратешку предност тога што нису везане за једног добављача.

Истовремено, свет компаније Apple (са MPS-ом ) и други специјализовани акцелератори (NPU, FPGA ) захтевају одговарајуће путање компајлирања и библиотеке. Обећање „напиши једном, покрени брзо свуда“ је амбициозно и, ако се правилно испуни, променило би правила игре.

Дебата: Нови језик или „Python++“?

На техничким форумима води се дебата о томе да ли је Мојо „још једна варијанта Пајтона“ или нови језик који дели само синтаксу. За свакодневну употребу, кључно је да можете поново користити свој код и библиотеке док истовремено пишете компоненте перформанси са богатијим типовима и структурама.

Ова дуалност, у комбинацији са модерним MLIR компајлером, је оно што омогућава да „здраво свете“ буде једноставан за коришћење, а истовремено омогућава вашим рачунарским језгрима да се приближе или чак надмаше перформансе C/C++ у векторизованим сценаријима.

Ресурси, заједница и учење

Ако почињете са вештачком интелигенцијом, отворене заједнице учења су непроцењиве. Ови простори, намењени и ученицима и наставницима, нуде могућности за постављање питања, дељење ресурса и напредак од основних до напредних техника. То су фантастична места за вежбање, упоређивање приступа и добијање одговора из стварног света.

Екосистем за информисање јавности такође помаже: од резимеа лансирања Мојоа од стране стручњака попут Џеремија Хауарда, до бесплатних курсева Пајтона на видео платформама које вам омогућавају да програмирате без икаквих трошкова. Што је јача заједница која окружује Мојо, то ће компанијама и програмерима бити лакше да га усвоје.

Практичне напомене и занимљиви детаљи

Ситни детаљи који утичу на квалитет живота такође се сабирају: .mojo датотеке , подршка за fn / def , директно извршавање помоћу mojo команде или експлицитна намера да се понуде бинарне датотеке које се лако дистрибуирају . То су обичне ствари, али када скалирате пројекте, оне праве сву разлику.

  Гемини за Андроид: Револуција у вештачкој интелигенцији и мобилној продуктивности

Истовремено, мора се признати утицај Rust-а и Swift-а на дизајн типова, безбедност меморије и апстракције без трошкова . Ово није случајност: Латнер потиче од стварања Swift-а и пилотирања LLVM/Clang-а; ово наслеђе је очигледно у дизајну компајлера.

Од лабораторије до производње: шта можете очекивати

Ако ћете данас испробати Мојо, има смисла да га користите у модулима са великим утицајем (рачунарска језгра, интензивне трансформације или уске петље). Задржите оркестрацију и алате у Пајтону и мигрирајте компоненте са великом потражњом у Мојо да бисте измерили стварну корист у својим метрикама.

Према анализираним извештајима, задаци типа Манделброта или SIMD језгра су постигли огромна убрзања . У стварним цевоводима, са I/O операцијама, претходним процесирањем и библиотекама трећих страна, видећете значајна побољшања, иако скромнија и зависна од доминантног уског грла.

Уједињени слојеви: збогом „Франкенстаку“

Кључно обећање Модуларног стека је обједињавање слојева: уместо раштрканих Python + C/C++ + специфичних бекендова, нуди један језик за сва три слоја и окружење за извршавање које преговара са хардвером . Мање „лепка“, мање некомпатибилности и мање дефанзивног одржавања.

Ако се ова визија оствари, процеси обуке и закључивања могу се кретати између NVIDIA, AMD, Apple Silicon, TPU или NPU јединица без потребе за потпуним репрограмирањем пројекта. А то је, више од техничког детаља, пословна стратегија : слобода избора хардвера на основу цене, доступности или енергетске ефикасности.

Напомена о гласовним моделима и транскрипцији

У реалним имплементацијама, приликом преноса модела попут Whisper -а (транскрипција) из Пајтона на нативне руте или друге API-је (MPS/Accelerate), јављају се некомпатибилности: одређене инструкције постоје у CUDA-и, али не и у MPS-у, или обрнуто. Овде вам обједињени бекенд и компајлер са MLIR-ом могу уштедети много главобоља.

Без тог заједничког лепка, завршићете са гранама кода и ручним портовима који успоравају еволуцију пројекта. Са њим, обећање је да ћете једном написати и добити ефикасно рутирање на свакој подржаној платформи.

„Мета“ контекст: теренски рад, спонзорства и технолошка заједница

Део материјала који подстиче ову дебату долази из подкаста и техничких блогова који комбинују образовни садржај са спонзорствима и заједницама (чак и продајом робе). Поред анегдотских (курсеви, апликације, Твич, музика у позадини, подршка за мрежу подкаста...), занимљиво је да је техничка дебата превазишла своју нишу и да одјекује код широке публике.

Та бука је добра: доноси тешка питања, примере употребе из стварног света и искуства са разноврсним хардвером. Повећање домета разговора о MLIR-у и Mojo-у убрзава откривање грешака, водиче за миграцију и креирање рецепата које сви можемо поново користити.

Укупна слика је јасна: Пајтон ће остати капија ка вештачкој интелигенцији, али прагматична алтернатива већ постоји када су перформансе најважније. Мојо нема за циљ да елиминише Пајтон, већ да га унапреди модерним компајлером , правом паралелизацијом и слојем за извршавање који разуме и данашње и будуће акцелераторе. Ако радите у машинском учењу/објављивању и време/трошкови по закључивању или епоха обуке су важни, вреди покушати са сопственим подацима и хардвером.

Споразум о OpenAI AWS-у
Повезани чланак:
OpenAI и AWS потписују мега-уговор за скалирање своје вештачке интелигенције: 38.000 милијарди долара, Nvidia чипови и нова мапа облака