Мне нравится глубокое обучение ...

Недавний успех Deep Learning невозможно остановить. От категоризации объектов в изображениях и распознавания речи до подписей изображений, понимания визуальных сцен, обобщения видео, перевода языка, рисования, даже создания изображений, речи, звуков и музыки!

… И я хочу запустить его быстро!

Результаты потрясающие, поэтому спрос будет расти. Представьте, что вы Google, Facebook или Twitter: после того, как вы найдете способ «прочитать» содержание изображений и видео, чтобы лучше понять своих пользователей, что им нравится, о чем они говорят, что рекомендуют и чем делятся . Что бы вы сделали? Вы, наверное, хотели бы сделать больше!

Возможно, вы запускаете версию ResNet / Xception / elasticNet для классификации пользовательских изображений по тысячам категорий. А если вы один из интернет-гигантов, у вас много серверов и серверных ферм, поэтому в идеале вы хотите запускать алгоритмы глубокого обучения в этой существующей инфраструктуре. И это работает какое-то время ... пока вы не поймете, что те серверы, которые вы использовали для синтаксического анализа текста, теперь должны выполнять ›1 миллион операций, которые должны были быть выполнены раньше, чтобы выполнить категоризацию отдельных изображений. А данные об использовании поступают все быстрее и быстрее. 300 часов видео на каждую минуту реальной жизни!.

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

Но центры обработки данных - это только одна из областей, где нам нужны более оптимизированные микрочипы и оборудование для решений глубокого обучения. В автономном автомобиле можно разместить вычислительную систему мощностью 1000 Вт (хотя она также будет использовать аккумулятор / топливо), но во многих других приложениях мощность является жестким ограничением. Подумайте о дронах, роботах, сотовых телефонах, планшетах и ​​других мобильных устройствах. Все они должны работать с бюджетом в несколько ватт, если не ниже 1 Вт.

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

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

итак ... тебе нужно новое оборудование, а?

Поэтому нам нужно новое оборудование, более эффективное, чем серверы на базе Intel-Xeon. Серверный процессор Intel может потреблять 100–150 Вт, а также может потребоваться большая система с охлаждением для поддержки производительности.

Какие еще варианты?

  • Графические процессоры, GPU
  • программируемые логические устройства, FPGA
  • нестандартные микрочипы, специализированные интегральные схемы, ASIC или системы на кристалле, SoC
  • цифровые сигнальные процессоры, DSP
  • какая-то другая технология, которую мы можем получить из будущего, инопланетяне или неизвестные новые законы физики

Графические процессоры

Графические процессоры - это процессоры, предназначенные для создания компьютерной графики на основе полигонов. В последние годы, учитывая сложность и потребность в реалистичности современных компьютерных игр и графических движков, графические процессоры накопили большую вычислительную мощность. NVIDIA лидирует в этой игре, производя процессоры с несколькими тысячами ядер, предназначенные для вычислений с почти 100% эффективностью. Оказывается, эти процессоры также хорошо подходят для вычисления нейронных сетей, умножения матриц. Заметьте, умножение матрицы на вектор считается досадно параллельным, потому что оно может быть распараллелено с помощью простого масштабирования алгоритма (в них отсутствует ветвление и, таким образом, устраняются небольшие промахи в кэше).

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

Борьба между процессорами Intel и графическими процессорами NVIDIA благоприятствовала последним из-за большого количества ядер графических процессоров (~ 3500 против 16 у Intel Xeon или 32 у Xeon-Phi), что компенсирует увеличение тактовой частоты процессора на 2–3 . Ядра графических процессоров являются оптимизированной версией более сложных (с предсказанием ветвлений и конвейерной обработки) ядер ЦП, но их большое количество обеспечивает более высокий уровень параллелизма и, следовательно, большую производительность.

В настоящее время графические процессоры являются нормой в обучении систем глубокого обучения, будь то сверточные / CNN или рекуррентные нейронные сети / RNN. Они могут обучаться на больших пакетах изображений из 128 или 256 изображений одновременно всего за несколько миллисекунд. Но они потребляют ~ 250 Вт, и для их поддержки требуется полноценный ПК с дополнительной мощностью 150 Вт. На высокопроизводительную систему GPU может уйти не менее 400 Вт.

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

NVIDIA усердно работает над более энергоэффективными устройствами, такими как Tegra TX1 и TX2 (производительность TX1 12 Вт и ~ 100 Гбит / с в глубоких нейронных сетях, больше TX2) и более мощный Drive PX (250 Вт, как у Titan X).

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

