задний план
В качестве основной технологии в эпоху искусственного интеллекта глубокое обучение применялось во многих сценариях. На уровне проектирования системы из-за его интенсивного вычислительного характера существует много отличий от традиционных алгоритмов машинного обучения в инженерной практике. В этой статье будет представлен некоторый опыт системного проектирования платформы Meituan в процессе применения технологии глубокого обучения.
В этой статье сначала будет перечислено количество вычислений, необходимых для некоторых алгоритмов глубокого обучения, а затем представлены некоторые распространенные в отрасли решения для удовлетворения этих объемов вычислений. Наконец, мы представим опыт платформы Meituan в разработке связанных систем в области NLU и распознавания речи.
Вычислительный объем глубокого обучения
Model | Input Size | Param Size | Flops |
---|---|---|---|
AlexNet | 227 x 227 | 233 MB | 727 MFLOPs |
CaffeNet | 224 x 224 | 233 MB | 724 MFLOPs |
VGG-VD-16 | 224 x 224 | 528 MB | 16 GFLOPs |
VGG-VD-19 | 224 x 224 | 548 MB | 20 GFLOPs |
GoogleNet | 224 x 224 | 51 MB | 2 GFLOPs |
ResNet-34 | 224 x 224 | 83 MB | 4 GFLOPs |
ResNet-152 | 224 x 224 | 230 MB | 11 GFLOPs |
SENet | 224 x 224 | 440 MB | 21 GFLOPs |
Источники данныхВ приведенной выше таблице указан размер модели общих алгоритмов распознавания изображений ImageNet и объем вычислений, необходимых для одного прохода одного изображения.
С 2012 года ученик Хинтона Алекс Крижевский предложил AlexNet и одним махом завоевал корону ILSVRC 2012, точность чемпиона соревнований ILSVRC становилась все выше и выше. При этом используемые в них алгоритмы глубокого обучения становятся все более сложными, а также увеличивается объем необходимых вычислений. По сравнению с AlexNet, SENet требует почти в 30 раз больше вычислений. Мы знаем, что ImageNet содержит около 1,2 миллиона изображений.В качестве примера возьмем SENet, если вы хотите завершить полное обучение 100 эпох, потребуется 2,52 * 10 ^ 18 вычислений. Такой огромный объем вычислений намного превышает возможности традиционных алгоритмов машинного обучения. Не говоря уже о том, что Google находится в газете«Пересмотр необоснованной эффективности данных в эпоху глубокого обучения»Набор данных, упомянутый в , в 300 раз больше, чем у ImageNet.
физическая вычислительная производительность
Столкнувшись с таким огромным объемом вычислений, какова вычислительная мощность вычислительных блоков, обычно используемых в нашей отрасли?
- Физическое ядро ЦП: общая вычислительная мощность с плавающей запятой составляет порядка 10 ^ 10 FLOPS. Сервер с 16 ядрами имеет примерно 200 гигафлопс вычислительной мощности. В реальной работе ЦП может использовать около 80% производительности, то есть вычислительную мощность 160 GFLOPS. Вышеупомянутый запуск SENet занял 182 дня.
- NVIDIA GPGPU: текущий V100, пиковое значение операций с плавающей запятой одинарной точности составляет около 14 TFLOPS.В реальной работе мы предполагаем, что может быть использовано 50% пиковой производительности, то есть 7 TFLOPS, что занимает 4 дня. .
Согласно приведенным выше результатам данных видно, что в области глубокого обучения наборы обучающих данных графического процессора занимают гораздо меньше времени, чем процессоры, что также является важной причиной, по которой графические процессоры в настоящее время используются для обучения глубокому обучению.
Отраслевые решения
Как видно из предыдущих расчетов, даже если для расчета используется GPU, однократное обучение ImageNet занимает 4 дня. Но для инженеров-алгоритмистов, которые проводят эксперименты и корректируют параметры, такое ожидание в течение нескольких дней невыносимо. С этой целью отрасль предложила различные решения для ускорения обучения глубокому обучению.
Параллельная схема для гетерогенных вычислений
Параллелизм данных
Параллелизм данных, то есть каждый вычислительный блок хранит полную копию модели, обучает разные данные отдельно и синхронизирует модели каждого вычислительного блока после одной итерации или нескольких итераций. Это самый распространенный метод обучения глубокому обучению, преимуществами которого являются простая логика и удобная реализация кода.Параллелизм модели
Модельный параллелизм, то есть каждый вычислительный блок хранит разные части одного и того же уровня данных модели и обучает одни и те же данные. По сравнению с параллелизмом данных, поскольку каждый вычислительный блок должен синхронизироваться один раз после обучения слоя нейронной сети, частая синхронная связь приводит к тому, что система не полностью использует вычислительную мощность оборудования, поэтому это происходит еще реже. Однако в некоторых бизнес-сценариях может быть много категорий, которые необходимо классифицировать на уровне Softmax, в результате чего уровень Softmax становится слишком большим для хранения в одном вычислительном блоке.В настоящее время модель необходимо разрезать на несколько частей. и хранятся в разных вычислительных устройствах. Параллелизм моделей распространен в NLU, рекомендациях, финансах и других областях.Потоковый параллелизм
Потоковый параллелизм, то есть каждый вычислительный блок хранит данные модели разных слоев и обучает одни и те же данные. Как показано на рисунке выше, GPU1 отвечает только за расчет первого слоя нейронной сети, GPU2 отвечает только за расчет 2–5 слоев нейронной сети, а GPU3 отвечает только за расчет шестого слоя. . Преимущество потокового параллелизма заключается в том, что связь и вычисления перекрываются между каждым вычислительным блоком, который при правильной настройке может очень эффективно использовать аппаратные ресурсы. Недостатком является то, что, согласно различным моделям, количество вычислений каждого вычислительного блока должно быть сбалансировано, Если конфигурация не является хорошей, легко сформировать «затухшее озеро». Как показано на рисунке выше, очень вероятно, что GPU1 отвечает за слишком мало вычислений, а GPU2 отвечает за слишком много вычислений, что приводит к блокировке большого количества мини-пакетов между GPU1 и GPU2, что чаще встречается в онлайн-среды.Гибридный параллелизм
Гибридный параллелизм, то есть смесь упомянутых выше параллельных методов. Например, для некоторых задач распознавания изображений параллелизм данных может использоваться для первых нескольких слоев, а параллелизм моделей — для последнего слоя Softmax.Аппаратные решения для гетерогенных вычислений
- Одна машина и одна карта: вычислительная карта GPU установлена на хосте. Обычно встречается в персональных компьютерах.
- Одна машина с несколькими картами: установите несколько вычислительных карт GPU на один хост. Обычные: 1 машина с 4 картами, 1 машина с 8 картами и даже 1 машина с 10 картами. Общие компании приняли это аппаратное решение.
- Несколько компьютеров и несколько карт: установите несколько вычислительных карт GPU на несколько хостов. Это распространено в вычислительном кластере внутри компании.Как правило, Infiniband используется между несколькими компьютерами для реализации быстрой связи в сети.
- Настройка: то есть аналогично решению TPU от Google. Обычно встречается в компаниях «Биг Мак».
Коммуникационные решения для гетерогенных вычислений
В соответствии с приведенным выше аппаратным решением мы берем ResNet в качестве примера: размер модели составляет 230 МБ, объем расчета одного изображения — 11 GFLPOS, а мини-пакет — 128. Можно рассчитать трудоемкое сравнение каждого аппаратного модуля в обучении глубокому обучению:
- GPU: для V100, предполагая 6 TFLOPS, теоретическое время одного мини-пакета: 0,23 с.
- PCI-E: Common PCI-E 3.0 * 16, скорость 10 ГБ/с, теоретическое время передачи модели: 0,023 с.
- Сеть: если предположить, что скорость сети составляет 10 ГБ/с, теоретическое время передачи модели: 0,023 с.
- Диск: Обычный диск, мы предполагаем скорость чтения 200 МБ/с, время, необходимое для однократного чтения мини-пакета: 0,094 с.
По приведенным выше данным можно сделать вывод: время PCI-E и передачи по сети на порядок меньше, чем у GPU, поэтому временем на синхронизацию сетевых коммуникаций можно пренебречь. Однако проблема не так проста, в приведенном выше примере времязатратно только время одной модели, но для кластера из 8 карт, если используется параллелизм данных, необходимо передать 8 моделей для каждой синхронизация, которая приводит к передаче данных.Время и время вычислений GPU «соответствуют». В этом случае GPU должен ждать в течение длительного периода времени (используя синхронное обновление) после обучения мини-пакета, что приведет к трате большого количества вычислительных ресурсов. Следовательно, сетевые коммуникации также нуждаются в разработке соответствующих решений. Ниже в качестве примера мы возьмем коммуникационное решение для одной машины и нескольких карт в Nvidia NCCL, и решение для связи между несколькими машинами и несколькими картами на самом деле похоже.
На картинке выше изображена автономная машина с картами 4. С точки зрения аппаратного обеспечения, есть две разные системы связи. Слева — обычная связь PCI-E, то есть кольцо формируется между 4 GPU. Справа связь NVLink, то есть они соединены друг с другом. Распространенные типы связи показаны на следующем рисунке:Для обучения глубокому обучению используются два ключевых типа связи: широковещательная передача и сокращение. Широковещательная рассылка используется мастером для распространения последней модели на каждый графический процессор. Уменьшение используется для суммирования значения обновления модели для мастера после того, как каждый графический процессор вычислит мини-пакет. Возьмем в качестве примера широковещательную передачу. Самый простой метод связи для Мастера - отправить данные на каждый графический процессор. Это трудоемкое время - это время, необходимое для передачи 4 моделей, и время связи будет слишком большим. Простой метод оптимизации показан на следующий рисунок:То есть данные, которые нужно передать, делятся на несколько блоков, а затем передаются один за другим с помощью ретрансляции, и каждый GPU отправляет свой последний блок данных на следующую карту GPU. Этот метод передачи может в полной мере использовать структуру связи на аппаратном уровне, так что требуемое время значительно сокращается. Таким же образом можно ускорить и оптимизацию связи в Reduce.Индивидуальная система глубокого обучения Meituan
Хотя в отрасли было запущено много известных обучающих платформ для глубокого обучения, общие учебные платформы, такие как TensorFlow, MxNet и т. д., а также специализированные учебные платформы, такие как Kaldi для распознавания речи, но после исследований мы решили быть независимым. Разрабатывайте систему глубокого обучения по следующим причинам:
- В общей обучающей платформе отсутствуют функции, специфичные для предметной области. Например, модули извлечения признаков и алгоритмы распознавания речи.
- Общая обучающая платформа обычно основана на графе потоков данных для моделирования каждого оператора в графе вычислений, поэтому степень детализации мала, необходимо запланировать множество единиц, а планирование задач усложнено.
- Учебные платформы предметной области, такие как Kaldi, имеют недостаточную производительность при обучении нейронных сетей.
- В онлайн-бизнесе много специальностей, но если вы используете TensorFlow в качестве обучающей платформы, он не подходит для онлайн-бизнес-сценариев.
Онлайн-система НЛУ
Бизнес-характеристики онлайн-системы
Когда мы разрабатывали онлайн-систему NLU, мы учитывали некоторые характеристики бизнеса NLU. Установлено, что он обладает следующими характеристиками:
- По мере изменения бизнеса и технологий часто меняются и алгоритмические процессы.
- Поток алгоритмов состоит из нескольких последовательных алгоритмов, а не только алгоритмов глубокого обучения. Такие алгоритмы, как сегментация слов, не являются алгоритмами DL.
- Для того, чтобы иметь возможность оперативно реагировать на какие-то срочные проблемы, требуются частые горячие обновления модели.
- Что еще более важно, мы хотим построить автоматический итеративный замкнутый цикл, который может управляться данными.
изменчивый бизнес
Алгоритмический поток задач NLU является многоуровневым, и бизнес часто меняется. Как показано ниже:
То есть, с изменением бизнес-требований, процесс алгоритма системы NLU вначале должен разделить запрос только на две категории, но позже, весьма вероятно, что его нужно будет разделить на три категории.Горячее обновление
В соответствии с потребностями бизнеса или для срочного решения некоторых особых проблем онлайн-система NLU часто должна быстро реагировать и оперативно обновлять модель алгоритма. Например, недавнее модное слово «скр» внезапно стало популярным почти за одну ночь. Как показано в следующем микроблоге, если вы не можете правильно понять правильную семантику «skr», вы не сможете точно понять значение этого микроблога.
Чтобы не влиять на работу пользователей, мы можем немедленно обновить систему NLU и срочно запустить новую модель.Автоматический итеративный замкнутый цикл, управляемый данными
Для онлайн-систем создание автоматического итеративного замкнутого цикла, как показано на рисунке выше, может лучше использовать бизнес-данные для повышения качества обслуживания.Основной дизайн онлайн-системы NLU
Абстракция потока алгоритма
Чтобы адаптироваться к последовательному и изменчивому потоку алгоритмов онлайн-системы, мы абстрагируем алгоритм онлайн-системы, как показано на следующем рисунке:
То есть каждый алгоритм зависит от нескольких слотов и ресурсов, как только слоты и ресурсы будут на месте, будет запущено выполнение соответствующего алгоритма. Выполнение алгоритма сначала адаптирует данные в слотах и ресурсах через адаптер алгоритма и преобразует их во входной формат оператора. Затем оператор выполняет сам алгоритм, а после выполнения оператора проходит через парсер алгоритма. Парсер алгоритма в основном используется для анализа результата выполнения алгоритма и запуска соответствующего слота. Например, по результатам работы алгоритма срабатывают результаты Топ-3. Несколько алгоритмов объединяются для получения следующих результатов:Дизайн процесса горячего обновления
Как показано на рисунке выше, мы разрабатываем процесс горячего обновления алгоритма, как указано выше. Исходное тестовое состояние — верхний левый угол, то есть несколько запросов используют одни и те же данные модели. При обнаружении запроса на обновление модели система блокирует новый запрос (статус в правом верхнем углу). Затем после обновления модели новый запрос использует новую модель, а старый запрос по-прежнему использует старую модель (статус в правом нижнем углу). Наконец, когда запрос с использованием старой модели завершится, удалите старую модель из памяти (нижний левый угол), а затем восстановите систему в исходное состояние.Система обучения акустической модели
Потому что в обучающих платформах глубокого обучения общего назначения, таких как TensorFlow, отсутствуют функции предметной области, связанные с бизнесом, такие как извлечение признаков, а процесс обучения акустической модели Kaldi слишком медленный. Поэтому Meituan разработала систему обучения акустической модели Mimir, которая имеет следующие особенности:
- Использование более детализированного модуля моделирования, чем TensorFlow, делает планирование задач и оптимизацию более простыми и удобными.
- Используя параллельную схему с параллельными данными, одна машина с несколькими картами может достичь почти линейного ускорения. (При стратегии синхронного обновления коэффициент ускорения 4 карт достигает 3,8)
- Перенесены некоторые уникальные алгоритмы обучения Kaldi.
- Скорость в 6-7 раз выше, чем у Kaldi. (800 часов тренировочных данных, при условии одной машины и одной карты, Kaldi требуется 6-7 дней, Mimir требуется всего 20 часов)
- С точки зрения бизнеса, связанные модули в извлечении признаков Kaldi и других областях были перенесены.
использованная литература
- NCCL: ACCELERATED MULTI-GPU COLLECTIVE COMMUNICATIONS
- [Глубокое обучение] Лекция учителя Вуда Архитектура: технологическая эволюция платформ глубокого обучения
об авторе
Цзянь Пэн, эксперт по алгоритму Meituan Dianping. Он присоединился к Meituan в 2017 году и в настоящее время возглавляет группу по акустической модели распознавания речи, отвечая за проектирование и разработку алгоритмов и систем, связанных с акустической моделью.