Подробное объяснение Modular: как отец LLVM создает будущий язык движка искусственного интеллекта?

Структура этой статьи

**1.Что такое компилятор? **

2. О Крисе Лэттнере, отце LLVM

  • Что такое XLA и MLIR *Что такое ЛЛВМ?
  • Что такое лязг *Отношения между Clang и LLVM

3.О модуле

  • Модульный — механизм искусственного интеллекта.
  • О ТПУ Google
  • О глубоком обучении и программировании
  • Каковы технические проблемы при создании двигателя?

4. О предпринимательстве, создании команды инженеров и будущем искусственного интеллекта

**1. Что такое компилятор? **

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

Основной рабочий процесс компилятора — исходный код → препроцессор → компилятор → объектный код → компоновщик → исполняемые программы (utables).

Еще один яркий пример:

*Учитель: Дети, сегодня мы учим сложение. *

бла-бла-бла……

*Дети: Учитель, мы научились. *

Учитель: Теперь вы можете понять, что 1+1=? Компилятор

2. Крис Лэттнер, отец LLVM

Прежде чем говорить о Modular, давайте сначала поговорим об опыте Криса Лэттнера. Он родился в Калифорнии в 1978 году и вырос в районе залива Сан-Франциско. Он начал программировать, когда был очень молод. Позже он получил степень бакалавра в области изучал информатику в Калифорнийском университете в Беркли и получил докторскую степень в Стэнфордском университете, специализируясь на оптимизации компиляторов и автоматическом распараллеливании.

Крис Латтнер руководил разработкой LLVM во время своей докторской диссертации. Благодаря LLVM он выиграл премию ACM Software Award 2012** (ACM Software Award)****. После этого Латтне был нанят в Apple и отвечал за многие важные проекты Apple, включая проектирование и разработку интерфейса компилятора Clang, языка программирования Swift (языка, пришедшего на смену Objective-C) и улучшение среды разработки Xcode. Язык Swift широко популярен благодаря своей простоте и производительности и используется разработчиками для разработки приложений на iOS, macOS и других платформах Apple.

После ухода из Apple Крис Лэттнер работал в таких компаниях, как Tesla и Google, продолжал публиковать исследовательские работы и участвовать в проектах с открытым исходным кодом в области языков программирования и технологий компиляторов.Он отвечал за руководство инфраструктурной командой Tensorflow. в Google., создал XLA и MLIR.

Здесь мы объясняем, что такое XLA и MLIR:

XLA (Accelerated Linear Algebra) — это компилятор линейной алгебры для конкретной предметной области, который может ускорить модели TensorFlow, потенциально не требуя каких-либо изменений в исходном коде. Это может **** улучшить скорость работы и улучшить использование памяти. ***

***MLIR (Многоуровневое промежуточное представление:Многоуровневое промежуточное представление) — это среда компилятора. Ее конструкция оптимизирует компилятор и в основном охватывает все общие части конструкции компилятора. облегчает разработчикам компиляторов. *

**Что еще более важно, что такое LLVM? **(Далее выдержка из краткой книги, см. ссылку на оригинальный текст)

**LLVM можно понимать как набор модульных, многократно используемых компиляторов и технологий цепочки инструментов. LLVM (на самом деле полное имя Low Level Virtue Machine, но оно никогда не использовалось в качестве виртуальной машины) Таким образом, следующий LLVM не является аббревиатурой; это полное имя проекта.

Затем мы продолжим: Традиционная архитектура компилятора выглядит так:

В разобранном виде он включает в себя:

  • Фронтенд: фронтенд (лексический анализ, синтаксический анализ, семантический анализ, генерация промежуточного кода)
  • Оптимизатор: оптимизатор (промежуточная оптимизация кода)
  • Бэкэнд: бэкэнд (генерирует машинный код)

Архитектура LLVM выглядит следующим образом

