Тим Дэвис, сооснователь и президент Modular – Интервью-серия

Тим Дэвис, сооснователь и президент Modular – Интервью-серия

Тим Дэвис – сооснователь и президент Modular, интегрированного набора инструментов, который упрощает вашу AI-инфраструктуру, чтобы ваша команда могла разрабатывать, развертывать и инновировать быстрее. Modular наиболее известен разработкой Mojo, нового языка программирования, который сочетает в себе лучшее из Python с системами и метапрограммированием, чтобы сократить разрыв между исследованиями и производством.

Повторный предприниматель и лидер продукта. Тим помогал создавать, основывать и масштабировать большую часть AI-инфраструктуры Google в Google Brain и Core Systems: от API (TensorFlow) и компиляторов (XLA и MLIR) до сред выполнения для серверов (CPU/GPU/TPU) и TF Lite (Mobile/Micro/Web), Android ML и NNAPI, инфраструктуры для больших моделей и OSS для миллиардов пользователей и устройств. Обожает бегать, создавать и масштабировать продукты, чтобы помочь людям и миру.

Когда вы впервые познакомились с программированием, и что вас привлекло в нем?

Когда я был ребенком, живя в Австралии, мой отец принес домой Commodore 64C, и игры зацепили меня – Boulder Dash, Maniac Mansion, Double Dragon – какое время, чтобы быть живым. Этот компьютер познакомил меня с языком BASIC, и моим первым настоящим знакомством с программированием были эксперименты с ним. В школе и университете я использовал более традиционные статические языки программирования для инженерных курсов, и со временем я даже пробовал Javascript и VBA, прежде чем остановиться на Python в качестве основного языка программирования для анализа данных и искусственного интеллекта. В моих первых стартапах я написал кучу кода, но сейчас, конечно, я использую Mojo и инструментарий, созданный вокруг него.

Вы работали в Google более 5 лет в должности старшего менеджера продукта и группового лидера продукта, где помогли масштабировать большую часть AI-инфраструктуры Google в Google Brain. Что вы узнали из этого опыта?

Люди создают технологии и продукты, которые меняют мир, и это преданная группа людей, объединенных общей целью, которая позволяет им представить их миру. Google – невероятная компания с удивительными людьми, и мне повезло встретиться и работать с многими самыми яркими умами AI, когда я присоединился к команде Brain. Самые важные уроки, которые я усвоил, – всегда сосредотачиваться на пользователе и постепенно раскрывать сложность, давать пользователям возможность рассказать свои уникальные истории миру, будь то исправление Большого Барьерного Рифа или помощь людям, таким как Джейсон, барабанщик, и привлекать и собирать разнообразную группу людей для достижения общей цели. В огромной компании очень умных и талантливых людей это гораздо сложнее, чем вы можете себе представить. Отзываясь о своем времени там, всегда запоминаются люди, с которыми ты работал на самом деле. Я всегда с благодарностью вспоминаю о том, что многие рисковали мной, и я искренне благодарен им за это, потому что именно эти риски побудили меня стать лучшим лидером и человеком, погрузиться вглубь и по-настоящему понять системы искусственного интеллекта. Это действительно заставило меня осознать глубокую силу, которую AI имеет для влияния на мир, и именно поэтому я нашел вдохновение и смелость уйти и стать сооснователем Modular.

Можете ли вы рассказать историю о происхождении Modular?

Крис и я встретились в Google и выпустили много влиятельных технологий, которые значительно повлияли на мир искусственного интеллекта сегодня. Однако мы чувствовали, что AI тормозится из-за чрезмерно сложной и фрагментированной инфраструктуры, с которой мы столкнулись, развертывая крупные рабочие нагрузки для миллиардов пользователей. Нас мотивировало желание ускорить влияние AI на мир, подняв индустрию на уровень программного обеспечения AI высокого качества, чтобы мы, как глобальное общество, могли оказать большее влияние на то, как мы живем. Нельзя не задуматься, сколько проблем может решить AI, сколько болезней вылечить, насколько мы можем стать более продуктивными как вид, чтобы продолжить наше существование для будущих поколений, увеличивая проникновение этой невероятной технологии.

