Mojo — убийца Python

Mojo — убийца Python, ибо значительно быстрее.

Пламенный привет посетителям этой страницы, пришедшим из социальных сетей, да и всем остальным тоже!

В апреле 2021-го года наблюдал удивительное явление: обильный поток посетителей из 4-х социальных сетей. В связи с этим настоятельно рекомендую всем неоднократно и регулярно посещать сайт rtbsm.ru — там в общих чертах изложена Российская Теннисная Балльная Система Марии (Шараповой).

Приглашаю всех полюбоваться на Фото и Видео красавицы Марии — надеюсь, что Вы поделитесь адресом сайта rtbsm.ru с друзьями и знакомыми.

Главная проблема — известить Марию, чтобы она лично как можно скорее заявила на весь мир о РТБСМ.

Mojo — убийца Python, так как всегда во много раз быстрее, что устраняет главный недостаток языка Python и заставляет порой переходить на применение Mojo.

Когда не особо нужна скорость, проще использовать Python.

Обычно лично я использую Python совместно с Geany для отладки программ, а Mojo — для получения двоичных исполняемых файлов.

Ошибки в файле konus.mojo:

/mnt/c/MOJO/konus.mojo:25:1: error: TODO: expressions are not yet supported at the file scope level                                       print( ‘Число pi=’ ‘%.2f’ % pi, ‘(радиан)’)                                                                                               /mnt/c/MOJO/konus.mojo:25:32: error: ‘StringLiteral’ does not implement the ‘__mod__’ method                                              print( ‘Число pi=’ ‘%.2f’ % pi, ‘(радиан)’)

Привожу информацию со страницы https://habr.com/ru/companies/raft/articles/808517/ :

Mojo — убийца Python и будущее AI

MidavNibush
18 апреля 2024 г. в 16:51
Простой
5 мин
22 K

Блог компании Raft
Open source
Программирование
Машинное обучение
Искусственный интеллект
Обзор

AI технологии в последнее время на вершине хайпа, Вы и сами это знаете. В особенности популярные большие языковые модели, но и компьютерное зрение не остаётся в стороне.

Эти и другие области ML объединяет то, что большинство библиотек для машинного обучения написано на Python. Безусловно, этот факт приносит как свои преимущества, так и недостатки. Сначала взглянем на преимущества.

А из недостатков первое, что приходит на ум, — это всем известная скорость вычислений.

Меня зовут Вадим, я работаю Data Scientist в компании RAFT.

И сегодня мы с Вами заглянем в новенький фреймворк для AI Mojo, который по описанию производителей сочетает в себе удобство использования и производительность, а также включает в себя возможность работы над моделями искусственного
интеллекта. Погнали!

Что это такое?

Mojo — специализированный язык программирования, ориентированный на разработку в сфере AI. Он был представлен 2 мая 2023 года компанией Modular. В этом проекте участвуют большое количество гуру специалистов AI, главные из них:

Крис Лэттнер - сооснователь и директор Modular, в прошлом — один из ключевых разработчиков языка Swift, компилятора Clang, а также технологий LLVM и MLIR. Также работал в  Google, Tesla и Apple.

Тим Дэвис - сооснователь и руководитель продукта, внёс большой вклад в инфраструктуру искусственного интеллекта Google в Google Brain и Core Systems.


Рисунок 1 — Крис Лэттнер (слева) и Тим Дэвис (справа)

По заявлениям авторов Mojo сочетает в себе удобство использования Python с производительностью C, открывая беспрецедентную программируемость аппаратного обеспечения и расширяемость моделей ИИ.

На данный момент Mojo поддерживается на Ubuntu Linux и macOS, но вскоре обещают добавить поддержку и на Windows. Более подробно с требованиями Вы можете ознакомиться на официальном сайте Mojo. — https://docs.modular.com/mojo/manual/get-started/#system-requirements

Ниже я собрал для Вас наиболее интересные примеры, написанные с использованием языка Mojo.

Примеры проектов на Mojo

  1. Инференс Llama2 на Mojo  () — проект, в котором автор переписал инференс Llama2 с Python на Mojo, при этом производительность повысилась аж в 250 раз. Ниже можно увидеть средний показатель token per seconds.


Рисунок 2 — график Avg. token per second

  1. Фреймворк для ML  - проект, который написан с использованием библиотеки Infermo (также написана на чистом Mojo) и представляет необходимый функционал для обучения своих моделей. В ней присутствуют различные слои, функции активаций, прямой и обратные проходы сети и другое.
  2. HTTP-фреймворк Lightbug- это та самая база необходимая для разработки веб-сервисов, работы с  маршрутизацией и  HTML-страницами. Фреймворк использует преимущества Mojo ,такие как  статическая типизация и буст производительности.
  3. Простая реализация Stable Diffusion на Mojo - проект, который реализует маленькую версию Stable Diffusuion. Как утверждает автор, проект на 100% реализован на Mojo: каждый компонент модели был реализован с нуля, от целых чисел до матричных умножений и сверток, существующих в PyTorch.

Основное преимущество в том, что генерация занимает гораздо меньше времени, чем стандартный SD, написанный на Python. Текущее решение является супер-базовым из-за этого результаты генераций получаются достаточно сырыми. Вы можете оценить их ниже.


Рисунок 3 — примеры генерации изображений SD на Mojo

  1. Симуляция квантовых вычислений  - проект, который предоставляет простой и понятный интерфейс для моделирования операций в квантовой системе с использованием параллельных вычислений.
    Кроме Mojo интерес представляют другие новые языки, такие как Quill и Cirq , которые также набирают обороты в области квантовых вычислений, упрощая реализацию квантовых схем и моделирования.

А что всё-таки нового?

Давайте посмотрим что же все-таки принципиально нового внутри Mojo, и какие механизмы под капотом позволяют так сильно разгонять вычислительные процессы.

1) Производительность. Mojo использует MLIR (Multi-Level Intermediate Representation), позволяя разработчикам использовать преимущества векторизации, многопоточности и аппаратного обеспечения.


Рисунок 4 — выполнение процессов на Python и Mojo

Высокая производительность, которая превосходит Python аж в 68000 раз.

Производительность измерена на алгоритме построения множества Мандельброта — https://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%BE_%D0%9C%D0%B0%D0%BD%D0%B4%D0%B5%D0%BB%D1%8C%D0%B1%D1%80%D0%BE%D1%82%D0%B0

Рисунок 5- сравнение производительности на Python и Mojo
Рисунок 5- сравнение производительности на Python и Mojo

2) Расширяемость. С помощью Mojo можно расширять свои модели с помощью предобработки и постобработки, также Вы можете заменять какие-либо операции пользовательскими, переписав необходимый функционал.

3) Интеграция Mojo с Python. Есть возможность писать код на Python и интегрировать его с Mojo, также можно использовать базовые библиотеки, такие как Numpy и Matplotlib. Не требуется подключение CUDA и C++.

4) Open Source Mojo. С недавних пор этот проект является открытым и находится под лицензией Apache 2.0.  О том, как можно внести свой вклад, можно почитать тут.

Теперь давайте погрузимся немного в синтаксис языка и узнаем, чем он может нас удивить.

Немного о синтаксисе языка

Давайте немного окунемся в особенности синтаксиса языка.

Mojo поддерживает только несколько типов данных: Int, Float, String, Bool, Uint. Также некоторые вещи Mojo перенял из Python: комментарии, циклы, условия.

  • Переменные (https://docs.modular.com/mojo/manual/variables) в Mojo делятся на:

1) изменяемые с помощью ключевого слова var

2) неизменяемые с помощью ключевого слова let

3) выражения именованных параметров, задаются с помощью ключевого слова alias

  • Функции  (https://docs.modular.com/mojo/manual/functions) могут быть определены:

1) fn — обеспечивает проверку типов и безопаснее для поведения памяти (Rust style);

2) def -  не допускает объявления типов и имеет динамическое поведение (Python стиль).

Интеграция с Python