**Чтобы точнее описать это, LLVM внес в компилятор множество нововведений, таких как: **

  • Различные интерфейсные и серверные части используют единый промежуточный код Промежуточного представления LLVM (LLVM IR).
  • Если вам нужна поддержка нового языка программирования, вам нужно всего лишь реализовать новый интерфейс
  • Если вам нужна поддержка нового аппаратного устройства, вам нужно всего лишь реализовать новый серверный компонент
  • Фаза оптимизации является универсальной фазой. Она ориентирована на унифицированный LLVM IR. Независимо от того, поддерживает ли она новые языки программирования или новые аппаратные устройства, нет необходимости изменять фазу оптимизации.
  • Напротив, интерфейсная и серверная части GCC не слишком разделены, а интерфейсная и серверная части связаны вместе. Поэтому GCC становится особенно сложно поддерживать новый язык или новую целевую платформу.
  • LLVM теперь используется как общая инфраструктура для реализации различных статических и компилируемых во время выполнения языков (семейство GCC, Java, .NET, Python, Ruby, Scheme, Haskell, D и т. д.)

**Что такое Кланг? **

Подпроект проекта LLVM — интерфейс компилятора C/C++/Objective-C, основанный на архитектуре LLVM. По сравнению с GCC Clang имеет следующие преимущества:

  • Быстрая скорость компиляции: На некоторых платформах скорость компиляции Clang значительно выше, чем GCC (скорость компиляции OC в режиме отладки в 3 раза выше, чем GGC).
  • Малый объем памяти: объем памяти, занимаемый AST, сгенерированным Clang, составляет примерно одну пятую от объема памяти GCC.
  • Модульная конструкция: Clang использует модульную конструкцию на основе библиотеки, которую легко интегрировать с IDE и повторно использовать для других целей.
  • Диагностическая информация легко читаема: в процессе компиляции Clang создает и сохраняет большой объем подробных метаданных (метаданных), что полезно для отладки и составления отчетов об ошибках.
  • Дизайн понятен и прост, прост для понимания, легко расширяется и улучшается.

Взаимосвязь между Clang и LLVM

Для общей архитектуры LLVM в качестве внешнего интерфейса используется clang. LLVM в широком смысле относится ко всей архитектуре LLVM, а LLVM в общем узком смысле относится к серверной части LLVM (включая оптимизацию кода и генерацию целевого кода).

Исходный код (c/c++) проходит через clang -> промежуточный код (после серии оптимизаций для оптимизации используется Pass) -> машинный код

Ссылка: Цзяньшу, 12 августа 2018 г. — Простое объяснение, которое поможет вам понять, что такое LLVM

3. О модуле

Модульный механизм искусственного интеллекта

  • **Мысли К****Криса Латтнера о составителях данных и предпринимательстве как модульном подходе? **

К****хрис Латтнер:"Я создал Modular не с помощью молотка в поисках гвоздей и не с помощью инноваций ради инноваций. В настоящее время для таких компаний, как OpenAI, небольшому количеству сотрудников приходится тратить много времени на написание ядер CUDA вручную. Однако оптимизация для ИИ-компиляторов может быть использована для улучшения совместной работы программного обеспечения и расширения возможностей людей с разными навыками и знаниями"

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

*"*FasterTransformer, выпущенный NVIDIA, может значительно повысить производительность. Поэтому многие крупные модельные компании и разработчики используют FasterTransformer. Однако, если вы хотите внедрять инновации в области Transformer, FasterTransformer вас будет ограничивать."

  • **Другими словами, роль компилятора заключается в его обобщении.Как здесь понимать обобщение? **

К****хрис Латтнер: Если вы хотите получить те же или лучшие результаты, что и FasterTransformer, но используя другие общие архитектуры (в данном случае архитектуры, не относящиеся к Transformer), то с помощью компилятора вы можете получить лучшее от обоих. миров В результате такую же превосходную производительность можно получить и при исследовании.Другими словами, оптимизация на уровне компилятора может быть эквивалентна «движку искусственного интеллекта» и способствовать трансформации архитектуры LLM в будущем.

  • **Mojo в настоящее время очень популярен и совместим с экосистемой Python, но цель Modular — создать единый движок искусственного интеллекта. Итак, с вашей точки зрения, какие текущие проблемы необходимо решить в области исследований и разработок искусственного интеллекта? **

Крис Лэттнер: Если вернуться к периоду 2015, 2016 и 2017 годов, бурному развитию искусственного интеллекта, то технологии той эпохи в основном возглавляли TensorFlow и PyTorch. PyTorch появился немного позже TensorFlow. но в некоторых аспектах они оба похожи. **Однако люди, создающие и проектирующие системы TensorFlow и PyTorch, в основном имеют опыт работы в области искусственного интеллекта, дифференциальных уравнений и автоматического дифференцирования. Они не решили граничную проблему программного и аппаратного обеспечения. **

