Созандаи LLVM забони нави барномасозии Mojo-ро таҳия мекунад

Крис Латтнер, асосгузор ва сармеъмори LLVM ва созандаи забони барномасозии Swift ва Тим Дэвис, собиқ роҳбари лоиҳаҳои Google AI ба монанди Tensorflow ва JAX, забони нави барномасозии Mojo-ро муаррифӣ карданд, ки осонии истифодаро барои таҳияи тадқиқот ва прототипсозии зуд бо потенсиали таҳияи маҳсулоти ниҳоии баландсифат. Якум тавассути истифодаи синтаксиси шиноси забони Python ва дуюм тавассути қобилияти тартиб додан ба коди мошин, механизмҳои бехатарии хотира ва истифодаи асбобҳои суръатбахшии сахтафзор ба даст оварда мешавад.

Лоиҳа ба истифода барои рушд дар соҳаи омӯзиши мошинсозӣ нигаронида шудааст, аммо ҳамчун забони умумӣ муаррифӣ шудааст, ки имкониятҳои Python-ро бо абзорҳои барномасозии система васеъ мекунад ва барои доираи васеи вазифаҳо мувофиқ аст. Масалан, ин забон ба чунин соҳаҳо, аз қабили ҳисоббарории баландсифат, коркарди додаҳо ва трансформатсия татбиқ мешавад. Хусусияти ҷолиби Mojo ин қобилияти муайян кардани аломати эмодзии "🔥" ҳамчун васеъ барои файлҳои код (масалан, "helloworld.🔥"), ба ҷуз тамдиди матнии ".mojo" мебошад.

Дар айни замон, забон дар марҳилаи рушди пуршиддат қарор дорад ва танҳо интерфейси онлайн барои санҷиш пешниҳод карда мешавад. Маҷмӯаҳои ҷудогона барои кор дар системаҳои маҳаллӣ ваъда дода мешаванд, ки баъд аз гирифтани фикру мулоҳизаҳо дар бораи фаъолияти муҳити интерактивии веб нашр мешаванд. Рамзи ибтидоии компилятор, JIT ва дигар таҳияҳои марбут ба лоиҳа пас аз анҷоми меъмории дохилӣ кушода мешаванд (модели таҳияи прототипи корӣ паси дарҳои пӯшида марҳилаи ибтидоии рушди LLVM, Clang ва Свифт). Азбаски синтаксиси Mojo ба забони Python асос ёфтааст ва системаи навъи он ба C/C++ наздик аст, дар оянда онҳо нақша доранд, ки асбобҳоро барои соддагардонии тарҷумаи лоиҳаҳои мавҷуда бо C/C++ ва Python ба Mojo навишташуда таҳия кунанд, инчунин таҳияи лоиҳаҳои гибридии якҷоя кардани рамзи Python ва Mojo.

Лоиҳа барои ҷалби захираҳои сахтафзори мавҷудаи системаҳои гетерогенӣ дар иҷрои ҳисобҳо пешбинӣ шудааст. Масалан, GPU-ҳо, суръатдиҳандаҳои махсуси омӯзиши мошинҳо ва векторҳои дастури протсессор (SIMD) метавонанд барои иҷро кардани барномаҳои Mojo ва параллелизатсияи ҳисобҳо истифода шаванд. Сабабҳое, ки барои таҳияи зермаҷмӯаи алоҳидаи забони Python ба ҷои ҳамроҳ шудан ба кори мавҷудаи оптимизатсияи CPython оварда шудаанд, тамаркуз ба тартибдиҳӣ, ҳамгироии қобилиятҳои барномасозии система ва истифодаи меъмории комилан фарқкунандаи дохилӣ, ки имкон медиҳад код дар GPU ва гуногун кор карда шавад, иборат аст. суръатбахшҳои сахтафзор. Аммо, таҳиягарони Mojo ният доранд, ки то ҳадди имкон бо CPython мувофиқ бошанд.