В целом графические процессоры обеспечивают ~ 5 Гбит / с на 1 Вт мощности. Нам нужно добиться большего, если мы хотим, чтобы в мобильных системах развертывались решения для глубокого обучения!

ПЛИС

Современные устройства на базе ПЛИС, такие как Xilinx, - это лего электроники. Можно создавать целые индивидуальные микропроцессоры и сложные гетерогенные системы, используя их схемы в качестве строительных блоков. А в последние годы в FPGA появилось все больше и больше вычислительных блоков с умножением и накоплением. Эти блоки DSP, как их называют, могут выполнять умножения и могут быть объединены в массив для выполнения многих из них параллельно.

Мы более 10 лет работаем над использованием FPGA для нейронных сетей. Наша работа началась с первоначальной новаторской работы команды Яна ЛеКуна в Нью-Йоркском университете и, в частности, Клемента Фарабета. Наша совместная работа произвела NeuFlow - сложный процессор обработки потоков данных для работы нейронных сетей.

В период с 2011 по начало 2015 года мы усовершенствовали совершенно новый дизайн под названием nn-X. Эту работу вели Берин Мартини и Винаяк Гохале (из нашей лаборатории). Система обеспечивала скорость до 200 Гвыб / с при бюджете 4 Вт, что фактически составляет 50 Гвыб / сек / Вт, что почти в 10 раз больше, чем у графических процессоров.

Но у nn-X были две основные проблемы:

  • низкий коэффициент использования, когда не использовались фиксированные сверточные двигатели
  • высокая пропускная способность памяти. Первая проблема была связана с тем, что в nn-X использовались фиксированные сверточные механизмы 10x10, а при выполнении сверток 3x3 эффективно использовались только 9% блоков DSP. Позже это было улучшено путем разделения сетки 12x12 на блоки 4x4 по 3x3. К сожалению, системе также требовалась высокая пропускная способность памяти, поскольку она не использовала кеш данных и требовала выборки входных данных из памяти и сохранения результатов непосредственно в памяти. Таким образом, nn-X не мог масштабироваться, и его использование единиц DPS никогда не превышало 75–80%.

Системы с аналогичными конструктивными ограничениями также будут ограничены в производительности.

Что необходимо, так это система с кешем данных, которая может использовать произвольные группы модулей DPS для эффективного использования почти 100% ресурсов. Одной из таких систем является Microsoft Catapult и наш собственный ускоритель SnowFlake с загрузкой, близкой к 100%.

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

Пользовательский SoC

Qualcomm, AMD, ARM, Intel, NVIDIA усердно работают над интеграцией пользовательских микрочипов в свои существующие решения. Nervana и Movidius (сейчас оба работают в Intel) имеют или разрабатывают интегрированные решения. SoC может обеспечить примерно в 10 раз лучшую производительность, чем система FPGA на том же технологическом узле, и даже больше в некоторых конкретных архитектурах. По мере того, как мощность SoC и процессоров становится все меньше и меньше, дифференциация будет происходить за счет новых систем интегрированной памяти и эффективного использования полосы пропускания для внешней памяти. В этой области трехмерная память, интегрированная в виде систем-на-корпусе, позволяет снизить энергопотребление как минимум в 10 раз.

DSP

Цифровые сигнальные процессоры существуют уже давно и созданы для выполнения матричной арифметики. Но на сегодняшний день ни один DSP не предоставил никакой полезной производительности или устройства, которое могло бы конкурировать с графическими процессорами. Это почему? Основная причина - количество ядер. DSP в основном использовались для телекоммуникационных систем, и им не нужно было иметь более 16 или 32 ядер. Их загруженность просто не нуждалась в этом. Вместо этого в последние 10–15 лет рабочие нагрузки графических процессоров продолжали расти все больше и больше, требуя, таким образом, все больше и больше ядер. В конце концов, примерно с 2006 года графические процессоры NVIDIA превосходили по производительности DSP.

Texas Instruments продолжает их разработку, но мы не наблюдаем за ними конкурентоспособности. Многие DSP также были вытеснены ПЛИС.

Qualcomm использует DSP в своих SoC, и они обеспечивают ускорение, но на сегодняшний день недостаточно подробностей, чтобы сравнивать их с другими решениями.

Будущее

Это для нас сделать. Оставайтесь заинтересованными, сосредоточенными и активными!

Об авторе

У меня почти 20-летний опыт работы с нейронными сетями как в аппаратном, так и в программном обеспечении (редкое сочетание). См. Обо мне здесь: Medium, webpage, Scholar, LinkedIn и т. Д.