Поэтому необходим Keras* (Примечание: Keras — это библиотека искусственных нейронных сетей с открытым исходным кодом, написанная на Python. Ее можно использовать в качестве интерфейса прикладного программирования высокого уровня для Tensorflow, Microsoft-CNTK и Theano для выполнять модели глубокого обучения. Проектирование, отладка, оценка, применение и визуализация ) или nn.Module (Примечание: nn.Module * — это концепция, уникальная для PyTorch, а также класс, который будет часто использовал*)*.

Нижним слоем этих вещей на самом деле являются операторы.Как реализовать свертку, умножение матриц, алгоритм сокращения и поэлементную операцию? Вам необходимо использовать CUDA и Intel MKL (Intel Math Kernel Library), а затем продолжать развивать эти основы.

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

(Примечание: IP в производстве микросхем обычно также называют IP-ядром. IP-ядро относится к зрелой конструкции схемных модулей с независимыми функциями в кристалле. Эту конструкцию схемного модуля можно применять к другим конструкциям микросхем, которые содержат этот схемный модуль. проекта, тем самым снижая рабочую нагрузку на проектирование, сокращая цикл проектирования и повышая вероятность успеха проектирования микросхем.Продуманная конструкция этого схемного модуля воплощает в себе мудрость проектировщика и отражает права интеллектуальной собственности проектировщика.Поэтому в индустрии микросхем используются IP-ядра для Указывает на зрелую конструкцию этого модуля.IP-ядро также можно понимать как промежуточный компонент конструкции чипа)

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

(Примечание: поскольку разработка ядра часто специфична для аппаратных платформ, даже nvidia не является универсальной, не говоря уже о FPGA или DPU. Пользовательские операторы являются основным каналом расширения вычислительных возможностей программного обеспечения аппаратной платформы)

Вы также должны знать, что многие люди сейчас пишут ядро CUDA* (Примечание: ядро: название функции, выполняемой CUDA на графическом процессоре)*, но профиль навыков инженеров здесь полностью отличается от навыков, которые могут внедрять инновации. модельная архитектура. **В результате многие системы искусственного интеллекта сталкиваются с такой проблемой: они не могут найти технических специалистов, умеющих писать ядро. **

*(Примечание: *При использовании графического процессора для вычислений все процессы вычислений могут быть инкапсулированы в ядро графического процессора и выполняться на графическом процессоре последовательно. В целях универсальности используются традиционные библиотеки операторов. Конструкция очень проста, поэтому их много)

О ТПУ Google

Когда я работал в Google, я участвовал в проекте Google TPU. В то время перед командой TPU стояли следующие задачи: на рынке представлены тысячи различных ядер, как запустить новое оборудование? В то время многие коллеги также упоминали, можно ли для этого использовать компилятор. **Итак, вместо того, чтобы вручную писать тысячи ядер, переписывать все эти операторы и полностью создавать свою собственную экосистему, такую как Intel или NVIDIA, компилятор может быть более гибким, чем ручной, потому что компилятор может позволить нам делать это разными способами. и соответствие ядра также может значительно оптимизировать производительность. **

**Компиляторы могут добиться этого обобщенным способом, но если мы используем традиционное рукописное ядро, то в результате получится фиксированное расположение ядер, которое люди считают интересным, а не что-то новое, чего хотят исследователи. **Так родился XLA от Google (Объяснено выше: Ускоренная линейная алгебра: Ускоренная линейная алгебра). XLA может поддерживать крупномасштабные компьютеры уровня эксафлопс, но проблема возникает снова: XLA появился для поддержки TPU Google.

**Создать компилятор действительно сложно, и все еще существуют проблемы с масштабируемостью. В настоящее время для выполнения многих инженерных проектов по машинному обучению приходится нанимать инженеров-компиляторов, а инженеры-компиляторы, которые разбираются в машинном обучении и различных связанных с ним знаниях, еще более важны. достаточно. Кроме того, XLA не масштабируется и работает только с TPU. **

О глубоком обучении и программировании

Если мы оглянемся назад на историю развития NVIDIA CUDA и глубокого обучения, такую как рождение AlexNet и развитие глубокого обучения, многие люди полагают, что рождение AlexNet является результатом комбинации данных, ImageNet + вычислений и мощность графического процессора. **

