Введение

Глубокое обучение (DL) стало популярным, поскольку оно показало свою эффективность в предложении приемлемых решений для таких приложений, как классификация изображений, обработка естественного языка, обнаружение объектов и многое другое. Задачи глубокого обучения требуют огромной вычислительной мощности. Это задачи, требующие вычислений с плавающей запятой. Они обучаются и обслуживаются на GPU с массовым параллелизмом или других ускорителях, таких как TPU Google. Компьютерные архитекторы предложили большое количество ускорителей для облегчения их вычислений. Предлагаемые механизмы обычно ориентированы на узкие области применения, что не снижает их ценности. Однако для более гибких архитектур необходимо изучить характеристики современных моделей по всему DL. Fathom [1] собирает набор из восьми рабочих нагрузок DL для изучения их характеристик и поведения.

Характеристики выбранных рабочих нагрузок

Роберт Адольф и др. в [1] укажите три свойства рабочих нагрузок, которые попадают в пакет. Эти свойства: (1) Репрезентативность, (2) Разнообразие и (3) Влияние. (1) Набор эталонных тестов должен отражать лучшее из того, что придумало сообщество DL. (2) Каждая модель должна привносить что-то уникальное, чтобы сохранить разнообразие. (3) Воздействие — это степень, в которой конкретный метод изменил ландшафт исследований глубокого обучения.

Рабочие нагрузки Fathom Suite

1. Перевод последовательности в последовательность

seq2seq — это рекуррентная нейронная сеть (RNN) для решения задач машинного перевода. Он был разработан в Google в 2014 году и использует многоуровневый конвейер нейронов долгой кратковременной памяти (LSTM) для извлечения значения предложения, а затем его повторной передачи на другом языке[2, 3].

2. Сквозные сети памяти

Сети памяти отделяют состояние от структуры в нейронной сети [4]. Развитие сетей памяти связано с трудностями, с которыми нейроны с состоянием сталкиваются при захвате долгосрочных зависимостей. Исследовательская группа Facebook по искусственному интеллекту решила эту проблему, объединив косвенно адресуемую память с нейронной сетью, в результате чего была создана модель, которая может явно хранить и вызывать информацию. Сквозные сети памяти [5] — это расширение, которое устраняет необходимость в аннотациях типов для входных данных и значительно упрощает обучение (обработку естественного языка).

3. Глубокая речь

Это была попытка Baidu Research разработать масштабируемую модель распознавания речи [6]. Он использует функцию потерь Connectionist Temporal Classification (CTC), которая может учиться на несегментированных данных, что значительно снижает стоимость создания обучающих данных.

4. Вариационный автоэнкодер

Кодировщики – это гибкие неконтролируемые модели, которые часто используются для определения размерности, извлечения признаков или создания данных [7]. Вариационные кодировщики, изобретенные в 2013 году, делают статистические предположения о свойствах реальных данных, чтобы научиться эффективно восстанавливать их входные данные [8].

5. Остаточные сети

Остаточные сети стали важной вехой в создании очень глубоких нейронных сетей (более 150 слоев) [9].

6. ВГГ-19

Это реализация 19-слойной сверточной сети, разработанной группой визуальной геометрии в Оксфорде [10]. Он был вдохновлен успехом AlexNet. Ключевой вывод заключался в том, что большее количество слоев сверточных фильтров меньшего размера легче обучить, что повысило точность и значительно сократило количество обучаемых параметров.

7. АлексНет

Эта модель считается одним из важных событий в истории глубокого обучения [11].

8. Глубокое обучение с подкреплением

DeepMind удивил сообщество ИИ в 2013 году системой глубокого обучения с подкреплением, которая научилась выигрывать десятки игр Atari исключительно благодаря пикселям и очкам. В отличие от обучения с учителем, алгоритм улучшает выбранные действия, получая обратную связь в игре, а не наблюдая за всей игрой. Архитектура метода представляет собой сверточную сеть, которая выбирает действия, используя 2–3 сверточных слоя и 2–3 плотных слоя [12].

Понимание характеристик производительности рабочих нагрузок DL

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

Измерение и анализ в рамках DL Framework

Авторы используют операции как основную абстракцию для понимания производительности моделей Fathom. Операция — это узел в крупнозернистом графе потока данных, который определяет модель TensorFlow. Он реализован как функция Python, которая дает указание фреймворку построить этот узел, а также функция C++, которая либо выполняет расчет, либо вызывает низкоуровневую библиотеку для выполнения расчета. Библиотекой низкого уровня может быть либо пакет линейной алгебры Eigen на процессоре, либо библиотека CUDA, такая как cuBLASили cuDNNна графическом процессоре. Операции — это наименьшая планируемая единица в среде выполнения TensorFlow. Примеры включают такие функции, как двумерное матричное умножение (MatMul), поэлементное возведение тензора в степень (Pow) или специализированные функции, такие как выборка из нормального распределения (StandardRandomNormal). strong>) или вычисление функции потерь для конкретного алгоритма оптимизации (CrossEntropy).

