Промышленные записки

Отличное оборудование

Как ИИ может помочь возродить добродетельный цикл закона Мура

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

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

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

Больше не должно быть проверки «чистоты» для оборудования AI, которое теперь может включать дифференцируемое оборудование.

Будем надеяться, что программное и аппаратное обеспечение снова будут развиваться параллельно, пройдя благотворный цикл, как это было во времена, когда закон Мура был в полном разгаре.

Агония аппаратных архитекторов искусственного интеллекта

Среди множества претендентов на GPU на рынке искусственного интеллекта Tesla представила суперкомпьютер Dojo. Dojo, кажется, является эталоном в области создания сетей, интеграции и масштабируемости. С другой стороны, чип D1, строительный блок Dojo, вряд ли можно назвать архитектурным прорывом. Мы можем сгруппировать претендентов на GPU в два лагеря: Many-Core и Many-MAC. D1, являющийся примером лагеря многоядерных процессоров, представляет собой «сеть» из многих ядер ЦП. С другой стороны, Tesla FSD или Google TPU, олицетворяющие лагерь Many-MAC, включают небольшое количество крупных ускорителей MM, каждый из которых объединяет множество единиц Multiply-Accumulation (MAC) в «сетку». Как мы видим, спор об архитектуре ИИ ведется между сетками и графическим процессором.

Под давлением стремительных усилий, необходимых для создания чипа, архитекторам аппаратного обеспечения ИИ должно быть очень сложно следить за освещением в СМИ тестов и конференций. Аппаратное обеспечение искусственного интеллекта, разработанное для замены графического процессора, часто с трудом справляется с тестами и горячими моделями NN, по иронии судьбы хорошо работающими на «старомодном» графическом процессоре. Как показано на диаграмме ниже, многоядерный процессор и графический процессор существенно различаются в обмене данными. Первый передает данные через соединительную сетку, а второй передает данные через иерархию памяти. Эта разница не имеет ничего общего с ИИ. Еще неизвестно, сможет ли многоядерный процессор, такой как чип D1, в конечном итоге превзойти графический процессор. Я расскажу о Many-MAC позже.

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

Наследие HPC

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

Взлет и падение Vector Super

В течение 1970-х и в 1990-е годы Vector Super, разработанный для ускорения программ высокопроизводительных вычислений за счет развертывания циклов параллельных данных в векторах, доминировал на рынке высокопроизводительных вычислений. В то время суперкомпьютер по умолчанию был векторным суперкомпьютером.

В 1990-х годах, когда в полную силу вступил закон Мура, стало возможным построить суперкомпьютер, объединив множество стандартных процессоров в сетку или подобную топологию. Эта тенденция привела к появлению распределенного суперпользователя, который в сообществе высокопроизводительных вычислений подозрительно назвал Атака микропроцессоров-убийц, где Micro означало микропроцессор. Это мнение возникло из-за того, что микропроцессор был CPU-on-a-Chip, когда CPU обычно представлял собой систему, состоящую из дискретных компонентов. В конце концов, распределенный суперкомпьютер заменил Vector Super и стал сегодня синонимом суперкомпьютера.

Возвращение Vector Super в GPGPU

В начале 2000-х закон Мура показал признаки старения, которые остановили гонку за тактовую частоту ЦП, являющуюся основным источником производительности однокристальных вычислений. В ответ отрасль разместила на кристалле более одного ядра ЦП, ожидая, что параллелизм станет новым основным источником производительности. Эта тенденция привела к появлению двухъядерных процессоров, четырехъядерных процессоров и, в конечном итоге, многоядерных процессоров, по сути, распределенных суперсистем на кристалле, которые обычно объединяют ядра ЦП в сетку. Примеры многоядерных включают две неудачные попытки Intel завладеть графическим процессором, Larrabee для рынка 3D и серию потомков Larrabee Xeon Phi ​​для HPC.

Графический процессор традиционно разворачивает петли над объектами Graphics, такими как вершины, треугольники и пиксели. Архитекторы графических процессоров расширили эту возможность до циклов в приложениях HPC, превратив графический процессор в векторную суперкомпьютерную систему. Затем они назвали использование GPU в HPC как General-Purpose GPU (GPGPU). К счастью, когда Vector Super уступил место Distributed Super на рынке высокопроизводительных вычислений, он перевоплотился в графический процессор, чтобы отомстить своему сопернику. Мы видим коммерческий успех графического процессора в лучших суперкомпьютерах, таких как Суперкомпьютер Titan в Национальной лаборатории Ок-Ридж и Piz Daint в Швейцарском национальном суперкомпьютерном центре.