(Примечание: в 2012 году Алекс Крижевский и Илья, ученики Джеффри Хинтона, одного из трёх гигантов глубокого обучения и обладателя премии Тьюринга, предложили AlexNet и в том году выиграли чемпионат со значительным преимуществом в ILSVRC, намного превзойдя третий Два. Этот результат привлек большое внимание научных кругов и промышленности, и компьютерное зрение постепенно вступило в эпоху, в которой доминирует глубокое обучение)

**Но многие люди забывают о важности «программируемости». **

Потому что именно CUDA позволила исследователям изобрести сверточные ядра, которых раньше не существовало, а TensorFlow в то время не существовало. **Фактически, именно сочетание данных, вычислений и программирования позволяет новым исследованиям запустить целую волну систем глубокого обучения. **

**Поэтому очень важно извлекать уроки из прошлых событий и истории. Итак, как сделать следующий шаг? Как нам перейти в следующую эру этих технологий, когда каждый сможет извлечь выгоду из удивительных алгоритмических инноваций и идей человечества? **Как получить выгоду от компилятора? Как вы можете использовать масштаб и универсальность компиляторов для решения новых задач? **Самое главное: какие преимущества дает возможность программирования? Это Модуль, над которым мы работаем — двигатель искусственного интеллекта. **

О будущем искусственного интеллекта

  • **Как вы видите будущее развития искусственного интеллекта? Как вы думаете, будет ли больше сотрудничества между командами разных профилей и направлений? Одна из ваших целей — облегчить использование компилятора неспециалистам в области компиляции? **

**Крис Лэттнер: **Люди удивительны, но никто не может уместить всё в своей голове. **Люди разных типов и специальностей, работая вместе, могут создать нечто большее, чем все остальные. Например Например, у меня есть некоторые способности , но я принципиально не могу вспомнить ни одного дифференциального уравнения, верно? Так что следующим изобретателем архитектуры LLM точно буду не я (смеется).

**Но если я подумаю об этом с системной точки зрения, если я смогу заставить этих людей внести свой вклад, сотрудничать и понять, как все это работает, произойдет прорыв. **Как продвигать изобретения? Как привлечь к сотрудничеству больше людей, которые понимают разные части проблемы? **Поэтому исследование Моджо и движка — это попытка устранить сложность проблемы. Потому что есть много уже построенных систем, которые просто агрегируются вместе. **

Решения здесь обычно основаны на решении проблемы, а не разрабатываются сверху вниз. И я думаю, что Modular предоставляет более простой стек, который может помочь уменьшить сложность всего стека. Если его не рефакторить, он все равно будет следовать фрагментированной и хаотичной истории* (фрагментация в области искусственного интеллекта)* Как только вы захотите измените его немного, произойдет сбой, производительность будет ужасной или он не будет работать.Эта ситуация возникает из-за фрагментации базового слоя.

  • **Как понимать компиляторы: являются ли компиляторы и языки средой человеческого сотрудничества или кроссовером? **

Крис Латтнер: Я создал Modular не для того, чтобы искать гвозди с молотком или для инноваций ради инноваций. В настоящее время в таких компаниях, как OpenAI, небольшому количеству сотрудников приходится тратить много времени на написание CUDA вручную. ядра. **Однако оптимизацию для компиляторов ИИ можно использовать для улучшения совместной работы программного обеспечения и расширения возможностей людей с разными навыками и знаниями. **

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

Первая цель — сделать этот процесс максимально упрощенным;

Вторая цель состоит в том, что если вы выбросите из головы много сложностей, то сможете освободить место для новых сложностей. Кроме того, благодаря абстракции вы можете воспользоваться преимуществами компилятора, поскольку компилятор уделяет бесконечное внимание деталям, а люди — нет;

**Более высокие уровни абстракции также могут дать нам множество других способностей. **Системы глубокого обучения и модульные технологии вывели вычисления на графический уровень. Как это объяснить? Здесь это означает, что как только вы освободитесь от сложных программных операторов, таких как циклы for, и станете более декларативным, это означает изменение модели вычислений. Многие люди еще этого не осознают, но я думаю, что это возможно. Поскольку существующая система легко может вызвать головную боль, многие функции, предоставляемые абстракцией, реализуют Pmap и Vmap (Примечание: эти две функции включают автоматическое деривирование и распараллеливание).