Mojo метавонад ҳам дар реҷаи тафсир бо истифода аз JIT ва ҳам барои ҷамъоварӣ ба файлҳои иҷрошаванда истифода шавад (AOT, пеш аз вақт). Компилятор дорои технологияҳои муосири дарунсохт барои оптимизатсияи автоматӣ, кэш ва компиляцияи тақсимшуда мебошад. Матнҳои манбаъ дар забони Mojo ба коди сатҳи пасти миёнаравӣ MLIR (Multi-Level Intermediate Representation) табдил дода мешаванд, ки аз ҷониби лоиҳаи LLVM таҳия шудааст ва имкониятҳои иловагиро барои оптимизатсияи коркарди графики ҷараёни маълумот фароҳам меорад. Компилятор ба шумо имкон медиҳад, ки пуштибони гуногунро истифода баред, ки MLIR-ро барои тавлиди коди мошин дастгирӣ мекунанд.

Истифодаи механизмҳои иловагии сахтафзор барои суръат бахшидан ба ҳисобҳо имкон медиҳад, ки дар вақти ҳисобҳои пуршиддат иҷрои он аз барномаҳои C/C++ бартар бошад. Масалан, ҳангоми санҷиши барнома барои тавлиди маҷмӯи Mandelbrot, барномаи тартибдодашуда бо забони Mojo ҳангоми иҷрошуда дар абри AWS (r7iz.metal-16xl) нисбат ба татбиқ дар C++ (6 сония нисбат ба 0.03 сония) 0.20 маротиба тезтар баромад. .35 сония) ва инчунин 3.10.9 ҳазор маротиба тезтар аз барномаи Python ҳангоми истифодаи стандартии CPython 0.03 (1027 сония нисбат ба 1500 сония) ва ҳангоми истифодаи PYPY (0.03 сония нисбат ба 46.1 сония) XNUMX маротиба тезтар. .

Ҳангоми баҳодиҳии самаранокӣ дар соҳаи ҳалли мушкилоти омӯзиши мошин, стеки AI Модулярии хулосабарорӣ, ки бо забони Mojo навишта шудааст, дар муқоиса бо ҳалли дар асоси китобхонаи TensorFlow, ҳангоми коркарди модели забон дар система 3 маротиба тезтар буд. протсессори Intel, 6.4 маротиба тезтар ҳангоми коркарди иҷрои модели насли тавсияшаванда ва 2.1 маротиба дар вақти кор бо моделҳои коркарди иттилооти визуалӣ. Ҳангоми истифодаи протсессори AMD, фоида ҳангоми истифодаи Mojo мутаносибан 3.2, 5 ва 2.2 маротиба ва ҳангоми истифодаи протсессори ARM - 5.3, 7.5 ва 1.7 маротиба. Ҳалли дар асоси PyTorch аз Mojo дар CPUs 1.4, 1.1 ва 1.5 маротиба, дар CPUs 2.1, 1.2 ва 1.5 маротиба дар AMD ва 4, 4.3 ва 1.3 маротиба дар ARM CPU ақиб мондааст.

Созандаи LLVM забони нави барномасозии Mojo-ро таҳия мекунад

Забон чопкунии статикӣ ва хусусиятҳои сатҳи пасти хотираи бехатарро, ки ба Rust шабоҳат доранд, дастгирӣ мекунад, ба монанди пайгирии умри истинод ва санҷиши қарз. Илова ба иншооти кори бехатар бо нишоннамоҳо, ин забон инчунин хусусиятҳоро барои кори сатҳи паст таъмин мекунад, масалан, дастрасии мустақим ба хотира дар ҳолати хатарнок бо истифода аз навъи Pointer, занги дастурҳои SIMD инфиродӣ ё дастрасӣ ба васеъшавии сахтафзор ба монанди TensorCores ва AMX .

Созандаи LLVM забони нави барномасозии Mojo-ро таҳия мекунад

Барои содда кардани ҷудокунии коди классикӣ ва оптимизатсияи Python барои функсияҳо бо таърифҳои навъи возеҳ барои ҳамаи тағирёбандаҳо, ба ҷои "def" калимаи алоҳидаи "fn" истифода мешавад. Ба ҳамин монанд барои дарсҳо, агар ба шумо лозим ояд, ки ҳангоми компиляция маълумотро дар хотира статикӣ ҷамъ кунед (ба мисли C), шумо метавонед ба ҷои “синф” навъи “struct”-ро истифода баред. Инчунин имкон дорад, ки модулҳоро бо забонҳои C/C++ танҳо ворид кунед, масалан, барои ворид кардани функсияи cos аз китобхонаи математика, шумо метавонед “аз “math.h” import cos”-ро муайян кунед.

Манбаъ: opennet.ru

Илова Эзоҳ