В двух словах

  • Distributed Super вытеснила Vector с рынка высокопроизводительных вычислений.
  • Многоядерный процессор - это распределенный супер-на-кристалле, а графический процессор - это векторный супер-на-кристалле для высокопроизводительных вычислений.

Умножение матриц (MM) и AI

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

ММ и HPC

Вечное правило в компьютерной архитектуре гласит, что перемещение данных обходится дороже, чем их вычисление, что требует от компьютерных архитектур выполнять больше вычислений с меньшим количеством данных. К счастью, сообщество высокопроизводительных вычислений извлекло уроки из десятилетней практики, что они могут выразить большинство проблем высокопроизводительных вычислений в MM, который имеет высокое соотношение вычислительных ресурсов и обмена данными с, грубо говоря, N ³ операций MAC на 2 N ² данных. При правильной реализации решение проблем с помощью MM может обеспечить высокую производительность за счет сокрытия передачи данных. Следовательно, программисту HPC нужна только звуковая библиотека MM, предоставляемая поставщиками суперкомпьютеров. При вычислении MM современный Distributed Super может полностью использовать сотни тысяч узлов, расположенных на сотнях тысяч квадратных футов, эффективно заставляя каждый отдельный узел занят вычислениями.

Расцвет ММ в ИИ

Машинное обучение (ML) с использованием нейронных сетей (NN) характеризует современный ИИ. Модель NN состоит из глубоких слоев ядер ML. До сверточной нейронной сети (CNN) самым популярным типом нейронной сети (NN) был многослойный персептрон (MLP). Фундаментальным ядром ML для MLP является матрично-векторное умножение (MVM), которое использует примерно N ² операций MAC с данными N ² без повторного использования данных. С другой стороны, в настоящее время преобладающим примитивом CNN является тензорная свертка (TC). Как я объяснял в своей статье Все тензоры тайно хотят быть самими собой, MM и TC структурно эквивалентны с точки зрения перемещения и совместного использования данных, поэтому мы часто используем тензоры и матрицы как взаимозаменяемые.

Использование MM в качестве примитива принесло прорывы в области высокопроизводительных вычислений, а также искусственного интеллекта. CNN, в основном использующая MM, вызвала прорыв в области искусственного интеллекта в компьютерном зрении. Трансформер, который также широко использует MM, положил начало прорыву ИИ в понимании естественного языка (NLP).

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

Many-Core может запускать те же алгоритмы MM, разработанные для Distributed Super. В некотором смысле технология Many-Core for AI восходит к своим корням высокопроизводительных вычислений.

Прилив многих MAC

Систолический массив был представлен в 1982 году для ускорения ММ и других приложений. Если бы ускорение MM в контексте AI было таким же крутым, как сегодня, исследователи Systolic-Array даже не беспокоились бы о других приложениях, кроме MM. Систолический массив - это механизм для более плотной упаковки MAC-адресов, чем в ядре ЦП. Однако недостатком является то, что мы не можем использовать единицы MAC MM в другом месте. Из-за отсутствия универсальности Systolic Array не получил признания на рынке, пока ИИ не стал смертоносным приложением для MM, что побудило Google принять его в TPU в качестве ускорителя MM. С тех пор на рынке появились варианты, улучшающие оригинал. Здесь я имею в виду как исходный систолический массив, так и его варианты как Many-MAC. Для обработки операций, отличных от MM, Many-MAC добавляет сопутствующие процессоры.

С другой стороны, ядро ​​ЦП в многоядерном процессоре, таком как чип D1 или шейдерное ядро ​​графического процессора, может использовать гораздо меньшие множества MAC, фактически становясь контейнером множества MAC.

В двух словах

  • Пути AI и HPC пересеклись, поскольку в них обоих преобладает MM.
  • Many-Core и Many-MAC не более специфичны для ИИ, чем GPU.

Доменный сдвиг и доменно-специфический параллелизм

Темный кремний и стена силы