Профилирование типа операции

Самый простой вопрос о производительности, который нужно задать о рабочей нагрузке, — это то, на что тратится время. Это зависит от рассматриваемой модели, среды и варианта использования. На следующем рисунке показано, что несколько типов тяжелых операций (обычно от 5 до 15) в совокупности ответственны за более чем 90% продолжительности программ. Каждая точка на каждой кривой представляет совокупный вклад во время выполнения одного типа операции.

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

Некоторые выводы из экспериментов авторов:

  1. В сверточных нейронных сетях действительно преобладают свертки.
  2. Полносвязные сети сильно зависят от умножения матриц.
  3. Разбивка операций alexnet, vgg и residual показывает, что сверточные сети стали глубже и что большинство операций являются свертками. Кроме того, с течением времени доля полностью подключенных университетов снижается.
  4. речевая модель, как предложили ее авторы, намеренно избегает использования более сложных компонентов в пользу структурно простых, легко оптимизируемых сетей. Как показано на рисунке выше, эта модель скомпрометирована почти исключительно операциями матричного умножения.

Сходство производительности

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

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

Большая разница между двумя рекуррентными сетями, речью и seq2seq была бы немного интересной. Хотя обе сети являются рекуррентными, Deep Speech использует потерю CTC и стек слабо связанных нейронов, в отличие от нейронов LSTM с отслеживанием состояния и стандартной потери кросс-энтропии, используемой в модели перевода последовательности в последовательность. Поэлементные умножения в seq2seq являются результатом нейронов LSTM, а операции перемещения данных являются частью используемого кодировщика/декодера на основе внимания.

Обучение и вывод

На следующем рисунке авторы показывают разницу между нормализованным временем выполнения фаз обучения и вывода.

Параллелизм и баланс операций

На следующем рисунке авторы выделяют три модели в соответствии с их доминирующими операциями и влиянием параллелизма на каждую из них. Они резюмируют усвоенный урок следующим образом:

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

Рекомендации

[1] Адольф, Роберт и др. «Fathom: эталонные рабочие нагрузки для современных методов глубокого обучения». Международный симпозиум IEEE по характеристике рабочих нагрузок (IISWC), 2016 г.. IEEE, 2016.

[2] Суцкевер, Илья, Ориол Виньялс и Куок В. Ле. «Последовательное обучение с помощью нейронных сетей». Достижения в области нейронных систем обработки информации. 2014.

[3] Богданау, Дмитрий, Кёнхён Чо и Йошуа Бенгио. «Нейронный машинный перевод путем совместного обучения выравниванию и переводу.» препринт arXiv arXiv:1409.0473 (2014).

[4] Уэстон, Джейсон, Сумит Чопра и Антуан Бордес. «Сети памяти». препринт arXiv arXiv:1410.3916 (2014).

[5] Сухэ-Батор, Сайнбаяр и др. «Сквозные сети памяти.» препринт arXiv arXiv:1503.08895 (2015).

[6] Ханнун, Авни и др. «Deep Speech: масштабирование сквозного распознавания речи.» препринт arXiv arXiv:1412.5567 (2014).

[7] Хинтон, Джеффри Э. и Руслан Р. Салахутдинов. «Уменьшение размерности данных с помощью нейронных сетей.» наука 313.5786 (2006): 504–507.

[8] Кингма, Дидерик П. и Макс Веллинг. «Стохастический градиент VB и вариационный автоматический кодировщик.» Вторая международная конференция по обучающим представлениям, ICLR. Том. 19. 2014.

[9] Хе, Кайминг и др. «Глубокое остаточное обучение для распознавания изображений». Материалы конференции IEEE по компьютерному зрению и распознаванию образов. 2016.

[10] Симоньян, Карен и Эндрю Зиссерман. «Очень глубокие сверточные сети для крупномасштабного распознавания изображений.» препринт arXiv arXiv:1409.1556 (2014).

[11] Крижевский, Алекс, Илья Суцкевер и Джеффри Э. Хинтон. «Классификация Imagenet с использованием глубоких сверточных нейронных сетей.» Достижения в системах обработки нейронной информации 25 (2012): 1097–1105.

[12] Беллемар, Марк Г. и др. «Игровая среда обучения: оценочная платформа для обычных агентов». Journal of Artificial Intelligence Research 47 (2013): 253–279.