Высокопроизводительные вычисления для ИИ

Мы живем в эпоху больших данных. Каждый день генерируется 2,5 млн терабайт данных [1], и этот процесс ускоряется: согласно последним оценкам, 90% всех данных в Интернете были сгенерированы за последние два года [1]. Одним из ответов на проблему получения информации из этого потока данных является захватывающее дух развитие, которое машинное обучение, и в частности глубокое обучение, претерпело за последнее десятилетие. Прилагаются большие усилия для повышения эффективности моделей машинного обучения. Однако увеличение объема обучающих данных, а также растущие требования к точности этих моделей привели к быстрому росту вычислительной сложности.

Зачем использовать высокопроизводительные вычисления для обучения ИИ?

Растущие потребности в оборудовании, возникающие в результате этого развития, рассматриваются с разных точек зрения: поскольку графические процессоры могут эффективно выполнять типы вычислений, используемые в глубоком обучении, такие как умножение плотных матриц и свертки, они стали стандартным оборудованием для рабочих нагрузок глубокого обучения. Кроме того, разрабатываются различные новые чипы, специально предназначенные для ускорения приложений машинного обучения, такие как Google TPU и Graphcore IPU. Поставщики облачных вычислений постоянно расширяют свои предложения аппаратным и программным обеспечением, чтобы лучше соответствовать потребностям приложений машинного обучения. В целом методы, которые обычно используются в высокопроизводительных вычислениях (HPC) для распределения рабочих нагрузок по нескольким узлам, теперь применяются для приложений машинного обучения [2]. Следовательно, в последние годы область ИИ перешла к использованию оборудования с несколькими узлами, каждый из которых ускоряется с помощью графического процессора (рис. 1). Тем не менее, мало кто думает о высокопроизводительных вычислениях, когда речь заходит о решении проблем с вычислениями в искусственном интеллекте.

На этом фоне мы исследовали использование высокопроизводительных вычислений для приложений машинного обучения на встрече Machine Intelligence Garage, организованной Digital Catapult вместе с экспертами из двух наиболее авторитетных компаний в области высокопроизводительных вычислений: Адрианом Джексоном из EPCC, ведущего мирового центра высокопроизводительных вычислений, и Раджеш Анантараман из мирового лидера в области суперкомпьютеров Cray Inc. К ним присоединился Николас Тонелло, основатель Constelcom, стартапа, задача которого сделать использование высокопроизводительных вычислений таким же простым, как использование облачных вычислений.

HPC: основы

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

  • Процессоры и ускорители обработки
  • Временная память, включая основную память (ОЗУ) и кэш ЦП
  • Интерконнекты
  • Хранилище данных

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

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

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

В современных архитектурах HPC узлы дополняются чипами-ускорителями, такими как GPGPU, которые берут на себя большую часть вычислений. Примером такой системы является Cray XC50 PizDaint в Швейцарском национальном суперкомпьютерном центре (CSCS), который в настоящее время является третьим по скорости суперкомпьютером в мире [4].

Как использовать HPC для глубокого обучения?

При использовании любой инфраструктуры высокопроизводительных вычислений для обучения модели глубокого обучения критический вопрос заключается в том, как можно распределить рабочую нагрузку между несколькими узлами, не создавая слишком больших накладных расходов на связь. По своей структуре глубокие нейронные сети допускают различные способы реализации параллелизма на оборудовании для высокопроизводительных вычислений. Наиболее простым и популярным подходом является параллелизм данных, при котором полная модель хранится на каждом воркере, а рабочая нагрузка разделяется на входные данные (рис. 3а). Если для обучения доступно N работников, мини-партия разбивается на N равных частей, и каждая часть назначается одному работнику. При параллелизме модели разные части модели обрабатываются разными рабочими процессами (рис. 3b), а конвейерная обработка слоев использует разных рабочих процессов одновременно для разных уровней модели (рис. 3c). Параллелизм моделей и послойная конвейерная обработка могут обрабатывать более крупные модели, поскольку только подмножество весов должно храниться в одном рабочем потоке.

При использовании аппаратной архитектуры с распределенной памятью между узлами необходимо обмениваться различной информацией через межсоединения. MPI (интерфейс передачи сообщений), стандарт, хорошо зарекомендовавший себя в высокопроизводительных вычислениях, часто является предпочтительным методом, гарантирующим быструю и надежную связь между узлами. Такие платформы, как Horovod [5] или плагин Cray PEDML, автоматизируют распространение моделей глубокого обучения по нескольким узлам для поддержки конечного пользователя. Они обеспечивают хорошую эффективность масштабирования за счет управления связью и балансировки рабочих нагрузок.

В чем отличия от облачных вычислений?

HPC предлагает несколько преимуществ по сравнению с классическими облачными вычислениями, особенно для исследований и разработок с интенсивными вычислениями. Системы HPC оптимизированы для крупномасштабных приложений. Это включает в себя тесную связь различных компонентов и процессов, а также программный стек, оптимизированный для аппаратной архитектуры. В частности, вычисления, которые выигрывают от связи с малой задержкой и доступа к памяти с высокой пропускной способностью, могут получить значительный прирост производительности при выполнении на оборудовании HPC. Наконец, недавно поставщики высокопроизводительных вычислений, а также третьи стороны предприняли большие усилия, чтобы сделать доступ и использование высокопроизводительных вычислений таким же простым в использовании, как локальные ресурсы или облачные вычисления [6,7,8].

Однако, особенно по сравнению с поставщиками коммерческих облачных вычислений, остаются препятствия для доступа к инфраструктуре высокопроизводительных вычислений. Machine Intelligence Garage [9] облегчает использование высокопроизводительных вычислений британскими стартапами в области искусственного интеллекта и бесплатно предоставляет доступ к средствам высокопроизводительных вычислений, размещенным Cray, и двум крупным центрам высокопроизводительных вычислений в Великобритании, EPCC и STFC Hartree.

Machine Intelligence Garage — это программа, разработанная Digital Catapult, чтобы помочь британским стартапам в области машинного обучения преодолеть одно из самых больших препятствий, с которыми они сталкиваются: доступ к вычислительной мощности. Это сопровождается экспертизой широкого спектра аппаратных ресурсов и обоснованной поддержкой с выбором наиболее подходящего оборудования и его наилучшего использования.

использованная литература

[1] IBM, 10 ключевых тенденций маркетинга на 2017 год https://public.dhe.ibm.com/common/ssi/ecm/wr/en/wrl12345usen/watson-customer-engagement-watson-marketing-wr-other- документы-и-отчеты-wrl12345usen-20170719.pdf

[2] Исследование Baidu, Использование методов высокопроизводительных вычислений в глубоком обучении, http://research.baidu.com/bringing-hpc-techniques-deep-learning/

[3] Тал Бен-Нун и Торстен Хефлер, Демистификация параллельного и распределенного глубокого обучения: углубленный анализ параллелизма, arXiv: 1802.09941, 2018 г.

[4] https://www.top500.org/lists/2017/11/

[5] Алекс Сергеев и Майк Дель Бальсо, Знакомьтесь, Horovod: распределенная среда глубокого обучения Uber с открытым исходным кодом для TensorFlow, https://eng.uber.com/horovod/

[6] https://www.cray.com/solutions/artificial-intelligence/cray-accel-ai

[7] https://www.epcc.ed.ac.uk/work-us/industry-engagement-programmes/accelerator

[8] https://stfc.ukri.org/files/constelcom-case-study/

[9] https://www.migarage.ai/

Первоначально опубликовано на www.migarage.ai 10 июля 2018 г.