LLVM Creator vyvíjí nový programovací jazyk Mojo

Chris Lattner, zakladatel a hlavní architekt LLVM a tvůrce programovacího jazyka Swift, a Tim Davis, dříve vedoucí projektů umělé inteligence společnosti Google, jako jsou Tensorflow a JAX, představili nový programovací jazyk Mojo, který kombinuje snadnost použití pro výzkum a rychlé prototypování s vhodností pro tvorbu vysoce výkonných koncových produktů. Toho je dosaženo díky známé syntaxi Pythonu, zatímco druhé jmenované je dosaženo nativní kompilací, mechanismy pro zabezpečení paměti a hardwarovou akcelerací.

Projekt se zaměřuje na vývoj strojového učení, ale je také prezentován jako univerzální jazyk, který rozšiřuje Python o možnosti systémového programování a je vhodný pro širokou škálu úkolů. Jazyk je například použitelný v oblastech, jako jsou vysoce výkonné výpočty a zpracování a transformace dat. Zajímavou funkcí Mojo je možnost specifikovat symbol emoji „🔥“ jako příponu pro soubory kódu (např. „helloworld.🔥“), a to kromě textové přípony „.mojo“.

Jazyk je v současné době intenzivně vyvíjen a pro testování je k dispozici pouze online rozhraní. Samostatné sestavení pro spuštění na lokálních systémech by měly být zveřejněny později, po obdržení zpětné vazby k interaktivnímu webovému prostředí. Zdrojový kód kompilátoru, JIT a dalších souvisejících vývojů by měl být po dokončení interní architektury open source (model vývoje za zavřenými dveřmi pro funkční prototyp připomíná počáteční fázi vývoje LLVM, Clang a Swift). Vzhledem k tomu, že syntaxe Mojo je založena na Pythonu a jeho typový systém je podobný C/C++, plány do budoucna zahrnují vývoj nástrojů pro zjednodušení migrace stávajících projektů C/C++ a Pythonu do Mojo a také pro usnadnění vývoje hybridních projektů kombinujících kód Pythonu a Mojo.

Projekt je navržen tak, aby pro výpočetní účely využil stávající hardwarové zdroje heterogenních systémů. Například pro spouštění aplikací Mojo a paralelizaci výpočtů lze použít grafické procesory (GPU), specializované akcelerátory strojového učení a vektorové procesory s jednou instrukcí (SIMD). Mezi uváděné důvody pro vývoj samostatné podmnožiny Pythonu, spíše než pro optimalizaci spoléhat se na stávající CPython, patří zaměření na kompilaci, integrace systémových programovacích schopností a použití zásadně odlišné interní architektury, která umožňuje spouštění kódu na GPU a různých hardwarových akcelerátorech. Vývojáři Mojo zároveň hodlají co nejvíce zachovat kompatibilitu s CPythonem.

Mojo lze použít jak v režimu JIT (just-in-time), tak i ahead-of-time (AOT). Kompilátor zahrnuje moderní technologie pro automatickou optimalizaci, ukládání do mezipaměti a distribuovanou kompilaci. Zdrojový kód Mojo je převeden na nízkoúrovňový mezikód (MLIR), vyvinutý projektem LLVM a nabízející další možnosti pro optimalizaci zpracování grafů datových toků. Kompilátor podporuje různé backendy s podporou MLIR pro generování strojového kódu.

Využití dodatečné hardwarové akcelerace umožňuje zvýšení výkonu pro náročné výpočty, které překonává výsledky aplikací v C/C++. Například při testování aplikace pro generování Mandelbrotovy množiny byla kompilovaná aplikace Mojo (r7iz.metal-16xl) 6krát rychlejší než implementace v C++ při spuštění v cloudu AWS (0.03 s oproti 0.20 s), 35 000krát rychlejší než aplikace v Pythonu při použití standardního CPythonu 3.10.9 (0.03 s oproti 1027 s) a 1500krát rychlejší při použití PYPY (0.03 s oproti 46.1 s).

Při hodnocení výkonu strojového učení byl stack AI Modular Inference Engine, napsaný v Mojo, 3x rychlejší na procesoru Intel při zpracování jazykového modelu, 6.4x rychlejší při spouštění modelu doporučení a 2.1x rychlejší při spouštění modelů pro zpracování vizuálních informací ve srovnání s řešením založeným na TensorFlow. Na procesorech AMD dosáhl Mojo 3.2x, 5x a 2.2x zvýšení výkonu, zatímco na procesorech ARM dosáhl 5.3x, 7.5x a 1.7x zvýšení výkonu. Řešení založené na PyTorch zaostávalo za Mojo 1.4x, 1.1x a 1.5x na procesorech Intel, 2.1x, 1.2x a 1.5x na procesorech AMD a 4x, 4.3x a 1.3x na procesorech ARM.

LLVM Creator vyvíjí nový programovací jazyk Mojo

Jazyk podporuje statické typování a nízkoúrovňové funkce zabezpečení paměti připomínající Rust, jako je sledování životnosti referencí a kontrola výpůjček. Kromě funkcí zabezpečení ukazatelů nabízí jazyk také nízkoúrovňové možnosti, jako je přímý přístup k paměti v nebezpečném režimu pomocí typu Pointer, vyvolání jednotlivých instrukcí SIMD a přístup k hardwarovým rozšířením, jako jsou TensorCores a AMX.

LLVM Creator vyvíjí nový programovací jazyk Mojo

Pro zjednodušení oddělení klasického a optimalizovaného kódu v Pythonu pro funkce s explicitně definovanými typy pro všechny proměnné se navrhuje použít samostatné klíčové slovo „fn“ místo „def“. Podobně u tříd, pokud je při kompilaci vyžadováno statické balení dat do paměti (jako v jazyce C), lze místo „class“ použít typ „struct“. Možný je také jednoduchý import modulů C/C++. Například pro import funkce cos z matematické knihovny můžete zadat „from „math.h“ import cos.“

Zdroj: opennet.ru

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster