[Перевод] Неизбежность проникновения FPGA в дата-центры

image


Не нужно быть разработчиком чипов, чтобы программировать для FPGA, как не нужно быть программистом на С++, чтобы писать код на Java. Однако в обоих случаях, вероятно, это будет не лишним.

Цель коммерциализации обеих технологий, Java и FPGA, в том, чтобы опровергнуть последнее заявление. Хорошие новости для FPGA — с использованием подходящих уровней абстракции и набора инструментов в последние 35 лет, с тех пор, как было изобретено программируемое логическое устройство, создавать алгоритмы и потоки данных для FPGA вместо CPU, DSP, GPU или любой другой формы специальных ASIC становится всё легче.

Удивительная своевременность их создания проявляется в том, что как раз когда CPU уже не могли оставаться единственным вычислительным модулем дата-центров для выполнения множества задач — по самым различным причинам — FPGA достигли своей эффективности, предложив быстродействие, малую задержку, сетевые возможности и память — разнородные вычислительные возможности современных FPGA SoC, представляющих собой практически полноценные вычислительные системы. Однако FPGA удачно сочетаются и с другими устройствами в гибридных системах, и, по нашему мнению, только начинают находить своё законное место в иерархии вычислений.
Поэтому мы организовали конференцию The Next FPGA Platform в Сан-Хосе 22 января. Естественно, одним из главных поставщиков FPGA в мире и пионером в этой области является компания Xilinx. Иво Больсенс, старший вице-проезидент и технический директор Xilinx, выступил на конференции с докладом, и рассказал нам о своих сегодняшних мыслях, связанных с тем, как Xilinx помогает создавать изменяемые вычислительные системы для дата-центров.

У системных архитекторов и программистов ушло достаточно времени на от, чтобы прийти к неоднородному дата-центру, в котором будут представлены компьютерные мощности разного рода, решающие задачи по вычислениям, хранению и организации сетей. Это кажется необходимым в связи с тем, что следовать за законом Мура с использованием различных КМОП становится всё труднее. Пока наш язык всё ещё завязан на CPU, и мы всё ещё говорим об «ускорении приложений», имея в виду улучшение работы программ по сравнению с тем, что можно сделать на одних только CPU. Спустя какое-то время дата-центры превратятся в наборы вычислительных мощностей, хранилищ данных и связывающих всё воедино протоколов, и мы вернёмся к таким терминам, как «вычисления» и «приложения». Гибридные вычисления станут такой же нормой, как сегодняшние «облачные» сервисы, работающие на основе обычных или виртуальных машин, и в какой-то момент мы будем использовать просто слово «вычисления» для описания их работы. В какой-то момент — и, вероятно, наступлению этой эры активно поспособствуют FPGA — мы опять будем называть это обработкой данных.

Для внедрения FPGA в дата-центры потребуется изменить образ мышления. «Размышляя о способах ускорения сегодняшних приложений, приходится докапываться до основ того, как они исполняются, какие используются ресурсы, на что уходит время, — поясняет Болсенс. — Нужно изучать общую проблему, которую вы пытаетесь решить. Многие приложения, работающие в дата-центрах сегодня, масштабируются, захватывая большое количество ресурсов. Возьмём, к примеру, машинное обучение, использующее огромное количество вычислительных узлов. Но говоря об ускорении, нужно думать не только об ускорении вычислений, но и об ускорении инфраструктуры».

К примеру, при тех операциях, связанных с машинным обучением, которые Болсенс изучал на практике, примерно 50% времени тратится на передачу данных туда и сюда между разбросанными вычислительными мощностями, и только оставшаяся половина времени тратится на сами вычисления.

«Именно здесь, мне кажется, и сможет помочь FPGA, поскольку мы можем обеспечить оптимизацию как вычислительных аспектов, так и аспектов передачи данных для приложения. И мы можем делать это на уровне общей инфраструктуры, и на уровне чипа. Это одно из больших преимуществ FPGA, позволяющих создавать сети связи под конкретные нужды приложения. Наблюдая за типичными закономерностями перемещения данных в задачах, связанных с работой искусственного интеллекта, я не вижу необходимости в сложной архитектуре на основе коммутаторов. Можно построить сеть с большим потоком данных. То же касается и задач обучения нейросетей — можно построить ячеистую сеть с размерами пакетов, подстраивающимися под конкретную задачу. С использованием FPGA можно очень точно масштабировать и подстраивать протоколы передачи данных и топологию схемы для конкретного приложения. А в случае с машинным обучением также ясно, что нам не нужны числа с плавающей запятой двойной точности, и это мы тоже можем подстроить».

Разница между FPGA и CPU или специализированной ASIC в том, что последние программируются при производстве, и после этого вы уже не можете передумать насчёт типов вычисляемых данных или вычисляемых элементов, или насчёт природы потока данных идущих через устройство. FPGA позволяют вам передумать, если изменятся условия работы.

В прошлом это преимущество обходилось дорого, когда программирование под FPGA было предназначено не для слабых духом. Требуется открыть компиляторы для FPGA, чтобы они лучше интегрировались с инструментами, используемыми программистами для создания приложений с параллельными вычислениями для CPU на языках C, C++ или Python, и отдать часть работы библиотекам, ускоряющим процедуры на FPGA. Этим и занимается стек для машинного обучения Vitis, находящийся в основе таких платформ для МО, как Caffe и TensorFlow, и имеющий библиотеки для запуска обычных ИИ-моделей или добавления возможностей FPGA к таким задачам, как перекодирование видео, распознавание объектов на видео, анализ данных, управление финансовыми рисками и любыми сторонними библиотеками.

Эта концепция не сильно отличается от проекта CUDA от Nvidia, запущенного десять лет назад, и перекладывающего параллельные вычисления на GPU-ускорители, или от набора инструментов ROCm от AMD, или от обещаний проекта Intel, OneAPI, который должен работать на разных CPU, GPU и FPGA.

Вопрос лишь в том, как все эти инструменты будут связаны вместе, чтобы любой человек смог запрограммировать набор вычислительных мощностей по своему усмотрению. Это важно потому, что FPGA стали сложнее, гораздо сложнее любого из имеющихся CPU. Их изготавливают с наиболее передовыми технологическими процессами и при помощи наиболее современных технологий упаковки чипов. И они найдут свою нишу, поскольку мы уже больше не можем зря тратить время, деньги, энергию и интеллект — всё это слишком дорогие ресурсы.

«FPGA предлагает технологические преимущества, — говорит Болсенс. — И это не просто обычная реклама насчёт адаптируемости и перенастраиваемости. Во всех важных приложениях — машинное обучение, анализ графов, высокоскоростная торговля, и т.п. — у них есть возможность адаптировать к конкретной задаче не только путь распространения данных, но и архитектуру памяти — то, как данные перемещаются в рамках чипа. А ещё в FPGA встроено гораздо больше памяти, чем в другие устройства. Также следует учесть, что если задача не вмещается в один FPGA, можно масштабировать её на несколько чипов, не сталкиваясь с теми недостатками, которые ждут вас при масштабировании задач на несколько CPU или GPU».

© Habrahabr.ru