Mojo, nowy język programowania stworzony przez Chrisa Lattnera, twórcę LLVM

mój język

Mojo to nowy język programowania, który obiecuje lepszą wydajność rozwoju uczenia maszynowego

Kilka dni temu pojawiła się wiadomość, że Chrisa Lattnera, założyciel i główny architekt LLVM i Tima Davisa, były szef projektów AI w Google wydał „Mojo”, nowy język programowania, oparty na Pythonie, który rozwiązuje problemy z implementacją i wydajnością Pythona.

Wspomniano, że Mojo oferuje nasz konfigurator łączy w sobie łatwość użytkowania dla R&D i szybkie prototypowanie z adekwatnością dla produktów końcowych o wysokiej wydajności. To pierwsze jest osiągane dzięki wykorzystaniu znanej składni języka Python, drugie zaś dzięki możliwości kompilacji do kodu maszynowego, mechanizmom bezpiecznego zarządzania pamięcią oraz zastosowaniu narzędzi do sprzętowej akceleracji obliczeń.

O Mojo

Ten nowy język programowania koncentruje się na wykorzystaniu do rozwoju uczenia maszynowego, ale take przedstawiony jako język ogólnego przeznaczenia który rozszerza możliwości języka Python o programowanie systemowe i nadaje się do szerokiego zakresu zadań.

Na przykład język ma zastosowanie w takich obszarach, jak obliczenia o wysokiej wydajności, przetwarzanie danych i transformacja danych. Ciekawą funkcją Mojo jest możliwość określenia symbolu emoji „🔥” jako rozszerzenia plików z kodem.

Projekt ma na celu zaangażowanie zasobów sprzętowych systemów dostępnych w systemie w obliczeniach. Na przykład procesory graficzne, wyspecjalizowane akceleratory uczenia maszynowego i instrukcje przetwarzania wektorowego (SIMD) mogą być używane do uruchamiania aplikacji Mojo i równoległych obliczeń.

Powód opracowania oddzielnego podzbioru języka Python, zamiast dołączania do istniejących prac optymalizacyjnych CPython, jest cytowany jako:

Podejście do kompilacji, integracja możliwości programistycznych systemu i wykorzystanie zasadniczo innej architektury wewnętrznej, która umożliwia wykonywanie kodu na procesorach graficznych i różnych akceleratorach sprzętowych. Jednocześnie programiści Mojo zamierzają trzymać się obsługi CPython tak bardzo, jak to możliwe.

Mojo może być używane zarówno w trybie interpretacji JIT, jak i do kompilacji do plików wykonywalnych (AOT, przed czasem). Kompilator ma wbudowane nowoczesne technologie do samooptymalizacji, buforowania i kompilacji rozproszonej.

Kod kod źródłowy w języku Mojo są konwertowane na kod pośredni niskiego poziomu MLIR (Multi-Level Intermediate Representation), opracowany w ramach projektu LLVM i zapewniający dodatkowe funkcje optymalizujące przetwarzanie grafów przepływu danych.

Zastosowanie dodatkowych mechanizmów sprzętowych przyspieszających obliczenia pozwala osiągnąć wydajność, która przy intensywnych obliczeniach przewyższa aplikacje C/C++.

Chris Lattner jest odpowiedzialny za stworzenie wielu projektów, na których wszyscy dzisiaj polegamy, mimo że być może nawet nie słyszeliśmy o wszystkim, co zbudował! W ramach swojej pracy doktorskiej rozpoczął rozwój LLVM, który zasadniczo zmienił sposób budowania kompilatorów i dziś stanowi podstawę wielu z najpowszechniej używanych ekosystemów językowych na świecie.

Następnie wypuścił Clang, kompilator C i C++, który znajduje się na szczycie LLVM i jest używany przez większość czołowych programistów na świecie (w tym zapewnia szkielet kodu o krytycznym znaczeniu dla wydajności) Google). 

Oceniając wydajność w zakresie rozwiązywania problemów z uczeniem maszynowym, stos Modular Inference Engine AI napisany w języku Mojo, w porównaniu do rozwiązania opartego na bibliotece TensorFlow, okazał się 3 razy szybszy w systemie z procesorem Intel

Jednak Chris zauważył, że C i C++ nie wykorzystują w pełni możliwości LLVM, więc pracując w Apple zaprojektował nowy język o nazwie „Swift”, który opisuje jako „cukier składniowy dla LLVM”. 

Warto wspomnieć, że obsługuje statyczne pisanie i bezpieczne funkcje pamięci niskiego poziomu które przypominają funkcje Rusta, takie jak śledzenie życia referencyjnego i pożyczanie zmiennych (sprawdzanie pożyczek).

Oprócz środków do bezpiecznej obsługi wskaźników, język zapewnia również funkcje do prac niskopoziomowych, na przykład możliwy jest bezpośredni dostęp do pamięci w trybie niebezpiecznym za pomocą typu wskaźnika, wywoływanie indywidualnych instrukcji SIMD lub dostęp do rozszerzeń sprzętowych, takich jak TensorCores i AMX.

Obecnie język jest w fazie intensywnego rozwoju i oferowany jest tylko interfejs online, aby spróbować. Przyszłe obietnice mają na celu wypuszczenie oddzielnych kompilacji do uruchamiania na lokalnych systemach później, po otrzymaniu opinii na temat pracy interaktywnego środowiska sieciowego.

Otwarty kod źródłowy kompilatora, JIT i inne prace rozwojowe związane z projektem są planowane po zakończeniu projektowania architektury wewnętrznej (model rozwoju działającego prototypu z zamkniętymi drzwiami przypomina wczesny etap rozwoju LLVM, Clang i Swift).

Ponieważ składnia Mojo jest oparta na Pythonie, a system typów jest zbliżony do C/C++, w przyszłości planowane jest opracowanie zestawu narzędzi ułatwiających tłumaczenie istniejących projektów napisanych w C/C++ i Pythonie na Mojo, a także jak rozwijać projekty hybrydowe, które łączą kod Pythona i Mojo.

Na koniec, jeśli chcesz dowiedzieć się więcej na ten temat, możesz zapoznać się ze szczegółami W poniższym linku.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   Jaime powiedział

    ciekawy ten kopiec…. (bez akcentów)