Сфера разработки AI развивается с огромной скоростью. Появляются все более совершенные технологии, которые открывают новые горизонты для создания ML-моделей. Один из таких инструментов — фреймворк Mojo. Разбираемся вместе, что это за язык и правда ли он круче Python.
Mojo — новый язык для создания AI
Mojo — язык программирования, специально разработанный для разработки систем искусственного интеллекта. Доступ к нему предоставляется по open source лицензии Apache 2.0.
Язык стал доступен разработчикам в 2023 году. Создатели заявляли, что новый инструмент «как Python, только лучше». Действительно, при очень простом, схожем с «Питоном» синтаксисе Mojo обладает значительно большей производительностью: скорость работы программы может быть выше в 35 000 раз.
Mojo — продукт компании Modular, которая занимается развитием технологий машинного обучения. Ее основатели, Крис Латтнер и Тим Дэвис, познакомились во время работы в Google и вместе пришли к выводу, что развитие искусственного интеллекта сдерживается слишком сложной и разрозненной инфраструктурой. Их объединило желание ускорить развитие технологий AI, поднять уровень качества программного обеспечения для них. Поэтому они создали компанию Modular.
Латтнер и Дэвис собрали вокруг себя команду лучших AI-специалистов — инженеров, продуктовых менеджеров, дизайнеров, — чтобы «заново изобрести» и изменить взгляды на разработку искусственного интеллекта навсегда. В результате эта команда придумала несколько инструментов для создания ИИ, в том числе язык Mojo. В апреле 2024 года основные компоненты языка были выложены в открытый доступ, чтобы любой программист мог использовать их при разработке моделей.
Mojo и Python — в чем разница и какой язык лучше
Чтобы создать Mojo, разработчики взяли простоту и удобство Python и высокую производительность языка C. Такой «коктейль» позволил добиться впечатляющих результатов по скорости работы ИИ-моделей. При этом, чтобы писать на новом языке, достаточно хорошо знать Python и изучить документацию — языки практически полностью совместимы.
По сути, Mojo можно назвать Python++ или надстройкой на «Питоне». Но все же это отдельный, самодостаточный язык, и одно из основных его отличий от «Питона» состоит в том в том, что он использует компилятор для запуска кода.
Объясняем простыми словами: ни один из высокоуровневых языков программирования, к которым относятся и Mojo, и Python, не понимается компьютером «напрямую». Чтобы все заработало, нужен «переводчик». Они бывают двух типов — интерпретаторы и компиляторы.
- Интерпретатор читает и выполняет код построчно, запуская одну строку за другой. Такой «переводчик» использует Python.
- Компилятор обрабатывает весь код разом, переводит всю программу на машинный язык. Этим способом пользуется Mojo.
Оба варианта имеют свои области применения и преимущества. Например, у использования компилятора есть ряд плюсов:
- Он устраняет необходимость интерпретировать код во время выполнения, что делает компилируемые языки значительно быстрее интерпретируемых.
- Компилируемые программы обычно требуют меньше памяти и других ресурсов, поскольку код уже оптимизирован и переведен в машинный формат.
- Компилятор может обнаружить многие ошибки во время перевода программы в машинный язык, предотвращая их возникновение во время выполнения. Это дает надежность и стабильность коду.
- Также он выполняет различные оптимизации кода, такие как удаление ненужных фрагментов и оптимизация алгоритмов. Это может еще больше повысить производительность и эффективность программы.
Поэтому производительность Mojo действительно намного выше, чем у интерпретируемого Python. Но это не значит, что «Питон» плох. В целом, компилируемые языки лучше подходят для приложений, где важны производительность, надежность и эффективность использования ресурсов. Интерпретируемые языки лучше подходят для быстрого прототипирования, скриптинга и приложений, где гибкость и кросс-платформенность более актуальны.
В чем «фишка» Mojo
Несмотря на яркие заголовки, буквально кричащие о том, что Mojo — это «убийца» Python и лучший инструмент для создания ИИ-моделей, не все так просто. Как у любого инструмента, у нового языка программирования есть и достоинства, и недостатки.
Плюсы Mojo
- Язык имеет простой синтаксис, почти идентичный синтаксису Python. Это делает разработку моделей интуитивно понятной и эффективной.
- Mojo специально оптимизирован для общих операций ИИ, таких как тензорные вычисления и тренировка моделей.
- Mojo предлагает обширную библиотеку функций и модулей, предназначенных для распространенных задач при создании систем искусственного интеллекта.
- Mojo поддерживает различные аппаратные платформы, такие как центральный процессор, графический процессор и TPU — специально разработанные процессоры Google, которые ускоряют работу систем машинного обучения. Таким образом, язык обеспечивает максимальную гибкость при развертывании моделей.
Минусы Mojo
- Поскольку Mojo — относительно новый язык, он имеет ограниченное сообщество пользователей и меньшее количество доступных ресурсов по сравнению с более зрелыми языками. Поэтому, если вы столкнетесь с какой-то сложной, нетривиальной задачей, вам понадобится достаточно много времени, чтобы решить ее своими силами. Зато в случае успеха вы станете первопроходцем!
- Экосистема инструментов Mojo все еще развивается и может включать меньше сторонних библиотек и инструментов по сравнению с проверенными языками, например с Python.
- Чтобы установить Mojo, нужно скачать на компьютер и установить пакет Mojo SDK. Но в данный момент он недоступен напрямую для компьютеров с Windows. Работать с ним можно, только если у вас на устройстве установлена Ubuntu Linux или есть процессор Apple Silicon. Для работы в ОС Windows необходимо установить Windows Subsystem for Linux (WSL) и запустить Mojo через него.
- Пока что в языке много неизвестных ошибок, которые никем не описаны. Если в более старых языках практически невозможно столкнуться с ошибкой, которую ранее не видели другие разработчики, то в Mojo можно написать программу, которая в буквальном смысле сломает все.
Подводя итог, можно сказать, что Mojo предлагает множество преимуществ для разработчиков ИИ, но все еще находится в стадии развития и имеет ограничения. Если вы готовы писать на языке, который пока не получил поддержки большого сообщества опытных программистов, решать множество задач самостоятельно, буквально «изобретать велосипеды», чтобы все заработало, — Mojo может стать интересным опытом и крутым инструментом в ваших руках.
И никаким «убийцей» для привычного «Питона» Mojo не станет, в обозримом будущем точно. Python является универсальным языком и в отличие от Mojo может использоваться для самых разных целей, а не только для разработки AI-систем. Это значит, что даже если новый язык когда-нибудь сможет полностью заменить «Питон» в ML-разработке, то у того останется множество других сфер, где он будет максимально эффективен. Также Mojo предстоит еще долгое развитие, создатели будут дорабатывать его, исправлять ошибки.
Как начать работу с Mojo
Написать на Mojo свою первую программу просто: воспользуйтесь инструкцией от поставщика.
Для Linux и Mac
Вы можете установить MAX и пользоваться Mojo, поскольку MAX включает в себя Mojo. MAX — это комплекс инструментов, который упрощает создание систем искусственного интеллекта, чтобы вы могли быстрее разрабатывать AI-продукты и внедрять инновации.
Также вы можете установить Mojo отдельно. Mojo SDK доступен в виде стабильной или «ночной» сборки. Компания Modular старается выпускать стабильные сборки раз в месяц, а «ночные» — как можно чаще.
Для установки:
- Откройте терминал и установите командную строку Modular с помощью скрипта:
curl -s https://get.modular.com | sh -
- Создайте виртуальную среду. Поскольку Mojo взаимодействует с Python, важно определить версию Python и библиотеку пакетов, которую вы будете использовать. Чаще всего это venv или conda. Для основной части разработчиков производитель рекомендует использовать venv, а с conda лучше работать программистом, у которых уже есть опыт работы с ней. Для создания среды venv, которая входит в состав Python, введите:
python3 -m venv mojo-venv && source mojo-venv/bin/activate
- Установите Mojo SDK:
modular install mojo
- Установите переменные окружения, чтобы получить доступ к mojo CLI:
Для командной оболочки Bash
MOJO_PATH=$(modular config mojo.path) \ && BASHRC=$( [ -f "$HOME/.bash_profile" ] && echo "$HOME/.bash_profile" || echo "$HOME/.bashrc" ) \ && echo 'export MODULAR_HOME="'$HOME'/.modular"' >> "$BASHRC" \ && echo 'export PATH="'$MOJO_PATH'/bin:$PATH"' >> "$BASHRC" \ && source "$BASHRC"
Для командной оболочки ZSH
MOJO_PATH=$(modular config mojo.path) \ && echo 'export MODULAR_HOME="'$HOME'/.modular"' >> ~/.zshrc \ && echo 'export PATH="'$MOJO_PATH'/bin:$PATH"' >> ~/.zshrc \ && source ~/.zshrc
Для командной оболочки fish
set MOJO_PATH (modular config mojo.path) \ && set -Ux MODULAR_HOME $HOME/.modular \ && fish_add_path $MOJO_PATH/bin
Для работы на компьютере с ОС Windows сначала установите Windows Subsystem for Linux, а потом — Mojo по инструкции, описанной выше. И вы готовы написать свой первый код на новом языке программирования!
Чтобы сделать это, используйте Mojo REPL — этот инструмент позволяет писать код Mojo в командной строке. Запустить сеанс REPL можно, введя команду «mojo» в терминале и нажав Enter.
Чтобы классически «поздороваться с миром», вам нужно будет просто ввести в командную строку:
print(«Hello, world!»)
После этого дважды нажмите Enter — пустая строка необходима для обозначения конца выражения. Сразу после этого на экране появится запись «Hello, world!».
Что еще интересного есть в Mojo
В Mojo доступна автонастройка, благодаря которой для каждого параметра можно автоматически подобрать оптимальные значения. Так вы будете использовать все доступные ресурсы вашего оборудования.
Также компилятор Mojo основан на MLIR, а значит, дает разработчикам простор для использования векторов, потоков AI.
MLIR, или Multi-Level Intermediate Representation — подпроект более известного фреймворка LLVM для разработки компиляторов. Представьте себе MLIR как абстрактный «чертеж» программы, независимый от конкретного языка или архитектуры процессора. Это позволяет компиляторам выражать оптимизации и преобразования кода, не привязываясь к деталям исходного языка.
Использование MLIR в Mojo дает высокую производительность, ведь благодаря этому при запуске кода обработка ведется параллельно на нескольких ядрах. Python такого эффекта достичь не может, поскольку работает только с одним потоком.
Полезной особенностью Mojo является его совместимость с популярными фреймворками и инструментами для разработки ИИ, такими как TensorFlow. Это упрощает интеграцию моделей Mojo в существующие рабочие процессы.
Правда ли Mojo лучше Python в ML-разработке
Код, написанный на «Питоне», может выполняться немедленно или же в более медленном графовом режиме. Для задач машинного обучения больше подходит первый вариант, потому что такие задачи требуют скорости и высокой производительности. В этом Mojo легко обгоняет Python: код, написанный на новом языке, выполняется сразу, в режиме eager execution.
С помощью Python можно разработать практически что угодно, в том числе нейросетевую модель. Для этого существуют готовые библиотеки. Но есть нюанс: большинство из них используют не только Python, но и другие языки — C и C++. С одной стороны, это позволяет производить сложные операции, с другой — сильно снижает скорость работы.
Также, в отличие от Mojo, «Питон» является однопоточным и не может задействовать сразу несколько ядер. Из-за этого его производительность ниже, чем у Mojo, и ML-модели работают несколько медленнее.
При этом нельзя забывать, что Python — гораздо более зрелый язык с большим комьюнити разработчиков. Даже после официального релиза как open source инструмента Mojo все еще менее стабилен, может работать с ошибками — и никто не подскажет, как вам их исправить.
Поэтому однозначно сказать, что Mojo лучше Python, на данном этапе невозможно. Должно пройти немало времени, вероятно, несколько лет, прежде чем эти языки можно будет всерьез сравнивать. Но потенциал у Mojo достаточно впечатляющий, чтобы считать его достойным будущим конкурентом в сфере ML.
Подведем итог
Язык программирования Mojo — это новый инструмент, «заточенный» для разработки AI-моделей. Его создатели рассчитывают, что он приблизит будущее, в котором искусственный интеллект станет обыденностью. Для этого в Mojo есть все необходимое:
- простой и интуитивно понятный синтаксис, который легко освоить тем, кто уже знаком с «Питоном»;
- обширный набор инструментов для решения распространенных задач ИИ-разработки;
- поддержка различных аппаратных платформ для гибкости при развертывании моделей.
Но утверждать, что Python «уйдет на пенсию», слишком опрометчиво. В отличие от Mojo, он используется при решении гораздо более широкого спектра задач. И даже в области разработки ИИ Python все еще является более стабильным и надежным, чем едва вышедший из «песочницы» новичок.
Тем не менее попробовать Mojo уже сейчас стоит: у него есть много достоинств, которые позволят разрабатывать и обучать модели быстрее. Просто в процессе не забывайте об ограничениях и уязвимостях. Всю документацию для работы можно найти на сайте Modular — дерзайте, и у вас все получится!