Совершенствование технологий произошло благодаря большому количеству хорошо структурированных и четко структурированных систем, большому количеству нового высокопроизводительного вычислительного оборудования и большому количеству сделанных прорывов.** Поэтому я очень надеюсь что Модульная может иметь более широкое применение и популярность, преодолевая сложность серии, это прекрасно. **

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

  • **Можете ли вы дать определение механизму искусственного интеллекта Modular, платформе искусственного интеллекта и компилятору искусственного интеллекта? **

Крис Латтнер: Большинство людей будут использовать такие инструменты, как PyTorch, при обучении больших моделей. В таком случае скоро будут представлены CUDA или Intel MKL. Я называю эти типы движков собирательно и упоминаю в первую очередь движок. относится к аппаратному интерфейсу, а Modular предоставляет новый движок, который может внедрять TensorFlow, PyTorch и др. Тогда пользователи могут управлять операциями и выполнять аппаратное программирование по-новому, основываясь на правильной абстракции. Вы можете создавать крутые реализации.

  • **Согласно вашему определению, модульная система находится между уровнем платформы и аппаратным уровнем. Тогда мы хотим знать петафлопс (количество операций с плавающей запятой, которые могут быть выполнены в секунду) модульной системы. на А100, но я обнаружил, что на сайте весь процессор, а графический процессор я не вижу. Итак, мой вопрос: все усердно работают над тем, чтобы ускорить работу графического процессора, так почему же вы хотите, чтобы сначала работал процессор? **

Крис Лэттнер: Думая об основных принципах, мы должны начинать снизу. Как вы определяете современные системы искусственного интеллекта? Многие люди каждый день говорят о графическом процессоре и спорят о графическом процессоре.Кажется, что все связано с графическим процессором. Однако искусственный интеллект на самом деле представляет собой крупномасштабную гетерогенную проблему параллельных вычислений. Поэтому традиционный искусственный интеллект начинается с загрузки данных, а графический процессор не загружает данные, поэтому вам необходимо выполнить ряд задач, таких как загрузка данных, предварительная обработка и работа в сети, а также большое количество матричных вычислений.

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

**С технической точки зрения, Modular хочет создать универсальный компилятор, потому что от универсального легко перейти к вертикальному, но мой опыт работы с XLA показывает, что невозможно начать с чего-то специализированного, а затем обобщить его. . **

В индустрии искусственного интеллекта масштаб обучения прямо пропорционален размеру исследовательской группы, а масштаб вывода прямо пропорционален масштабу продукта, пользовательской базе и т. д. **Поэтому большая часть выводов по-прежнему выполняется процессором. Поэтому мы решили начать с ЦП и сначала улучшить архитектуру. ЦП проще в использовании и он не будет недоступен. После того, как общая архитектура будет завершена, мы сможем продолжить расширение. В настоящее время мы также работаем над графическими процессорами, которые скоро будут запущены и со временем будут расширены до этих различных типов ускорителей. **

  • **Каковы технические проблемы при создании двигателя? **

Крис Латтнер: Члены нашей команды в основном знакомы со всеми компиляторами и связанными с ними организациями в отрасли. Например, я участвовал в исследованиях XLA и TensorFlow, а также есть члены из PyTorch, TVM, Intel OpenVINO. и Onyx Runtime.Проблема для всех заключается в том, что многие системы были разработаны пять-восемь лет назад. Искусственный интеллект в то время отличался от нынешнего: не было большой языковой модели.

**Проблема в том, что когда вы создаете систему, она начинается с набора кода, а затем становится все больше, больше, больше. И чем быстрее развивается система, тем сложнее внести фундаментальные изменения. Поэтому мы решили сделать все заново, с нуля. **

Если вы все же хотите иметь возможность писать ядро вручную, мы сначала создадим его прототип на C++, а затем постепенно введем mojo, а это значит, что вы сможете построить очень сложный автоматический компилятор слияния, который применяет все самые передовые технологии и к тому же превосходит самые передовые.Технологии.

Мы знаем, что пользователи ненавидят ограничения статической формы и отсутствие возможности программирования. Например, они не хотят быть привязаны только к Tensor* (Примечание: Tensor на самом деле представляет собой многомерный массив, предназначенный для создания матриц и векторов более высокой размерности. Многие большие модели имеют нерегулярные тензоры)*

  • ** Есть ли какие-либо цели при проектировании Modular? Или принцип? **

