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

Multi-GPU также является новой областью для изучения. Как заявляет Nvidia[1], использование нескольких GPU может обеспечить существенную экономию времени благодаря сверхбыстрой обработке вычислений, рендерингу и другим вычислительным и визуально интенсивным проектам. Этот момент может быть подтвержден исследованием Томаса и др. [2]. Они используют несколько графических процессоров в своих исследованиях визуализации больших данных, и мульти-графические процессоры действительно ускоряют рендеринг, который является основой для рендеринга больших наборов данных. Кроме того, несколько графических процессоров выполняют несколько итераций, что означает, что проект можно пересматривать несколько раз, что приводит к повышению производительности в условиях ограниченного времени.

Предыдущие исследования

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

Одно исследование было проведено Ши и др. [3] для оценки производительности четырех современных распределенных сред глубокого обучения (например, Caffe-MPI, CNTK, MXNet и TensorFlow) в средах с одним GPU, несколькими GPU и несколькими узлами.

Эксперимент разработан с 4-узловым кластером графических процессоров, в котором каждый узел имеет четыре карты Nvidia Tesla P40. На следующем рисунке (Рис.1) показана внутриузловая топология.

Ши и др. выбрали три CNN, а именно AlexNet, GoogleNet и ResNet-50, и запустили их в наборе данных ILSVRC-2012 ImageNet. Кроме того, они задают разные конфигурации в соответствии с особенностями тестовых фреймворков.

Будут обсуждаться результаты одного GPU и нескольких GPU.

Для оценки одного графического процессора результат показан в таблице 1. После сравнения эти платформы показывают разные возможности. По словам Ши и др., CNTK имеет более быстрое копирование данных, операции прямого и обратного распространения. Caffe-MPI скрывает накладные расходы на ввод-вывод.

Для теста с несколькими графическими процессорами производительность связанных фреймворков указана на следующем рисунке (рис. 2). Ши и др. показывает, что Caffe-MPI, MXNet и TensorFlow достигли почти линейного масштабирования от одного до двух графических процессоров, в то время как CNTK имеет лишь небольшое ускорение при использовании нескольких графических процессоров.

Чтобы выяснить причину, накладные расходы на передачу данных заключаются в следующем. Ши пришел к выводу, что для снижения влияния агрегации градиентов в S-SGD необходимы два фактора: высокая скорость передачи данных между графическими процессорами и параллелизм между связью и вычислениями.

При тестировании нескольких машин исследование показало, что накладные расходы на агрегацию градиентов между несколькими машинами нельзя было легко уменьшить в MXNet и TensorFlow, хотя они могут скрывать время связи в предыдущем тесте. Исключением является Caffe-MPI. Результат можно указать из таблицы 3.

Кроме того, автор также указывает, что различия возникают из-за методологий, используемых для связи между машинами, таких как Caffe-MPI и CNTK с использованием NCCL2.0, MXNet выбирает связь через сокет TCP, а TensorFlow использует grpc. После анализа NCCL2.0 показал высокую эффективность и низкую задержку.

Новое исследование

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

В 2018 году Sony Corporation[5] установила новый рекорд: они обучили ResNet-50 всего за 224 секунды с точностью проверки 75,03%, используя 2176 графических процессоров Tesla V100. Из таблицы 4 видно, что эта работа завершает тренировку на 172 секунды быстрее и с небольшой потерей точности 0,77%.

Есть два основных подхода, которые помогают преодолеть проблемы, которые мы пришли к выводу, и создать такую ​​​​отличную запись: контроль размера партии и 2 D-Torus All-reduce.

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

Подход 2D-Torus All-reduce основан на предыдущих коммуникационных топологиях, таких как Ring all-reduce и иерархическое Ring all-reduce, чтобы преодолеть ограничения этих топологий. На рис.3 заметно, что это пример 2D-Torus all-reduce. Reduce-scatter выполняется по горизонтали, а all-reduce — по вертикали. Наконец, все сборы выполняются горизонтально. Следует отметить одну вещь: накладные расходы на коммуникацию в 2D-Torus all-reduce меньше, чем в Ring all-reduce.

Новая технология

Для повышения производительности мульти-GPU придуманы новые волшебные технологии. Наиболее популярными двумя сопоставимыми продуктами являются Tesla V100 от Nvidia и Tensor Processing Unit (TPU) от Google.

