Język Mojo dla programistów AI

Świat technologii jest zawsze w ruchu. Najnowszym dzieckiem w bloku jest język programowania Mojo. Potrzeba płaszcza, aby poprawić szybkość wykonywania projektów opartych na Pythonie, zapewniając programistom prędkości podobne do C.

Python to jeden z najpopularniejszych języków programowania. Jest to wszechstronny, łatwy do nauczenia się język programowania, który oferuje nowym uczniom bramę do programowania/informatyki.

Ponadto jest to doskonały język programowania dla kompetentnych programistów, którzy mogą go używać do tworzenia złożonych aplikacji. Jednak jedną z najbardziej znaczących wad Pythona jest szybkość wykonywania. I tu wkracza Mojo.

Ten artykuł dotyczy Mojo i jego powiązań z ekosystemem Pythona. Zacznijmy.

Co to jest Mojo?

Mojo to nowoczesny język programowania wysokiego poziomu. Oferuje intuicyjny projekt, który pomaga programistom w szybkim tworzeniu aplikacji. Ponadto ma na celu wypełnienie luki między produkcją a badaniami, umożliwiając użytkownikom korzystanie z funkcji metaprogramowania i programowania systemów ze składnią i ekosystemem Pythona.

Dużo pożycza od Rust i zapewnia szybkie prędkości wykonywania w ekosystemie Pythona. Technicznie rzecz biorąc, Mojo jest nadzbiorem Pythona, który zapewnia dostęp.

Zespół stojący za Mojo pochodzi z Modular, firmy zajmującej się infrastrukturą sztucznej inteligencji. Oznacza to również, że jest to język programowania dla programistów AI. Oprócz języka programowania Mojo wprowadzili także silnik interferencji, który pozwala programistom usprawnić przepływ pracy, skalować produkty AI i zmniejszyć opóźnienie wnioskowania (więcej na ten temat później).

Według CEO Modular, Chrisa Lattnera, Mojo jest 35 000 razy szybszy niż Python. Jest także odpowiedzialny za szybki rozwój języka programowania. Wzrost prędkości jest osiągany dzięki temu, jak Mojo używa łańcucha narzędzi kompilatora LLVM i infrastruktury kompilatora MILR (Multi-level Intermediate Representation Overview).

Cele języków programowania Mojo obejmują:

  • Pracuj z pełną kompatybilnością z ekosystemem Pythona.
  • Umożliwiaj programistom wdrażanie podzbiorów kodu w akceleratorach.
  • Kontrola niskiego poziomu zapewniająca przewidywalną wydajność.
  • Zapewnij brak fragmentacji ekosystemu.

Aby wypróbować Mojo, musisz użyć go za pośrednictwem hostowanego środowiska opartego na chmurze, Mojo Playground. Poprosi Cię o zalogowanie i możesz uzyskać środowisko pracy!

Dlaczego potrzebujemy Mojo?

Główną ideą stojącą za Mojo jest ujednolicenie infrastruktury ML/AI poprzez zapewnienie języka programowania, który działa na całym stosie. Ponadto zapewnia łatwość użytkowania, eliminując konieczność pisania kodu MLIR.

Według Modular, Mojo zaoferuje skalowalny i innowacyjny model programowania. W ten sposób użytkownicy terenowi sztucznej inteligencji będą mogli łatwo pracować z akceleratorami i systemami heterogenicznymi.

Z technicznego punktu widzenia sprawia, że ​​Mojo jest językiem programowania obsługującym metaprogramowanie w czasie kompilacji. Obsługuje również inne funkcje, takie jak buforowanie podczas przepływu kompilacji, adaptacyjne techniki kompilacji itp. Te funkcje nie są obecne w innych językach programowania.

Jeśli chcesz przeczytać więcej o filozofii Mojo, sprawdź Modular Docs – Why Mojo🔥

Cechy języka programowania Mojo

W tej sekcji przyjrzymy się kluczowym cechom języka programowania Mojo.

# 1. Pełna kompatybilność z Pythonem

Mojo ma na celu pracę z ekosystemem Pythona, a nie przeciwko niemu. Wynika to z faktu, że Mojo używa tych samych funkcji, bibliotek i funkcji, które oferuje Python. Możesz więc użyć dowolnej biblioteki Pythona w Mojo.

Aby zaimportować, musisz użyć następującego kodu:

from PythonInterface import Python

Po zakończeniu możesz użyć Python.import_module() do zaimportowania dowolnej biblioteki Pythona.

Na przykład, aby zaimportować numpy, musisz użyć następującego wiersza kodu.

let np = Python.import_module(“numpy”)

W Pythonie musisz wykonać „import numpy as np”

Po zaimportowaniu możesz teraz używać go do tworzenia tablic, wykonywania obliczeń itp.

array = np.array([1, 2, 3])