Крис Лэттнер: Я не знаю, есть ли у меня систематический набор принципов. Похоже, иметь набор принципов — это все равно что держать молоток и видеть, что все — гвозди. **Но многое из того, что нам нужно сделать, — это раскрыть потенциал оборудования и сделать его максимально простым в использовании. Таким образом, многие начальные условия связаны не столько с созданием новых вещей, сколько с решением сложных проблем при выполнении задач, поэтому это больше похоже на проектирование и проектирование. **

Если вы пообщаетесь с компанией LLM, легко обнаружить, что они потратили более 200 миллионов долларов США на графические процессоры и графические процессоры A100 с определенным объемом памяти.**Каждый хочет получить все возможности с помощью графического процессора (вычислительной мощности). С одной стороны, есть много людей, которые хотят проникнуть внутрь чипа и раскрыть его потенциал, но есть и много других, которые хотят большей мобильности, универсальности и абстракции. **

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

Другое дело, что мы заботимся о пользователях, потому что многие люди помешаны на технологиях, но забываем, что портреты людей, применяющих технологии, и тех, кто их создаёт, совершенно разные. Нам нужно понимать идеи разработчиков, которые используют инструменты.

  • **Модуль на базе Linux Mojo был выпущен для загрузки и использования в последние несколько дней. Скоро будут выпущены версии для MacOS и Windows. Какие еще наборы инструментов и компоненты будут доступны в ближайшие шесть-девять месяцев? **

**Крис Латтнер:**Mojo — все еще молодой язык, и мы будем постепенно работать над экосистемой, чтобы сделать его все более зрелым. Мы хотим создать большое сообщество вокруг Mojo, чтобы вместе создавать крутые вещи. Чтобы достичь этой цели, мы постепенно откроем исходный код Mojo, и все должны работать вместе, чтобы решить множество деталей, чтобы построить хорошо функционирующую экосистему, а не просто беспорядок.

Точно так же, как катастрофа Python 2-3, которую пережили все, никто не хочет вспоминать об этом* (Примечание: более 80% двух синтаксисов несовместимы, и из-за исторических проблем многие дистрибутивы Linux полагаются на py2 внизу, но пользователь случайно использовал py3, и pip install xxx привел к сбою системы). *

**В: Каковы ваши отношения с Гвидо (*****Примечание: голландский инженер Гвидо ван Россум, который изобрел язык Python) и Фондом Python? Как они связаны друг с другом? **

Крис Латтнер: Гвидо знал, что придет Моджо, и Гвидо провел много времени с нашей командой, и мы считаем, что нам очень повезло. Время от времени он появляется в сообществе Discord Mojo и задает мне сложные вопросы, и это здорово.

Мы считаем, что mojo является членом семейства Python. Конечно, есть много членов семейства Python, включая PyPy, Cython и т. д. Мы надеемся, что Python сможет продолжать развиваться и продолжать добавлять новый контент. Mojo также продолжает расти и добавлять новый контент.

Вернитесь на 30 или 40 лет назад, когда существовал язык C, а затем в 1983 году появилась новая вещь под названием C++. C++ на самом деле является языком C с классами (Примечание: в 1979 году Бьям Сгоуструп обратился в Bell Labs и начали превращать C в язык с классами.В 1983 году язык получил официальное название C++)

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

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

О предпринимательстве и построении инженерной команды

  • **Было много таких основателей, как вы, которые сделали долгую и потрясающую карьеру инженера. Внезапно это генеральный директор. Итак, что вы узнали о создании команд и обучении других? Особенно после того, как вы стали инженером, теперь вам также придется быть руководителем продукта и отвечать за финансирование.Что вы думаете? **

**Крис Латтнер:**В Modular у нас с моим соучредителем Тимом очень близкие отношения, и мы прекрасно дополняем друг друга. В процессе открытия бизнеса очень важно иметь с кем поговорить. То, что я испытываю сейчас, — это то, чего я никогда не испытывал, будучи руководителем инженерного отдела в Google и Apple.

**Когда мы основали эту компанию, мы верили в то, что нужно понимать боль. Представление интересов крупной компании отличается от представления компании-новичка. будет отвечать за работу в отсутствие большой компании.Общаться с разными компаниями(заказчиками) под аурой завода. Например, каковы ваши текущие болевые точки? **

Над чем Вы сейчас работаете? Каковы проблемы? Как мы можем помочь? Что вы думаете о том, что мы делаем? Задача, с которой мы сталкиваемся как Modular, заключается в том, что то, что мы хотим создать, на самом деле является очень сложной и очень абстрактной технической проблемой.