Согласно Руководству по производительности Tesla V100[6], Tesla V100 — это двигатель современного центра обработки данных, обеспечивающий великолепную производительность при меньшем количестве серверов, низких затратах и ​​уменьшении накладных расходов на сеть. Tesla V100 может помочь в исследованиях в различных областях. , такие как глубокое обучение, молекулярная динамика, квантовая химия, наука о Земле, проектирование и вычислительные финансы. Кроме того, производительность Tesla V100 лучше, чем у предыдущих продуктов. Возьмите глубокое обучение в качестве примера: Caffe, TensorFlow и CNTK работают до 3 раз быстрее с Tesla V100 по сравнению с P100; 100 % лучших фреймворков для глубокого обучения работают с ускорением на GPU; До 125 TFLOPS операций TensorFlow на GPU; До 32 ГБ памяти на GPU; Пропускная способность памяти до 900 ГБ/с на GPU. TPU — специально разработанный чип для глубокого обучения. На официальном сайте Google [7] он был разработан для машинного обучения, поддерживающего их основные продукты, такие как Translate, Photos и Gmail. После выпуска TPUv2 он создается для ИИ в Google Cloud. В то же время это может ускорить итерацию решений машинного обучения.

В этом году проводится сравнение TPUv2 от Google и V100 от Nvidia на ResNet-50[8]. Сравниваются четыре чипа TPUv2 и четыре графических процессора Nvidia V100, и оба они имеют одинаковую общую память 64 ГБ, что может гарантировать, что можно использовать одинаковые размеры пакетов и обучать одну и ту же модель. В этом исследовании используется модель ResNet-50 на наборе данных ImageNet.

Выполняются два сравнения: тест на сходимость и точность.

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

Из рис. 4 видно, что существует незначительная разница в пропускной способности между TPUv2 и V100 при размере пакета 1024. Однако V100 работает лучше, чем TPUv2, в относительно меньшем пакете, таком как 512, 256 и 128. (На самом деле эти настройки размера пакета не рекомендуются для TPUv2)

В тесте на точность и сходимость обучение проводится с размером пакета 1024 для 90 эпох и сравниваются результаты на проверочных данных. Результат показывает разницу в 0,7% между этими двумя реализациями. Хотя TPUv2 работает немного лучше, чем GPU V100, это также указывает на его преимущество, которое может привести к значительным различиям в других аспектах.

В этой статье также приводится анализ стоимости использования нескольких графических процессоров. Согласно таблице 5 очевидно, что Cloud TPU может сэкономить средства.

Кроме того, на рис.6 приведен ценовой анализ определенных критериев времени и точности, которые должны быть соблюдены. Например, стоимость решения, реализованного TPU, с точностью 75,7% составляет 55 долларов, что намного дешевле, чем у V100.

Библиотека глубоких нейронных сетей NVIDIA CUDA® (cuDNN) — это библиотека примитивов с ускорением на графическом процессоре для глубоких нейронных сетей. cuDNN предоставляет хорошо настроенные реализации для стандартных процедур, таких как прямая и обратная свертка, объединение, нормализация и уровни активации[9].

Последняя версия 7.4 имеет следующие особенности: Обучение ResNet-50 и GNMT в 3 раза быстрее на Tesla V100 по сравнению с Tesla P100.

  • Улучшена поддержка NHWC для пулинга и пошаговой свертки.
  • Получите повышенную производительность для обычных рабочих нагрузок, таких как ResNet50 и SSD, поскольку пакетная норма теперь поддерживает макет данных NHWC с добавленной возможностью объединения пакетной нормы с операциями добавления и ReLu.

Кроме того, Caffe™ — это среда глубокого обучения, созданная с учетом гибкости, скорости и модульности. Первоначально он был разработан Berkeley Vision and Learning Center (BVLC) и участниками сообщества[10].

NVCaffe™ — поддерживаемая NVIDIA ответвление BVLC Caffe, настроенное для графических процессоров NVIDIA, особенно в конфигурациях с несколькими графическими процессорами.

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

[1] https://www.nvidia.com/object/multi-gpu-technology.html

[2] Фогал, Т., Чайлдс, Х., Шанкар, С., Крюгер, Дж., Бержерон, Р. Д., и Хэтчер, П. (2010, июнь). Визуализация больших объемов данных на кластерах с распределенной памятью и несколькими GPU. В Материалы конференции по высокопроизводительной графике (стр. 57–66). Еврографическая ассоциация.

[3] Шаохуай Ши и Сяовэнь Чу. 2017. Моделирование производительности и оценка распределенных платформ глубокого обучения на графических процессорах. Препринт arXiv arXiv: 1711.05979 (2017).

[4] https://medium.com/@iliakarmanov/multi-gpu-rosetta-stone-d4fa96162986

[5] Миками Х., Суганума Х., Танака Ю. и Кагеяма Ю. (2018). Обучение ImageNet/ResNet-50 за 224 секунды. препринт arXiv arXiv:1811.05233

[6] https://www.nvidia.com/content/dam/en-zz/Solutions/Data-Center/tesla-product-literature/v100-application-performance-guide.pdf

[7] https://cloud.google.com/tpu/

[8] https://blog.riseml.com/comparing-google-tpuv2-against-nvidia-v100-on-resnet-50-c2bbb6a51e5e

[9] https://docs.nvidia.com/deeplearning/sdk/cudnn-developer-guide/index.html

[10] https://docs.nvidia.com/deeplearning/dgx/caffe-user-guide/index.html