Стваральнік LLVM развівае новую мову праграмавання Mojo

Крыс Латнер (Chris Lattner), заснавальнік і галоўны архітэктар LLVM, а таксама стваральнік мовы праграмавання Swift, і Цім Дэвіс (Tim Davis), былы кіраўнік AI-праектаў Google, такіх як Tensorflow і JAX, прадставілі новую мову праграмавання Mojo, які спалучае прастату прымянення для даследчых распрацовак і хуткага стварэння. Першае дасягаецца дзякуючы выкарыстанню звыклага сінтаксісу мовы Python, а другое за рахунак магчымасці кампіляцыі ў машынны код, механізмаў бяспечнай працы з памяццю і задзейнічанню сродкаў для апаратнага паскарэння вылічэнняў.

Праект сфакусаваны на выкарыстанні для распрацовак у вобласці машыннага навучання, але пры гэтым падаецца як мова агульнага прызначэння, які пашырае магчымасці мовы Python сродкамі сістэмнага праграмавання і падыходны для шырокага круга задач. Напрыклад, мова ўжываецца для такіх абласцей, як высокапрадукцыйныя вылічэнні, апрацоўка і пераўтварэнне дадзеных. Цікавай асаблівасцю Mojo з'яўляецца магчымасць указання emoji-знака "🔥" у якасці пашырэння для файлаў з кодам (напрыклад, "helloworld.🔥"), акрамя тэкставага пашырэння ".mojo".

У цяперашні час мова знаходзіцца на стадыі інтэнсіўнага развіцця і для тэсціравання прапанаваны толькі online-інтэрфейс. Адасобленыя зборкі для запуску на лакальных сістэмах абяцаюць апублікаваць пазней, пасля атрымання водгукаў аб рабоце інтэрактыўнага web-акружэння. Зыходныя тэксты кампілятара, JIT і іншых злучаных з праектам напрацовак плануюць адкрыць пасля завяршэння праектавання ўнутранай архітэктуры (мадэль развіцця працоўнага прататыпа за зачыненымі дзвярыма нагадвае пачатковую стадыю распрацоўкі LLVM, Clang і Swift). Бо сінтаксіс Mojo заснаваны на мове Python, а сістэма тыпаў блізкая да C/C++, у будучыні плануюць распрацаваць інструментар для спрашчэння перакладу на Mojo існуючых праектаў, напісаных на C/C++ і Python, а таксама для распрацоўкі гібрыдных праектаў, якія сумяшчаюць код на Python і Mojo.

Праект разлічаны на прыцягненне да выканання вылічэнняў наяўных у сістэме апаратных рэсурсаў гетэрагенных сістэм. Напрыклад, для выканання прыкладанняў на мове Mojo і распаралельвання вылічэнняў могуць прыцягвацца GPU, спецыялізаваныя паскаральнікі для машыннага навучання і вектарныя працэсарныя інструкцыі (SIMD). У якасці чынніку развіцця асобнага падмноства мовы Python замест падлучэння да працы па аптымізацыі існага CPython згадваецца арыентацыя на кампіляцыю, інтэграцыя магчымасцяў сістэмнага праграмавання і ўжыванне фундаментальна іншай унутранай архітэктуры, якая дазваляе выконваць код на GPU і розных апаратных паскаральніках. Пры гэтым распрацоўшчыкі Mojo маюць намер наколькі гэта магчыма прытрымлівацца сумяшчальнасці з CPython.

Mojo можа выкарыстоўвацца як у рэжыме інтэрпрэтацыі з выкарыстаннем JIT, так і для кампіляцыі ў выкананыя файлы (AOT, ahead-of-time). У кампілятар убудаваны сучасныя тэхналогіі аўтаматычнай аптымізацыі, кэшавання і размеркаванай кампіляцыі. Зыходныя тэксты на мове Mojo пераўтворацца ў нізкаўзроўневы прамежкавы код MLIR (Multi-Level Intermediate Representation), які развіваецца праектам LLVM і які прадстаўляе дадатковыя магчымасці для аптымізацыі апрацоўкі графа струменя дадзеных. Кампілятар дазваляе ўжываць для генерацыі машыннага кода розныя бэкэнды, якія падтрымліваюць MLIR.

Задзейнічанне дадатковых апаратных механізмаў для паскарэння вылічэнняў дае магчымасць дамагчыся прадукцыйнасці, пры інтэнсіўных вылічэннях праўзыходнай прыкладання на C/C++. Напрыклад, пры тэставанні прыкладання для генерацыі мноства Мандэльброта, скампіляванае прыкладанне на мове Mojo пры выкананні ў воблаку AWS (r7iz.metal-16xl) апынулася ў 6 разоў хутчэй рэалізацыі на C++ (0.03 сек. супраць 0.20 сек. пры thon пры thon пры t 35 (3.10.9 сек. супраць 0.03 сек.) і ў 1027 разоў хутчэй пры выкарыстанні PYPY (1500 сек. супраць 0.03 сек.).

Пры адзнацы прадукцыйнасці ў вобласці рашэння задач машыннага навучання, AI-стэк Modular Inference Engine, напісаны на мове Mojo, у параўнанні з рашэннем на базе бібліятэкі TensorFlow апынуўся на сістэме з працэсарам Intel у 3 разу хутчэй пры апрацоўцы моўнай мадэлі, у 6.4 разу хутчэй пры выкананні мадэлі фармавання рэкамендацый і ў 2.1. інфармацыі. Пры выкарыстанні працэсараў AMD выйгрыш пры выкарыстанні Mojo склаў 3.2, 5 і 2.2 разы, а пры выкарыстанні працэсараў ARM – 5.3, 7.5 і 1.7 разоў, адпаведна. Рашэнне на базе PyTorch адстала ад Mojo у 1.4, 1.1 і 1.5 раз на CPU Intel, у 2.1, 1.2 і 1.5 раз на CPU AMD і ў 4, 4.3 і 1.3 разы на CPU ARM.

Стваральнік LLVM развівае новую мову праграмавання Mojo

Мова падтрымлівае статычную тыпізацыю і сродкі для бяспечнай нізкаўзроўневай працы з памяццю, якія нагадваюць магчымасці мовы Rust, такія як адсочванне часу жыцця спасылак і праверка запазычання зменных (borrow checker). Апроч сродкаў для бяспечнай працы з паказальнікамі ў мове даступныя і магчымасці для нізкаўзроўневай працы, напрыклад, магчымы прамы зварот да памяці ў рэжыме unsafe з выкарыстаннем тыпу Pointer, выклік асобных SIMD-інструкцый ці доступ да апаратных пашырэнняў, такім як TensorCores і AMX.

Стваральнік LLVM развівае новую мову праграмавання Mojo

Для спрашчэння падзелу класічнага і аптымізаванага Python-кода для функцый з відавочным вызначэннем тыпаў для ўсіх зменных прапанавана выкарыстоўваць асобнае ключавое слова fn замест def. Аналагічна для класаў, пры неабходнасці статычнага пакавання дадзеных у памяці падчас кампіляцыі (як у Сі) замест "class" можна выкарыстоўваць тып "struct". Таксама магчымы просты імпарт модуляў на мовах C/C++, напрыклад, для імпарту функцыі cos з бібліятэкі math можна пазначыць "from "math.h" import cos".

Крыніца: opennet.ru

Купіць надзейны хостынг для сайтаў з абаронай ад DDoS, VPS VDS серверы 🔥 Купіць надзейны хостынг для сайтаў з абаронай ад DDoS, VPS VDS серверы | ProHoster