**Чтобы решить эти сложные проблемы, требуется нанять очень дорогих технических специалистов из всех крупных технологических компаний. Поэтому я должен собрать много средств, хорошо мотивировать сотрудников, платить им зарплату и сделать так, чтобы сотрудники чувствовали себя комфортно. **

Мы напрямую сталкиваемся с клиентами и видим боль клиентов в области искусственного интеллекта. Поэтому наша цель — объединить все эти вещи с помощью Modular.

Но проблема возникает снова: при разработке продуктов они также постоянно меняются, и потребности со временем будут меняться. Итак, команды, с которыми мы работали, оказались очень сложными, с множеством разных запутанных систем, разработанных для разных особых случаев.

  • **Опыт работы руководителем инженерного отдела: Обширный опыт создания команд и подбора инженеров. Есть ли у вас опыт или предложения по управлению проектами? **

Крис Лэттнер: Моя работа — помогать команде побеждать. Вы должны определить, что такое победа, дать людям ясное видение, ясную цель и поддерживать единство всех. **Когда у вас большая группа очень хороших специалистов. люди вокруг вас Когда каждый хочет стать героем, очень важна четкая цель. Когда потенциальная энергия накладывается, большой прогресс будет достигнут быстро, но когда она повернется вспять, импульс будет компенсирован. **

Внутри компании я часто лично участвую в построении начальной инфраструктуры, и важно показать команде, как она будет работать, и это часть нашей культуры. Для меня в команде инженеров самое главное — скорость внедрения: если подождать 24 часа или три недели, чтобы запустить CI, все замедлится.

При найме и дальнейшем развитии своих сотрудников вы также хотите определить, в чем они хороши, верно? Я действительно верю, что если у вас действительно хорошая, действительно увлеченная команда людей и вы объединяете их с чем-то, чем они действительно хотят заниматься, у них появляются сверхспособности.

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

**Мне очень нравится Тим, потому что он действительно хорош в тех областях, в которых я не очень хорош, и все учатся друг у друга. **

О ChatGPT и искусственном интеллекте

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

**Какая самая интересная неразгаданная загадка в области искусственного интеллекта? **

Крис Лэттнер: Я думаю, что искусственный интеллект сейчас находится в подростковом возрасте. Есть много умных людей с разными представлениями о том, что такое ИИ, верно? Некоторые люди думают, что все должно быть сквозными нейронными сетями, а программное обеспечение должно исчезнуть.Я думаю, что вопрос, на который нужно ответить, заключается в следующем: каков баланс между алгоритмами обучения и алгоритмами интеллектуального проектирования? Лично я не думаю, что это все одно или все другое: если вы хотите построить детектор кошек, то CNN действительно хороший способ сделать это. Если вы хотите написать загрузчик или операционную систему, реализация его с помощью цикла for работает нормально. **Но где со временем эти вещи будут постепенно сокращаться? Как мы можем заставить разработчиков приложений более последовательно думать об этих презентациях? **

**Мы делаем ставку на будущее, что ИИ в конечном итоге станет частью набора инструментов, определяющих, как люди думают о создании приложений, как методологии разработки программного обеспечения. Не только приложения для iPhone или аналогичные формы, но и весь облачный сервис, конвейер данных и, в конечном итоге, итеративное создание всего пользовательского продукта.Конечно, мы все еще находимся на пути исследований. **

*СпасибоEvolution of Technology Life** всем моим друзьям за их постоянную поддержку автора на протяжении многих лет, а также спасибо ChaosAI**

*Спасибо Дакаю, AsyncGreed, Чжан Бо, Мао Ли, Итану и Мью за их профессиональную помощь

Рекомендации:

1.

2. Справка: Что такое IP в производстве микросхем? -Xin Analects-Небо высокое, а облака темныеAndi863

3.Домашняя страница Криса Лэттнера (nondot.org)

4.nn.functional и nn.Module - Лян Юнь, 1991 г., Algorithm Food House, 10 июля 2020 г., 21:47

5. Ссылка: Цзяньшу, 12 августа 2018 г. — Простое объяснение, которое поможет вам понять, что такое LLVM

Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • комментарий
  • Репост
  • Поделиться
комментарий
0/400
Нет комментариев
  • Закрепить