print(array)

Podobnie możesz zaimportować matplotlib.pyplot lub utworzyć wykres w Mojo.

Tak to wygląda, gdy uruchamiam kod w Mojo Playground.

Jeśli chcesz wypróbować kod, skopiuj go i wklej od dołu.

from PythonInterface import Python

let np = Python.import_module("numpy")

array = np.array([1, 2, 3, 4, 5])

print(array)

#2. MILR

MILR to skrót od Multi-Level Intermediate Representation. Mojo obsługuje MILR. To z kolei umożliwia programistom korzystanie z pełnego wachlarza nowych zaawansowanych funkcji. Funkcje te obejmują jednostki sprzętowe AI, wątki i wektory.

MILR poprawia wydajność dzięki współbieżności, dzięki czemu Mojo jest szybszy niż Python. Ponadto umożliwia programistom korzystanie z wielu rdzeni.

#3. Kontroler własności i pożyczkobiorcy

Zarządzanie pamięcią w Pythonie jest bezpieczne. Wykorzystuje moduł wyrzucania elementów bezużytecznych, więc programiści muszą upewnić się, że kod nie będzie działał w warunkach wyścigu.

Mojo, podobnie jak Rust, implementuje ścisły model sprawdzania własności i pożyczkobiorców. Obecnie jest częściowo realizowany. Ideą wykorzystania modelu jest poprawa współbieżności i zapewnienie doskonałego zarządzania pamięcią.

Model własności zapewnia również podejście bezpieczne dla wątków, które idealnie nadaje się do zapewniania doskonałej obsługi współbieżności. W ten sposób programy nie napotykają warunków wyścigu. Ponadto moduł sprawdzania pożyczkobiorcy zapewnia, że ​​zmienne są zawsze sprawdzane w czasie wykonywania.

#4. Zerowy koszt abstrakcji

Mojo oferuje abstrakcje bez kosztów, pozwalając programistom przejąć pełną kontrolę nad pamięcią masową. Tutaj programiści mogą wprowadzać wartości alokacji inline do struktur.

#5. Przeróbka samochodu

Mojo oferuje również automatyczne dostrajanie. Zapewnia to automatyczne przydzielanie najlepszych wartości parametrom, w zależności od docelowego sprzętu.

Automatyczne dostrajanie eliminuje potrzebę ręcznego optymalizowania kodu zgodnie z docelowym sprzętem.

Szybkość: jak szybki jest język Mojo?

Python to język programowania wysokiego poziomu, którego celem jest łatwość użytkowania i konserwacji. Niestety powoduje to powolność w porównaniu z innymi rozwiązaniami lub językami programowania.

W teście Modulara okazało się, że Mojo ma 35000x. Użyli algorytmu Mandelbrota i uruchomili go na instancji AWS z procesorem Intel Xeon. Przetestowali PYPY, SCALAR C++ i MOJO wraz z Pythonem. Wyniki były bardzo szybkie i możesz je zobaczyć poniżej.

źródło: modular.com

Aby dowiedzieć się więcej o szybkości Mojo, sprawdź ten post w społeczności Julialang.

Modułowy mechanizm wnioskowania — tanie uruchamianie modeli AI

Modular opracowuje również Modular Interference Engine, który sprawia, że ​​uruchamianie modeli AI w produkcji jest tańsze. Mojo domyślnie obsługuje Modular Interfence Engine. Umożliwia zespołom uproszczenie przepływu pracy. Pozwala także programistom zmniejszyć opóźnienie wnioskowania, ułatwiając skalowanie produktów AI.

Ponadto programiści nie muszą zmieniać swojego modelu, aby korzystać z silnika. Po załadowaniu może doładować modele PyTorch i TensorFlow, zdolne do pracy z wysoką wydajnością przy szerokim wsparciu sprzętowym.

Czy zastąpi Pythona?

Mojo jest nowy. Wygląda obiecująco. Tak więc dotarcie do docelowych odbiorców, takich jak naukowcy zajmujący się danymi lub języki programowania, zajmie trochę czasu. I tak, rozwiązuje konkretne problemy dla entuzjastów sztucznej inteligencji i osób uczących się. Istnieje jednak wiele podobnych rozwiązań, które poprawiają szybkość języka Python. Na przykład znajdziesz Jax, Codon i Julia — język zorientowany na analizę danych.

Tak więc mogą się zdarzyć dwie rzeczy. Po pierwsze, rośnie wykładniczo pod względem funkcji, a społeczność to przyjmuje. Innym rezultatem jest to, że staje się językiem programowania ad-hoc, który wykorzystuje biblioteki Pythona i Modular Interference Engine.

Czy Mojo zastąpi Pythona? Tylko czas może powiedzieć.

Następnie zapoznaj się z przydatnymi jednolinijkami języka Python, które upraszczają typowe zadania.