Az LLVM Creator új Mojo programozási nyelvet fejleszt

Chris Lattner, az LLVM alapítója és főépítésze, valamint a Swift programozási nyelv megalkotója, valamint Tim Davis, a Google mesterséges intelligencia projektjeinek, például a Tensorflow és a JAX korábbi vezetője egy új programozási nyelvet, a Mojo-t mutatott be, amely egyesíti a könnyű használhatóságot a kutatás-fejlesztés és gyors prototípuskészítés, amely nagy teljesítményű végtermékek kialakításának lehetőségét kínálja. Az első a Python nyelv ismert szintaxisának használatával érhető el, a második pedig a gépi kódba fordítás képessége, a memóriabiztos mechanizmusok és a hardveres gyorsító eszközök használata.

A projekt a gépi tanulás területén történő fejlesztésre összpontosít, de általános célú nyelvként jelenik meg, amely rendszerprogramozási eszközökkel bővíti a Python képességeit, és sokféle feladat elvégzésére alkalmas. A nyelv például olyan területeken alkalmazható, mint a nagy teljesítményű számítástechnika, adatfeldolgozás és átalakítás. A Mojo érdekes tulajdonsága, hogy a „.mojo” szövegkiterjesztés mellett a „🔥” emoji karaktert is megadhatja a kódfájlok kiterjesztéseként (például „helloworld.🔥”).

Jelenleg a nyelv intenzív fejlesztési szakaszban van, és csak az online felületet kínálják tesztelésre. Az ígéretek szerint később, az interaktív webes környezet működésével kapcsolatos visszajelzések után a helyi rendszereken futtatható külön összeállítások is megjelennek. A fordító, a JIT és a projekthez kapcsolódó egyéb fejlesztések forráskódját a tervek szerint a belső architektúra elkészülte után nyitják meg (a működő prototípus zárt ajtók mögötti fejlesztésének modellje az LLVM, Clang ill. Gyors). Mivel a Mojo szintaxis Python nyelvre épül, a típusrendszer pedig közel áll a C/C++-hoz, a jövőben olyan eszközök fejlesztését tervezik, amelyek a meglévő C/C++ és Python nyelven írt projektek Mojo-ra való fordítását, valamint Python kódot és Mojo-t ötvöző hibrid projektek fejlesztésére.

A projekt célja a heterogén rendszerek rendelkezésre álló hardver erőforrásainak bevonása a számítások elvégzésébe. Például GPU-k, speciális gépi tanulásgyorsítók és processzor utasításvektorok (SIMD) használhatók a Mojo alkalmazások futtatására és a számítások párhuzamosítására. A Python nyelv külön részhalmazának kifejlesztését indokolták a meglévő CPython optimalizálási munkához való csatlakozás helyett, többek között a fordításra való összpontosítás, a rendszerprogramozási képességek integrálása, valamint egy alapvetően eltérő belső architektúra használata, amely lehetővé teszi a kód futtatását GPU-kon és különféle hardveres gyorsítók. A Mojo fejlesztői azonban a lehető legnagyobb mértékben kompatibilisek maradnak a CPythonnal.

A Mojo használható értelmezési módban is JIT használatával, és futtatható fájlokba való fordításhoz (AOT, idő előtt). A fordító beépített modern technológiákkal rendelkezik az automatikus optimalizálás, a gyorsítótár és az elosztott fordítás érdekében. A Mojo nyelvű forrásszövegeket az LLVM projekt által kifejlesztett, alacsony szintű, MLIR (Multi-Level Intermediate Representation) középszintű kódba konvertálják, és további lehetőségeket biztosítanak az adatfolyam-gráf feldolgozásának optimalizálásához. A fordító lehetővé teszi különféle, MLIR-t támogató háttérprogramok használatát gépi kód generálásához.

A számítások felgyorsítására további hardvermechanizmusok használata lehetővé teszi a C/C++ alkalmazásoknál jobb teljesítmény elérését intenzív számítások során. Például egy Mandelbrot-készletet generáló alkalmazás tesztelésekor egy Mojo nyelven lefordított alkalmazás az AWS felhőben futtatva (r7iz.metal-16xl) hatszor gyorsabbnak bizonyult, mint a C++ nyelvű megvalósítás (6 mp vs. . 0.03 mp), emellett 0.20 ezerszer gyorsabb, mint egy Python-alkalmazás normál CPython 35 használatakor (3.10.9 mp vs. 0.03 mp), és 1027-szor gyorsabb PYPY használata esetén (1500 mp vs. 0.03 mp). .

A gépi tanulási problémák megoldása terén elért teljesítmény értékelése során a Mojo nyelven írt AI-stack Modular Inference Engine a TensorFlow könyvtáron alapuló megoldáshoz képest háromszor gyorsabb volt a nyelvi modell feldolgozása során egy rendszeren Intel processzor, 3-szer gyorsabb az ajánlásgenerálási modell végrehajtásának feldolgozása során, és 6.4-szer gyorsabb, amikor a vizuális információkat feldolgozó modellekkel dolgozik. AMD processzorok használatakor a nyereség Mojo használatakor 2.1-szeres, 3.2-ször és 5-szeres volt, ARM processzorok használatakor pedig 2.2-szor, 5.3-ször és 7.5-szeresére. A PyTorch-alapú megoldás Intel CPU-kon 1.7-szeres, 1.4-szeres és 1.1-szeres, AMD CPU-kon 1.5-szeres, 2.1-szeres és 1.2-szeres, ARM CPU-kon pedig 1.5-, 4-szoros és 4.3-szoros lemaradása volt a Mojo-tól.

Az LLVM Creator új Mojo programozási nyelvet fejleszt

A nyelv támogatja a statikus gépelést és a Rust-ra emlékeztető, alacsony szintű memóriabiztos funkciókat, mint például a referencia-élettartam-követés és a kölcsönzés-ellenőrző. A mutatókkal való biztonságos munkavégzés lehetőségei mellett a nyelv az alacsony szintű munkavégzéshez is kínál funkciókat, például közvetlen hozzáférést a memóriához nem biztonságos módban a Pointer típus használatával, egyedi SIMD utasítások meghívását vagy hardverbővítmények, például TensorCores és AMX elérését. .

Az LLVM Creator új Mojo programozási nyelvet fejleszt

A klasszikus és az optimalizált Python-kód szétválasztásának egyszerűsítése érdekében az explicit típusdefiníciókkal rendelkező függvényeknél az összes változóhoz külön „fn” kulcsszó használata javasolt a „def” helyett. Hasonlóan az osztályokhoz, ha a fordítás során statikusan kell adatokat csomagolni a memóriába (mint a C-ben), használhatja a „struct” típust a „class” helyett. Lehetőség van a modulok egyszerű importálására is C/C++ nyelven, például a cos függvény matematikai könyvtárból történő importálásához megadhatja a „math.h” import cos-t.

Forrás: opennet.ru

Hozzászólás