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
- Инференс Llama2 на Mojo () — проект, в котором автор переписал инференс Llama2 с Python на Mojo, при этом производительность повысилась аж в 250 раз. Ниже можно увидеть средний показатель token per seconds.
Рисунок 2 — график Avg. token per second
- Фреймворк для ML - проект, который написан с использованием библиотеки Infermo (также написана на чистом Mojo) и представляет необходимый функционал для обучения своих моделей. В ней присутствуют различные слои, функции активаций, прямой и обратные проходы сети и другое.
- HTTP-фреймворк Lightbug- это та самая база необходимая для разработки веб-сервисов, работы с маршрутизацией и HTML-страницами. Фреймворк использует преимущества Mojo ,такие как статическая типизация и буст производительности.
- Простая реализация Stable Diffusion на Mojo - проект, который реализует маленькую версию Stable Diffusuion. Как утверждает автор, проект на 100% реализован на Mojo: каждый компонент модели был реализован с нуля, от целых чисел до матричных умножений и сверток, существующих в PyTorch.
Основное преимущество в том, что генерация занимает гораздо меньше времени, чем стандартный SD, написанный на Python. Текущее решение является супер-базовым из-за этого результаты генераций получаются достаточно сырыми. Вы можете оценить их ниже.
Рисунок 3 — примеры генерации изображений SD на Mojo
- Симуляция квантовых вычислений - проект, который предоставляет простой и понятный интерфейс для моделирования операций в квантовой системе с использованием параллельных вычислений.
Кроме 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 и Mojo2) Расширяемость. С помощью 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 на момент выхода статьи:
- импортировать и использовать модули, написанные на Mojo в Python не представляется возможным;
- нельзя импортировать отдельные компоненты (классы, функции) из определенного пакета. Необходимо импортировать весь модуль Python, а затем получить доступ к компонентам через имя модуля;
- пока нет поддержки кода верхнего уровня, поэтому вызов должен находиться внутри другого метода.
- В 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.
=================================================
!…
Приглашаю всех высказываться в Комментариях. Критику и обмен опытом одобряю и приветствую. В особо хороших комментариях сохраняю ссылку на сайт автора!
И не забывайте, пожалуйста, нажимать на кнопки социальных сетей, которые расположены под текстом каждой страницы сайта.
Продолжение тут…