Работая вместе в течение многих лет над масштабной критической AI-инфраструктурой, мы сами столкнулись с огромными проблемами разработчиков – “почему вещи не могут просто работать”? Чтобы мир принял и открыл огромный трансформационный потенциал AI, нам нужно программное обеспечение и инфраструктуру разработчика, которые масштабируются от исследований до производства и являются высокодоступными. Это позволит нам разблокировать следующую волну научных открытий, которые будут критически важны для AI, и является грандиозной инженерной задачей. Имея такую мотивацию, мы разработали внутреннюю уверенность в том, что мы можем создать новый подход к AI-инфраструктуре и дать разработчикам возможность использовать AI повсюду, чтобы сделать мир лучше. Мы также очень удачливы, что многие люди присоединились к нам в этом путешествии, и у нас есть лучшая команда AI-инфраструктуры в мире.

Можете ли вы рассказать о том, как вначале создавался язык программирования Mojo для вашей собственной команды?

Видение Modular заключается в возможности использования искусственного интеллекта любым лицом, в любом месте. Все, что мы делаем в Modular, сосредоточено на достижении этой цели, и мы идем на пути, обратном этой цели, в нашем строительстве продуктов и технологии. В этом свете наша скорость разработки имеет для нас первостепенное значение, и, имея такой большой опыт создания существующей инфраструктуры искусственного интеллекта для мира, нам нужно было тщательно обдумать, что позволит нашей команде двигаться быстрее. Мы пережили проблему двуязычия в области искусственного интеллекта, где исследователи работают на Python, а инженеры, занимающиеся производством и аппаратным обеспечением, работают на C++. Мы были вынуждены выбрать одну из этих дорог, или полностью пересмотреть подход. Мы выбрали второе. Была явная необходимость решить эту проблему, но существовало множество разных способов ее решения. Мы подошли к этому с нашей крепкой уверенностью в том, что нужно соответствовать экосистеме так, как она есть сегодня, и облегчить переход в будущее. Наша команда имеет опыт миграции программного обеспечения в большом масштабе, и мы не хотели повторения этого опыта. Мы также поняли, что на данный момент не существует языка, по нашему мнению, который может решить все вызовы, которые мы пытаемся решить для искусственного интеллекта, поэтому мы прибегли к первоначальному подходу, и родился Mojo.

Как Mojo обеспечивает плавное масштабирование и переносимость на различные типы аппаратного обеспечения?

Крис, я и наша команда в Google (многие из Modular) помогли создать MLIR много лет назад с целью помочь глобальному сообществу решать реальные проблемы, обеспечивая представление и выполнение моделей искусственного интеллекта на любом типе аппаратного обеспечения. MLIR – это новый тип инфраструктуры компилятора с открытым исходным кодом, который был принят на масштабном уровне и стремительно становится новым стандартом для создания компиляторов с использованием LLVM. Учитывая наш опыт в создании этой инфраструктуры, естественно, что мы активно используем ее в Modular, и это является основой нашего передового подхода к разработке новой инфраструктуры искусственного интеллекта для всего мира. Критически важно отметить, что хотя MLIR теперь быстро принимается, Mojo – это первый язык, который действительно использует мощь MLIR и предлагает разработчикам уникальный и доступный способ работы с ним. Это означает, что он подходит для разработчиков Python, которые пишут приложения, для инженеров производительности, которые развертывают высокопроизводительный код, и для инженеров аппаратного обеспечения, которые пишут очень низкоуровневый системный код для своего уникального аппаратного обеспечения.

В ссылках на Mojo утверждается, что это практически Python++, сочетающий доступность Python и высокую производительность C. Это грубое упрощение? Как бы вы описали это?

Mojo должен быть очень знаком любому программисту на Python, так как он использует синтаксис Python. Но есть несколько важных отличий, которые вы заметите при переносе простой программы на Python на Mojo, включая то, что он просто будет работать “из коробки”. Одна из наших основных целей для Mojo – предоставить надмножество Python – то есть сделать Mojo совместимым с существующими программами на Python – и использовать реализацию CPython для поддержки длинного экосистемы. Затем позволить вам постепенно расширять свой код и заменять неэффективные части на более низкоуровневые функции Mojo для явного управления памятью, добавления типов, использования автоматической настройки и других аспектов, чтобы получить производительность на уровне C или даже лучше! Мы считаем, что Mojo предоставляет вам лучшее из обоих миров, и вам не нужно писать и переписывать свои алгоритмы на нескольких языках. Мы ценим огромную цель Python++, и это будет многолетним предприятием, но мы нацелены сделать это реальностью и позволить нашему легендарному сообществу из более чем 140 тысяч разработчиков помочь нам вместе построить будущее.

