Создан язык программирования для ИИ, который «в 68 000 раз быстрее Python»
Язык программирования Mojo, основанный на Python, устраняет проблемы с производительностью и развертыванием проектов. Он предназначен для создания приложений в области искусственного интеллекта и машинного обучения. Доступ к платформе предоставляется по условиям лицензии Apache 2.0.
Открытие исходного кода
Компания Modular выложила в открытый доступ основные компоненты Mojo, языка программирования, предназначенного для написания программ для искусственного интеллекта (ИИ).
Компоненты Mojo составляют так называемую стандартную библиотеку языка. Это часть языка программирования, которая включает в себя основные элементы синтаксиса и другие важные функции. Стандартная библиотека Mojo включает в себя функции для таких задач, как оптимизация гиперпараметров ИИ - параметров, которые определяют, как нейронная сеть обрабатывает данные.
Язык Mojo позиционируется как более продвинутая альтернатива Python, с которым практически полностью совместим. При этом Mojo демонстрирует гораздо более высокую производительность, аналогичную C и C++. Утверждается, что программа, написанная на Mojo, может работать до 68 тыс. раз быстрее, чем если бы она была реализована с использованием Python. В результате, значительно повышается эффективность приложений основанных на ИИ.
Modular использует Mojo для работы коммерческой платформы MAX на основе ИИ, которую она представила в конце 2023 г. Платформа включает в себя инструменты, облегчающие выполнение таких задач, как запуск приложений ИИ в средах Kubernetes. В начале апреля 2024 г. компания сообщила, что планирует сделать некоторые компоненты MAX доступными под лицензией с открытым исходным кодом. В связи с этим Modular представила новую версию платформы с несколькими дополнительными функциями. По словам представителей Modular, одно из усовершенствований облегчит смешивание кода на Mojo и Python в одном проекте ИИ. Кроме того, компания добавила улучшения производительности, призванные ускорить вычисление ИИ.
Язык Mojo является более прагматичным, чем Swift. В то время как Swift был совершенно новым языком, содержащим всевозможные интересные функции, основанные на последних исследованиях в области дизайна языков программирования, Mojo по своей сути является просто Python. Это кажется разумным не только потому, что Python уже хорошо понятен миллионам программистов, но и потому, что после десятилетий использования его возможности и ограничения теперь хорошо изучены.
Компания Modular получила финансирование в размере $130 млн от фонда GV Alphabet и других инвесторов. Фирма анонсировала Mojo в мае 2023 г., а в августе того же года сделала этот язык программирования общедоступным. К апрелю 2024 г. пользовательская база Mojo насчитывает более 180 тыс. разработчиков и 55 тыс. организаций по всему миру.
Проблемы с производительностью
Существуют также неизбежные проблемы с производительностью, даже если для библиотеки используется более быстрый язык. Одной из основных проблем на 2024 г. является отсутствие «слияния», то есть вызов множества скомпилированных функций подряд приводит к большим накладным расходам. Поскольку данные преобразуются из формата Python в другой и обратно, то за многократное переключение с Python на C приходиться платить. Поэтому вместо этого приходится писать специальные «сведенные» версии обычных комбинаций функций и вызывать эти «сведенные» версии из Python. Это означает, что программистам придется реализовывать и запоминать гораздо больше библиотечных функций.
Разработчикам также приходится иметь дело с отсутствием эффективной параллельной обработки в Python. На апрель 2024 г. у всех программистов есть компьютеры с большим количеством ядер, но Python обычно использует только одно за раз. Есть несколько неуклюжих способов написания параллельного кода, который использует более одного ядра, но они либо должны работать с совершенно отдельной памятью, либо им приходится обращаться к общей памяти по очереди.
Такие библиотеки, как PyTorch, разрабатывают все более изощренные способы решения этих проблем с производительностью, а недавно выпущенный PyTorch 2 даже включает функцию compile(), которая использует сложную бэкенд компиляцию для создания высокопроизводительной реализации кода Python. Однако такая функциональность не может творить чудеса: существуют фундаментальные ограничения на то, что возможно с Python, в зависимости от того, как устроен сам язык.
Особенности Mojo
Ключевой трюк в Mojo заключается в том, что разработчик может в любое время перейти в более быстрый «режим», используя «fn» вместо «def» для создания своей функции. В этом режиме программисты должны точно объявить тип каждой переменной, и в результате Mojo сможет создать оптимизированный машинный код для реализации функции. Более того, если разработчики используют «struct» вместо «class», их атрибуты будут плотно упакованы в память, так что их можно будет использовать даже в структурах данных, не гоняясь за указателями. Это те функции, которые позволяют таким языкам, как C, быть такими быстрыми, и теперь они доступны и для программистов Python — просто изучив немного нового синтаксиса.
Компоненты Mojo формируют так называемую стандартную библиотеку языка программирования. Это набор модулей, классов, объектов, констант, глобальных переменных, шаблонов, макросов, функций и процедур, доступных для вызова из любой программы, написанной на этом языке. Стандартная библиотека включает функции для таких задач, как оптимизация гиперпараметров ИИ - настроек, которые определяют, как нейронная сеть обрабатывает данные.
Разработчики Modular публикуют не только код, но и историю фиксации стандартной библиотеки. Создатели Mojo стремятся к прозрачности и дают людям возможность увидеть, как функции развивались с течением времени, что дает дополнительный контекст для разработки стандартных функций библиотеки.
Лицензия Apache
Лицензия Apache 2.0 содержит положение о предоставлении патента, которое обеспечивает правовую защиту пользователей и разработчиков программного обеспечения (ПО). Apache 2.0 на начало апреля 2024 г. широко используемая и проверенная лицензия, которая знакома многим программистам и компаниям в различных отраслях.
Компания Modular предполагает, чтобы разработчики могли использовать Mojo, не требуя от них подтверждения Modular или Mojo и давая понять, что его можно смешивать с кодом GPL2. Поэтому компания Modular включает исключения LLVM, которые были специально разработаны для решения этих проблем.