Modular находит свой Mojo, расширенный набор Python со скоростью уровня C

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

Там многочисленные текущие проекты, направленные на ускорение Python, такие как Jax и совсем недавно компилятор Python под названием Codon. И это не говоря об альтернативных языках, ориентированных на науку о данных, таких как Julia.

Mojo удалось отличиться от других усилий по совершенствованию Python благодаря заявленному ускорению — в 35 000 раз быстрее, чем Python, при выполнении числовых алгоритмов, таких как Мандельброта, благодаря аппаратному ускорению — и родословной генерального директора Криса Латтнера.

Mojo сочетает в себе части Python, которые нравятся исследователям, с функциями системного программирования, требующими использования C, C++ и CUDA

Латтнер, ветеран Apple, Google и Tesla, совместно разработал цепочку инструментов компилятора LLVM, соосновал инфраструктуру компилятора MLIR и возглавил разработку языка программирования Swift. А его соучредитель Modular Тим Дэвис также обладает значительным опытом работы в качестве бывшего руководителя Google ML, где он курировал API-интерфейсы машинного обучения, компиляторы и инфраструктуру среды выполнения веб-гиганта.

На этой неделе стартап объявил о двух связанных проектах: Mojo, языке программирования, созданном на основе Python, который обещает производительность C; и предположительно портативный, производительный модульный механизм вывода, позволяющий запускать модели ИИ с меньшими затратами в производстве — логический вывод — это использование модели после ее обучения.

«Mojo сочетает в себе части Python, которые нравятся исследователям, с функции системного программирования, требующие использования C, C++ и CUDA», — объяснили в бизнесе.

«Mojo построен на основе технологий компиляции следующего поколения, которые открывают значительный прирост производительности при добавлении типов в ваши программы, позволяют вам определять абстракции с нулевой стоимостью, извлекают выгоду из безопасности памяти, подобной Rust, а также обеспечивают уникальную автонастройку и компиляцию. возможности метапрограммирования времени.»

Используя преимущества MLIR, код Mojo может получить доступ к различным аппаратным функциям, настроенным с помощью ИИ, таким как TensorCores и расширения AMX. В результате для определенных типов алгоритмов он намного быстрее, чем стандартный Python: 0,03 секунды при выполнении алгоритма Мандельброта на AWS r7iz.metal-16xl по сравнению с 1027 секундами (около 17 минут) для Python 3.10.9.

WIP

Mojo все еще находится в разработке, хотя есть блокнот Jupyter для опробования. Ожидается, что когда он будет завершен, он станет расширенным набором Python — экосистемой Python с набором инструментов для системного программирования. В таком виде он должен запускать любую программу Python. Но на данный момент, несмотря на то, что Mojo поддерживает основные функции Python, включая async/await, обработку ошибок и вариативность, для достижения полной совместимости еще предстоит проделать большую работу.

В заявлении, сделанном в четверг, специалист по данным Джереми Ховард, соучредитель Fast.ai, сказал: «Mojo может стать самым большим достижением в области языка программирования за последние десятилетия».

Mojo, объясняет Ховард, пытается решить раздвоенную реальность ИИ: в то время как модели ИИ разрабатываются на Python из-за богатства экосистемы, программисты на Python обычно заканчивают связывать свой код с модулями на более производительных языках, таких как C/C++ и Rust. . И этот «двуязычный» подход усложняет профилирование, отладку, изучение и развертывание приложений машинного обучения.

«Главная хитрость в Mojo заключается в том, что вы можете в любое время выбрать более быстрый «mode» в качестве разработчика, используя «fn» вместо «def» для создания своей функции», — объясняет Ховард. «В этом режиме вы должны точно указать тип каждой переменной, и в результате Mojo может создать оптимизированный машинный код для реализации вашей функции.

«Более того, если вы используете «структуру» вместо «класса», ваши атрибуты будут плотно упакованы в память, так что их можно будет использовать даже в структурах данных, не гоняясь за указателями. Это те функции, которые позволяют языкам вроде C чтобы быть такими быстрыми, и теперь они доступны и для программистов на Python — просто изучив немного нового синтаксиса.»

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

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

«Mojo еще не закончен, но то, что есть, уже умопомрачительно, и оно было создано очень небольшая команда за очень короткое время», — написал Ховард в Twitter. «Это показывает преимущества использования тщательно спроектированных основ, основанных на многолетнем опыте [Латтнера] с Clang, LLVM и Swift». ®