На недавней презентации было показано, что Mojo в 35 000 раз быстрее Python, как была рассчитана эта скорость?

На самом деле, теперь это 68 000 раз! Но давайте признаем, что это всего лишь одна программа в стиле Мандельброта – вы можете прочитать серию из трех блог-постов, в которых описан процесс достижения этой скорости – здесь, здесь и здесь. Конечно, мы делаем это уже долгое время, и мы знаем, что игры в производительность не являются тем, что стимулирует принятие языка (хотя это и интересно!) – это скорость разработки, удобство языка, высококачественные инструменты и документация, а также сообщество, использующее инфраструктуру для изобретения и создания вариантов, о которых мы даже не могли мечтать. Мы являемся создателями инструментов, и нашей целью является дать людям возможность использовать наши инструменты, чтобы создавать удивительные продукты и решать важные проблемы. Если мы сосредоточимся на нашей главной цели, на самом деле мы хотим создать язык, который соответствует вашему текущему положению, а затем легко перевести в лучший мир. Mojo позволяет вам иметь высокопроизводительный, удобный, статически типизированный и переносимый язык, который без проблем интегрируется с вашим существующим кодом на Python – давая вам лучшее из обоих миров. Он позволяет вам раскрыть истинную мощь аппаратного обеспечения с многопоточностью и параллелизацией таким образом, как это невозможно сымпонировать на Python, и позволяет глобальному сообществу разработчиков использовать один язык, который работает на всех уровнях.

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

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

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

Следующее поколение системы искусственного интеллекта должно быть готово для производства и соответствовать потребностям разработчиков. Оно не должно требовать дорогостоящей переписывания, переархитектуризации или перебазирования пользовательского кода. Оно должно быть нативно многофреймворкным, многооблачным и многоразновидным в отношении аппаратного обеспечения. Оно должно объединять лучшую производительность и эффективность с лучшей удобностью использования. Это единственный способ уменьшить фрагментацию и разблокировать следующее поколение аппаратного обеспечения, данных и алгоритмических инноваций.

Modular недавно объявила о привлечении нового финансирования в размере 100 миллионов долларов, ведущими инвесторами которого стали General Catalyst и существующие инвесторы GV (Google Ventures), SV Angel, Greylock и Factory. Что следует ожидать дальше?

Этот новый капитал будет использоваться преимущественно для расширения нашей команды, найма лучших специалистов в области инфраструктуры искусственного интеллекта и продолжения удовлетворения огромного коммерческого спроса, с которым мы сталкиваемся по отношению к нашей платформе. Modverse, наше сообщество, состоящее из более чем 130 тысяч разработчиков и десятков предприятий, все ищут нашу инфраструктуру – поэтому мы хотим убедиться, что мы продолжаем масштабироваться и упорно работаем над ее развитием для них и поставляем ее им. Мы ставим перед собой невероятно высокие стандарты, и продукты, которые мы выпускаем, являются отражением того, кто мы есть как команда и как компания. Если вы знаете кого-то, кто мотивирован, кто любит границы программного и аппаратного обеспечения и кто хочет помочь искусственному интеллекту проникнуть в мир смысловым и положительным образом – отправьте их к нам.

Какова ваша видение будущего программирования?

Программирование должно быть навыком, который каждый в обществе может развить и использовать. Для многих “идея” программирования сразу вызывает представление о разработчике, который пишет сложный низкоуровневый код, требующий серьезной математики и логики – но это необязательно должно восприниматься таким образом. Технология всегда была отличным инструментом повышения производительности для общества, и сделав программирование более доступным и удобным, мы можем дать возможность большему числу людей его освоить. Дать людям возможность автоматизировать повторяющиеся процессы и упростить свою жизнь – это мощный способ вернуть людям больше времени.

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

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

Спасибо за интересное интервью, читатели, которые хотят узнать больше, могут посетить Modular.