СТАТЬЯ

Шаблон сервера параметров: тегирование сущностей в 8 миллионах видео на YouTube

Из книги Шаблоны распределенного машинного обучения Юань Танга

В этой статье мы представляем шаблон сервера параметров, который удобен в ситуациях, когда модель слишком велика, чтобы поместиться на одной машине, например той, которую нам пришлось бы построить для пометки сущностей в 8 миллионах видео на YouTube.

Получите скидку 35 % на Распределенные шаблоны машинного обучения, введя fcctang в поле для кода скидки при оформлении заказа на сайте manning.com.

Предположим, что у нас есть набор данных YouTube-8M, состоящий из миллионов идентификаторов видео YouTube, с высококачественными машинными аннотациями из разнообразного словаря из более чем 3800 визуальных объектов (таких как еда, машина, музыка и т. д.). ), как показано на рисунке 1, и мы хотим обучить модель машинного обучения помечать основные темы новых видео на YouTube, которые модель еще не видела.

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

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

Когда оценщики идентифицируют объекты в видеороликах, им дается руководство по оценке того, насколько конкретным и визуально узнаваемым является каждый объект, по дискретной шкале от 1 до 5, где 1 может быть легко идентифицирован непрофессионалом, как показано на рисунке 2. .

Используя онлайн-обозреватель наборов данных, предоставленный YouTube-8M, мы увидим список объектов с количеством видео, принадлежащих каждому объекту, справа от имени его объекта, как показано на рисунке 3.

Обратите внимание, что в обозревателе наборов данных объекты упорядочены по количеству видео в каждом объекте. Мы увидим, что тремя самыми популярными объектами являются Game, Video Game и Vehicle, соответственно, в диапазоне от 415 890 до 788 288 обучающих примеров. Реже всего — «Цилиндр» и «Момета» — 123 и 127 обучающих видео соответственно.

Проблема

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

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

Решение

Давайте сначала посмотрим на некоторые объекты с помощью обозревателя данных на веб-сайте YouTube-8M и посмотрим, есть ли какие-либо отношения между объектами. Например, эти объекты не связаны друг с другом или они имеют некоторый уровень перекрытия в содержании? После некоторого исследования мы внесем необходимые коррективы в модель, чтобы учесть эти отношения.

На рис. 4 показан список видео YouTube, принадлежащих объекту Pet. Например, в третьем видео первого ряда есть ребенок, играющий с собакой.

Давайте посмотрим на подобное существо. На рис. 5 показан список видео YouTube, принадлежащих объекту Animal. Мы можем видеть животных, таких как рыбы, лошади и панды в этом объекте. Интересно, что в третьем ролике пятого ряда есть кот, которого чистят пылесосом. Можно предположить, что это видео, вероятно, также относится к сущности «Домашнее животное», поскольку кошка также может быть домашним животным, если ее усыновили люди.

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

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

Например, если мы используем только 10 из 3862 объектов и создаем модель LeNet5, как показано на рис. 6, которая может классифицировать новые видео YouTube по одному из 10 выбранных объектов. На высоком уровне LeNet состоит из сверточного кодера, состоящего из двух сверточных слоев, и плотного блока, состоящего из трех полносвязных слоев. Для простоты в этом случае мы предполагаем, что каждый отдельный кадр из видео представляет собой изображение 28 × 28, и оно будет обрабатываться различными слоями свертки и объединения, которые изучают базовое сопоставление функций между аудиовизуальными функциями и объектами.

ПРИМЕЧАНИЕ Краткая история LeNet

LeNet — одна из первых опубликованных сверточных нейронных сетей (CNN), которая привлекла широкое внимание своей производительностью в задачах компьютерного зрения. Он был представлен Яном ЛеКуном, который был исследователем в AT&T Bell Labs для распознавания рукописных цифр на изображениях. В 1989 году ЛеКун опубликовал первое исследование, в котором успешно обучались CNN с помощью обратного распространения после десятилетия исследований и разработок.

В то время LeNet добился выдающихся результатов, соответствующих производительности машин опорных векторов (SVM), которые являются доминирующим подходом в алгоритмах машинного обучения с учителем.

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

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

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

В этом случае мы можем использовать один выделенный сервер для хранения всех параметров модели LeNet и использовать несколько рабочих машин для разделения вычислительных нагрузок. Схема архитектуры показана на рисунке 7.

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

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

Далее идет реальный вызов. Модели глубокого обучения часто становятся очень сложными, и поверх базовой модели могут быть добавлены дополнительные слои с настраиваемой структурой. Эти сложные модели обычно занимают много места на диске из-за большого количества параметров модели в этих дополнительных слоях и требуют много вычислительных ресурсов, чтобы удовлетворить требования к объему памяти, который в конечном итоге приведет к успешному обучению. Что делать, если модель очень большая и мы не можем разместить все ее параметры на одном сервере параметров?

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

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

С помощью серверов параметров мы могли бы эффективно решать проблемы, возникающие при построении модели машинного обучения для пометки основных тем новых видео на YouTube, которые модель раньше не видела. Например, на рис. 9 показан список видеороликов YouTube, которые не используются для обучения модели, и они были успешно помечены темой «Самолет» обученной моделью машинного обучения. Даже когда модель может быть слишком большой, чтобы поместиться на одной машине, мы все равно можем успешно обучить модель.

Обсуждение

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

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

Упражнения

  1. Если мы хотим обучить модель с несколькими процессорами или графическими процессорами на одном ноутбуке, считается ли это распределенным обучением?
  2. Каков результат увеличения количества рабочих процессов или серверов параметров?
  3. Какие типы вычислительных ресурсов (например, процессоры/графические процессоры/память/диск) мы должны выделять серверам параметров и сколько из этих различных типов ресурсов мы должны выделять?

Это все для этой статьи. Если вы хотите увидеть больше, ознакомьтесь с книгой на платформе Мэннинга liveBook здесь.