Вы можете использовать, как  стандартные библиотеки Python, так и Ваши локальные модули для разработки различных приложений с Mojo. Об этом можно почитать здесь (https://docs.modular.com/mojo/manual/python/).

Существуют некоторые ограничения совместимости Mojo с Python на момент выхода статьи:

  1. импортировать и использовать модули, написанные на Mojo в Python не представляется возможным;
  2. нельзя импортировать отдельные компоненты (классы, функции) из определенного пакета. Необходимо импортировать весь модуль Python, а затем получить доступ к компонентам через имя модуля;
  3. пока нет поддержки кода верхнего уровня, поэтому вызов должен находиться внутри другого метода.
  4. В Mojo исключения имеют очень ограниченное  использование из соображений производительности — https://docs.modular.com/mojo/roadmap.html#the-standard-library-has-limited-exceptions-use

Примечание:

Mojo загружает интерпретатор Python и его модули во время выполнения, поэтому, где бы Вы ни запускали программу Mojo, она должна иметь доступ к совместимому Python интерпретатору и находить любые импортированные модули Python.

Заключение

В этой статья я описал только верхушку айсберга Mojo. Если следить за новостями проекта, то можно заметить, что он постоянно развивается, каждую неделю появляются новые статьи и проекты.

А что думаете насчёт него Вы, заменит ли он Python и ближайшем будущем или нет?

P.S. авторы языка решили покреативить и сделали так, что файлы языка можно хранить в 2-х вариантах: *.mojo  и * .

Пишите в комментариях!

Полезные ссылки

[1] Официальный сайт Mojo: Modular: Accelerating the Pace of AI — https://www.modular.com/

[2] Официальная документация Mojo: Modular Docs — https://docs.modular.com/

[3] Хороший репозиторий для изучения Mojo: rd4com/mojo-learning: Learn some mojo ! (github.com) — https://github.com/rd4com/mojo-learning/tree/main?tab=readme-ov-file

[4] Хороший репозиторий с различными проектами Mojo: mojicians/awesome-mojo: A curated list of awesome Mojo frameworks, libraries, software and resources (github.com) — https://github.com/mojicians/awesome-mojo

[5] Раннее демо Mojo: Product Launch 2023 Keynote (youtube.com) — https://www.youtube.com/watch?v=-3Kf2ZZU-dg&t=1545s

[6] Playground Mojo: Modular Docs — https://docs.modular.com/mojo/playground

[7] Статья о том, как измеряли производительность Mojo на алгоритме построения множества Мандельброта: Modular: Mojo — A journey to 68,000x speedup over Python — Part 3 — https://www.modular.com/blog/mojo-a-journey-to-68-000x-speedup-over-python-part-3

[8] Хороший Туториал об основах Mojo: Mojo Programming Language – Full Course for Beginners — YouTube (https://www.youtube.com/watch?v=5Sm9IVMet9c&t=6368s)

Создал полезную программу konus.py для вычисления параметров ствола и бревна (объём, вес, цена, …), хочу опубликовать исполняемый файл. Но программу konus.mojo не удаётся скомпилировать, так как MOJO не полностью поддерживает синтаксис функции print(). У меня 2 вопроса:

1. Когда MOJO будет полностью поддерживать синтаксис функции print(), чтобы не приходилось вписывать var и т. д.?

Чтобы можно было print( ‘Диаметр D=’ ‘%.1f’ % D, ‘(дм.)’)

2. Когда MOJO будет доступен в Windows 10 и 11 без необходимости использования WSL?

Сделал перевод:

I created a useful konus.py program for calculating the parameters of the trunk and log (volume, weight, price,…), I want to publish an executable file. But konus.mojo cannot be compiled because MOJO does not fully support the syntax of the print () function. I have 2 questions:

1. When will MOJO fully support the syntax of the print () function so that you do not have to enter var, etc.?

To allow print (‘Diameter D =’% .1f ‘% D,’ (dm) ‘)

2. When will MOJO be available on Windows 10 and 11 without the need for WSL?

и отправил в GitHub — жду ответы.

Смотри ответы на https://github.com/modularml/mojo/discussions/539

Похоже, что можно обойтись введением модуля Python, чтобы не возиться с переделкой текста программы. Попробую завтра утром.

Функция печати в формате Python не поддерживается в Mojo #539 - https://github.com/modularml/mojo/discussions/539

Получается, что не Mojo — убийца Python, а Python - убийца Mojo, так как программы Python делают Mojo неработоспособным! Разработчики Mojo не стали возиться с отладкой синтаксиса функции print(), посчитав это несущественной мелочью и создав затруднения многим тысячам программистов, пытающихся переделать программы Python в программы Mojo.

Давайте считать эти затруднения проверкой профессионализма программистов.

2-я проверка такова:

————— Смена неизвестного пароля user1 ———————

Сделал запрос «wsl sudo password»

Unable to change the root password in Windows 10 WSL
askubuntu.com›unable-to-change-the-root-password-in-windows-10-wsl
There is a simpler method.

Open cmd.exe
Type wsl -u root
Type passwd root
and change the password
Type exit
Type wsl
Type sudo echo hi
to confirm the new password works.
=================================================

!…

Приглашаю всех высказываться в Комментариях. Критику и обмен опытом одобряю и приветствую. В особо хороших комментариях сохраняю ссылку на сайт автора!

И не забывайте, пожалуйста, нажимать на кнопки социальных сетей, которые расположены под текстом каждой страницы сайта.
Mojo - убийца PythonПродолжение тут…

Deviz_14

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Проверка комментариев включена. Прежде чем Ваши комментарии будут опубликованы пройдет какое-то время.