Світ технологій динамічно розвивається. Останньою новинкою є мова програмування Mojo. Вона має на меті прискорити виконання проєктів, розроблених на Python, надаючи розробникам швидкодію, порівнянну з C.
Python визнана однією з провідних мов програмування. Це універсальна і легка у вивченні мова, що відкриває новачкам шлях у світ програмування та інформатики.
Крім того, це потужний інструмент для досвідчених розробників, які можуть створювати за її допомогою складні програми. Проте, одним із значних недоліків Python є швидкість виконання. Саме тут на сцену виходить Mojo.
У цій статті ми розглянемо Mojo та її взаємодію з екосистемою Python. Розпочнімо.
Що таке Mojo?
Mojo – це сучасна мова програмування високого рівня. Вона має інтуїтивно зрозумілу структуру, що дозволяє розробникам швидко створювати застосунки. Крім того, вона націлена на зближення виробничих та дослідницьких процесів, даючи можливість користувачам використовувати метапрограмування та системне програмування з синтаксисом та екосистемою Python.
Вона багато запозичила з Rust та забезпечує високу швидкість виконання для екосистеми Python. Технічно Mojo є розширенням Python, що надає вам додаткові можливості.
Розробкою Mojo займається компанія Modular, що спеціалізується на інфраструктурі штучного інтелекту (ШІ). Це означає, що Mojo є мовою програмування для розробників ШІ. Разом з мовою програмування Mojo вони також представили Inference Engine, що дозволяє розробникам оптимізувати робочі процеси, масштабувати продукти ШІ та зменшувати затримку висновків (про це згодом).
За словами генерального директора Modular, Кріса Латтнера, Mojo у 35 000 разів швидша за Python. Він також є ініціатором швидкої розробки цієї мови програмування. Таке збільшення швидкості досягається завдяки використанню Mojo компілятора LLVM та інфраструктури компілятора MILR (Multi-Level Intermediate Representation).
Основні цілі мови програмування Mojo:
- Забезпечити повну сумісність з екосистемою Python.
- Надати розробникам можливість розгортати частини коду на прискорювачах.
- Забезпечити низькорівневий контроль для передбачуваної продуктивності.
- Усунути фрагментацію екосистеми.
Щоб спробувати Mojo, вам потрібно скористатись хмарним середовищем Mojo Playground. Після авторизації ви отримаєте робоче середовище!
Навіщо нам Mojo?
Основна мета Mojo – уніфікація інфраструктури машинного навчання (ML) та ШІ, надаючи єдину мову програмування для всього стека. Крім того, вона спрощує використання, виключаючи необхідність написання коду MLIR.
За даними Modular, Mojo запропонує масштабовану та інноваційну модель програмування. Завдяки цьому фахівці зі штучного інтелекту зможуть легко працювати з прискорювачами та гетерогенними системами.
Технічно, Mojo – це мова програмування з підтримкою метапрограмування під час компіляції. Вона також підтримує такі функції, як кешування під час компіляції, методи адаптивної компіляції та інші. Ці функції відсутні в інших мовах програмування.
Якщо ви хочете дізнатись більше про філософію Mojo, ознайомтесь з Modular Docs – Чому Mojo🔥
Особливості мови програмування Mojo
У цьому розділі ми розглянемо ключові особливості мови програмування Mojo.
#1. Повна сумісність з Python
Mojo прагне співпрацювати з екосистемою Python, а не конкурувати з нею. Це підтверджується тим, що Mojo використовує ті ж функції, бібліотеки та можливості, що й Python. Отже, ви можете використовувати будь-яку бібліотеку Python у Mojo.
Щоб імпортувати бібліотеку, потрібно скористатись таким кодом:
from PythonInterface import Python
Після цього ви можете використовувати `Python.import_module()` для імпорту будь-якої бібліотеки Python.
Наприклад, щоб імпортувати `numpy`, вам потрібно скористатись наступним рядком коду.
let np = Python.import_module("numpy")
У Python вам знадобилось би виконати `import numpy as np`
Після імпорту ви можете використовувати бібліотеку для створення масивів, виконання обчислень тощо.
array = np.array([1, 2, 3]) print(array)
Аналогічно, ви можете імпортувати `matplotlib.pyplot` або створити діаграму в Mojo.
Ось як це виглядає, коли я запускаю код в Mojo Playground.
Якщо ви хочете спробувати код, скопіюйте та вставте його знизу.
from PythonInterface import Python let np = Python.import_module("numpy") array = np.array([1, 2, 3, 4, 5]) print(array)
#2. MILR
MILR (Multi-Level Intermediate Representation) означає багаторівневе проміжне представлення. Mojo підтримує MILR. Це, у свою чергу, дозволяє розробникам використовувати повний набір нових розширених функцій, включаючи апаратні блоки ШІ, потоки та вектори.
MILR покращує продуктивність за рахунок паралелізму, роблячи Mojo швидшою за Python. Крім того, це дозволяє розробникам використовувати переваги багатоядерних процесорів.
#3. Перевірка прав власності та позичальника
Управління пам’яттю в Python є безпечним. Він використовує збирач сміття, тому програмісти повинні переконатися, що код не потрапляє в умови гонки.
Mojo, як і Rust, реалізує сувору модель перевірки прав власності та позичальника. Наразі вона реалізована частково. Ідея використання цієї моделі полягає в тому, щоб покращити паралелізм і забезпечити ефективне управління пам’яттю.
Модель власності також забезпечує потокобезпечний підхід, який ідеально підходить для забезпечення відмінної підтримки одночасного виконання. Таким чином, програми не стикаються з умовами гонки. Крім того, засіб перевірки позичальника гарантує, що змінні завжди перевіряються під час виконання.
#4. Нульова вартість абстракції
Mojo пропонує абстракції з нульовою вартістю, дозволяючи розробникам повністю контролювати зберігання даних. Програмісти можуть налаштовувати вбудоване розташування для структур.
#5. Автоналаштування
Mojo також пропонує автоматичне налаштування, яке забезпечує автоматичний вибір оптимальних значень параметрів залежно від цільового обладнання.
Автоматичне налаштування усуває необхідність вручну оптимізувати код під конкретне обладнання.
Швидкість: наскільки швидка мова Mojo?
Python — це мова програмування високого рівня, що орієнтована на простоту використання та обслуговування. На жаль, це робить її повільною у порівнянні з іншими мовами.
У тесті, проведеному компанією Modular, було виявлено, що Mojo є в 35 000 разів швидшою. Вони використовували алгоритм Мандельброта і запустили його на екземплярі AWS з процесором Intel Xeon. Вони протестували PYPY, SCALAR C++ і MOJO разом з Python. Результати були надзвичайно вражаючими, як ви можете побачити нижче.
Джерело: modular.com
Щоб дізнатися більше про швидкість Mojo, перегляньте цю публікацію в спільноті Julialang.
Modular Inference Engine – дешевий запуск моделей ШІ
Modular також розробляє Modular Inference Engine, що робить використання моделей ШІ у виробництві дешевшим. Mojo за замовчуванням підтримує Modular Inference Engine, що дозволяє командам спростити робочий процес, зменшити затримку висновків та легше масштабувати продукти ШІ.
Крім того, розробникам не потрібно змінювати модель для використання Engine. Після завантаження він може обробляти моделі PyTorch і TensorFlow з високою продуктивністю та широкою апаратною підтримкою.
Чи замінить це Python?
Mojo – це нова мова програмування. Вона виглядає багатообіцяючою, але потрібен час, щоб завоювати цільову аудиторію, таку як фахівці з обробки даних або програмісти. Так, вона вирішує деякі проблеми для ентузіастів та тих, хто вивчає ШІ. Проте існує багато інших рішень, що покращують швидкість Python. Наприклад, є Jax, Codon і Julia – мова, орієнтована на науку про дані.
Отже, можуть статися дві речі. По-перше, Mojo може експоненціально розвиватись і здобути популярність. Інший варіант – вона стане спеціалізованою мовою, що використовує бібліотеки Python і Modular Inference Engine.
Отже, чи замінить Mojo Python? Тільки час покаже.
Далі ознайомтеся з корисними однорядковими кодами Python для спрощення типових завдань.