Вскоре после 2010 года отрасль осознала, что удвоение параллелизма, основного источника вычислительной производительности, с удвоением количества ядер ЦП, не могло поддерживать эффективный цикл. Каждое ядро ​​ЦП не могло снизить потребление энергии вдвое или вдвое по сравнению с параллелизмом на ватт. После нескольких итераций удвоения ядер мы увидим, что большинство ядер останутся без питания при том же бюджете мощности, что приведет к Dark Silicon или, точнее, Dark Cores. Как показано на концептуальном графике ниже, когда мы переходим от 2 ядер к 4 ядрам, только 3 из 4 ядер могут получать питание, а когда мы переходим от 4 к 8, только 4 могут получать питание. Наконец, только 4 ядра из 16 могут получать питание, что не дает преимущества при переходе с 8 на 16 ядер. Мы называем это явление ударом стены силы.

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

ИИ спешит на помощь

Так совпало, что ИИ возник во время этого пессимизма. Согласно Стэнфордскому отчету об индексе ИИ, ИИ развивался, как будто Стены Силы не существовало!

Ключевым моментом является то, что в основном программном обеспечении могут происходить сдвиги в предметной области, что приводит к различным типам параллелизма. Как показано на концептуальном графике ниже, когда основное программное обеспечение претерпевает сдвиг домена от вычислений с большим количеством указателей к вычислениям с параллельными данными, оно переопределяет одну степень параллелизма как полосу Single-Instruction-Multiple-Data (SIMD), а не ядро ​​ЦП. Мы видим более высокую кривую (обозначенные линиями SIMD для параллельных данных), чем кривая ядра процессора. Затем, когда основное программное обеспечение вошло в пространство ИИ с тяжелым MM, была добавлена ​​еще более высокая кривая (обозначенная MM MAC для MM-Heavy), где один MM MAC представляет одну степень параллелизма. Как мы видим, благодаря изучению более эффективного параллелизма, зависящего от предметной области, и увеличению потолка Amdahl, производительность вычислений продолжает расти за Power Wall.

Между прочим, у искусственного интеллекта с тяжелым ММ есть свой потолок Amadhl’s Ceiling. Приложение ИИ должно иметь интерфейсы циклов для распределения операций MM по ресурсам параллельных вычислений и серверные части цикла для сбора результатов для последовательных операций, таких как нормализация или softmax. Закон Амдала сработает, когда будет достаточно MAC MAC для ускорения MM, что станет узким местом как для внешнего, так и для внутреннего интерфейса цикла.

Более того, по мере того, как ухудшается закон Мура, становится сомнительным, сможет ли создание более широких машин для ускорения ММ поддерживать эффективный цикл ИИ. Чтобы решить эту проблему и еще больше поднять потолок Amdahl, нам нужно выполнить новый сдвиг домена и изучить новый предметно-зависимый параллелизм. Другими словами, нам нужно добавить новую кривую (???) к следующему концептуальному графу.

В двух словах

  • Мы остались позади Power Wall благодаря переходу домена от вычислений с большим количеством указателей и параллельных данных к вычислениям с большим количеством ММ.

Следующий сдвиг домена

Дифференциальное программирование

По словам Раджи Кодури из Intel, «нейронные сети - это новые приложения. Мы видим, что каждый сокет, [будь то] CPU, GPU, [или] IPU, будет иметь матричное ускорение ».

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

Приведенные выше два мнения вызывают два вопроса. Должен ли сдвиг области ИИ останавливаться при ускорении умножения матриц? Исключает ли аппаратное обеспечение ИИ устаревший дизайн, ориентированный на конкретную предметную область?

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

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

Графики вычислений

Мы показываем концептуальную схему графа вычислений ниже.

Вычислительный узел, который вычисляет выход y с заданным входом x с использованием параметра w, оценивает и запоминает разность выходных / входных данных, используемую для вычисления входного градиента. . Синие пунктирные изогнутые линии показывают, что путь обратной связи распространяет входной градиент к вышестоящим узлам. При необходимости он вычисляет и запоминает разность выходных данных / параметров для вычисления градиента параметра для настройки параметров. Давайте посмотрим на несколько примеров.

Дифференцируемая графика в цикле

Все больше и больше моделей NN имеют разнородные вычислительные узлы, что соответствует определению дифференцируемого программирования. Хорошие примеры - это те, которые решают проблему обратной графики. В отличие от Forward Graphics, которая генерирует 2D-изображения из параметров 3D-сцены, Inverse Graphics восстанавливает параметры сцены из 2D-изображений. Новые решения для инверсной графики на основе искусственного интеллекта обычно включают в себя дифференцируемое средство визуализации графики, которое отличается от традиционных. Он распространяет градиенты обратно к вышестоящим узлам, участвуя в градиентном спуске, чтобы минимизировать сквозные потери. Сила конвейера обратной графики с дифференцируемой графикой в ​​цикле заключается в том, что она делает обратную графику «самоконтролируемой», как показано на диаграмме ниже.

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

Текущие дифференцируемые средства визуализации, такие как Soft Rasterizer, DIB-R, и те, которые используются в инфраструктурах искусственного интеллекта, такие как PyTorch3D, TensorFlow Graphics, представляют собой программные средства визуализации, которые не используют оборудование для конкретной графики. Такие программные реализации не так тяжелы, как типичные ядра ML, и поэтому не могут использовать ускорение MM.

С другой стороны, архитекторы графических процессоров проектируют и предоставляют специализированное для графики оборудование с достаточно глубоким конвейером, чтобы они работали быстро и редко становились узкими местами. А теперь представьте, что мы делаем такой конвейер «дифференцируемым оборудованием». Программисты могут эффективно использовать дифференцируемое оборудование в графе вычислений, аналогично использованию предварительно созданного программного компонента. Этот аппаратный компонент Graphics-in-the-Loop должен быть намного быстрее, чем его программный аналог, благодаря глубокому конвейерному параллелизму аппаратного обеспечения, специфичного для графики.

Дифференцируемый интернет-провайдер

Помимо использования дифференциального оборудования в качестве предварительно созданного программного компонента, мы можем «запрограммировать» его, регулируя его параметры с помощью градиентного спуска, точно так же, как мы «обучаем» ядро ​​машинного обучения. Например, обработчик сигналов изображения (ISP) захватывает изображения через линзу и обрабатывает их в конвейере для создания изображений для потребления человеком или последующих задач понимания изображения (IU), таких как обнаружение объектов или семантическая сегментация. Традиционный интернет-провайдер имеет обширное пространство параметров, требующее экспертной настройки для использования человеком. Это пространство параметров в основном не используется экспертами, которые обучают последующие модели IU NN. Вместо этого эксперты обучают модели NN с изображениями, предварительно захваченными и предварительно обработанными интернет-провайдером с использованием определенных настроек параметров. Кроме того, системы линз, которые фиксируют изображения, могут иметь дефекты во время производства и эксплуатации. Без совместной оптимизации и корректировок на устройстве с поставщиками услуг Интернета модели IU NN не будут работать удовлетворительно.

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

  1. Недифференцируемое аппаратное обеспечение ISP в цикле для автоматической настройки параметров с оптимизацией без машинного обучения.
  2. Модель NN, обученная имитировать ISP в качестве дифференцируемого прокси для автоматической настройки параметров с использованием машинного обучения.

Вышеупомянутое исследование показало, что, задавая сквозную цель для конкретных задач IU, автоматически настроенный интернет-провайдер превосходит провайдера без автонастройки.

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

А теперь представьте, как сделать ISP дифференцируемым. Мы могли бы составить конвейер адаптивного зондирования с помощью ISP-in-the-Loop, как показано на диаграмме ниже. Он может совместно настраиваться на устройстве с моделями NN до и после ISP для адаптации к операционной среде и задачам пользовательского интерфейса. Обратите внимание, что мы не фиксируем модели NN до и после ISP точно так же, как архитекторы графических процессоров не диктуют графические шейдеры (см. Мою статью Будет ли GPU звездой в золотой век компьютерной архитектуры).

Вывод

Мы представили концепцию дифференцируемого оборудования на примерах Graphics-in-the-Loop и ISP-in-the-Loop. Представьте, что у нас уже есть дифференцируемый интернет-провайдер и дифференцируемый графический процессор на кристалле для следующего уровня. Нам также нужна обратная графика с самоконтролем и саморегулирующееся восприятие. Как показано ниже, мы потенциально можем создать новый конвейер, объединив конвейеры Graphics-in-the-loop и ISP-in-the-loop.

Как мы видим, дифференцируемый аппаратный блок можно программировать в следующих трех аспектах:

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

Искусственный интеллект привел к сдвигу в основной области программного обеспечения к вычислениям с большим объемом вычислений. Программисты могут сократить широкий спектр приложений до ядер машинного обучения. Чтобы возродить благотворный цикл закона Мура, нам понадобится еще один сдвиг в области. Вместо того, чтобы выяснять, какое оборудование предназначено для ИИ, прогрессирующей движущейся цели, мы должны следовать сути ИИ - дифференцируемому программированию, чтобы изменить то, как мы проектируем и используем вычислительное оборудование. Больше не должно быть проверки «чистоты» для оборудования AI, которое теперь может включать дифференцируемое оборудование.

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

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