Для получения дополнительных галантерейных товаров, пожалуйста, обратите внимание на публичный аккаунт WeChat «AI Frontline» (ID: ai-front)
Рекомендуемый поток каналов для домашней страницы браузера QQ. Деловой вход показан на рисунке:
Рис. 1. QB Feeds Стриминговый бизнес
Ежедневный журнал показа кликов в потоке веб-каналов браузера исчисляется десятками миллиардов; чтобы лучше предоставлять пользователям услуги персонализированных рекомендаций, если мы возьмем данные за полмесяца для обучения модели рекомендаций, мы столкнемся с тысячей миллионов образцов.
Рис. 2. Кривая временного спада онлайн-производительности модели.
Кроме того, для обученной модели мы наблюдаем изменение показателей в режиме онлайн, как показано на рисунке. На этом рисунке показано, что наш бизнес потоковой передачи фидов очень чувствителен ко времени, а модели доступа пользователей к сети меняются в режиме реального времени.Для достижения наилучших бизнес-результатов мы должны постоянно и своевременно обновлять модель. Другой бизнес браузера, Shihuajun, нуждается в предварительном обучении модели классификации изображений с несколькими категориями с миллионами изображений.Если используется одномашинный и однокарточный режим, обучение конвергентной модели займет около полумесяца. ; если вы используете TensorFlow, на распределенное обучение также уходит около недели.Есть ли более эффективный метод?
Для этих двух бизнес-сценариев давайте проведем технический анализ, чтобы увидеть, есть ли решения.
В сценариях, где образцы можно получить по низкой цене, таких как реклама и сценарии оценки CTR в потоках фидов, поскольку мы можем получить большое количество положительных и отрицательных образцов по низкой цене без маркировки, это побудит нас попытаться извлечь уроки из этого. большое количество образцов достаточно знаний.
Какая модель алгоритма может извлечь достаточно информации из массивных данных? Начиная с теории размерности VC, мы знаем, что информация, которую может содержать модель, ограничена.На следующем рисунке показана взаимосвязь между количеством выборок, масштабом модели и эффектом модели.Здесь мы используем эффект модели, чтобы отразить количество информации что модель может хранить.Исходя из предположения, что если модель узнает больше информации из того же масштаба данных, то я думаю, что она будет работать лучше в бизнесе. Есть, конечно, очень тонкие условия для этого предположения, но я не буду вдаваться в них здесь.
Рис. 3. Взаимосвязь между информацией о модели, образцами и масштабом модели
Из этого рисунка мы можем интуитивно сделать вывод, что для сценариев, в которых можно легко получить большие выборки, нам нужно использовать модель, достаточно большую для размещения информации. Чтобы не быть слишком интуитивным, здесь я приведу пример, взяв в качестве примера бизнес потоковой передачи каналов на уровне миллиарда, если пользователи нажимают более 100 миллионов в день, pv пользователей за один день может быть 500-1000. миллионов или даже больше; если мы возьмем полмесяца данных для обучения модели прогнозирования CTR, задействованный размер выборки составит около 20 миллиардов (не учитывая предварительное уменьшение выборки), и если параметры нашей модели в 10 раз превышают выборку (этот диапазон не преувеличено), количество параметров нашей модели составляет 200 миллиардов, каждый параметр представлен четырьмя байтами, наша модель достигнет около 1 ТБ, если мы используем двойную точность, она будет близка к 2 ТБ.
Как можно обучить модель такого масштаба? Как сделать онлайн-обслуживание? Как хранятся 200 миллиардов оригинальных образцов? Ответ однозначен: нам нужна распределенная система.
Это еще один сценарий, Взяв в качестве примера бизнес по классификации изображений, нам нужно классифицировать помеченный набор данных изображений по тысячам категорий с помощью модели. Я предполагаю 1000w картинок для набора данных, на первый взгляд кажется, что это имеет мало общего с большими данными, всего 10 миллионов, но учтите, что это картинка, если рассматривать каждый пиксель картинки как образец, это данные будут большими, почему вы так говорите? Потому что, когда мы используем сети типа CNN для обучения, изображения изначально вводятся в пикселях; да, большие данные здесь на самом деле хотят выразить требования к вычислительной мощности.
Если мы обучим эту классификационную модель на одной машине и одной карте (GPU) (в качестве примера возьмем resnet-101), это может занять 2-3 недели; это действительно «Если родственники и друзья в Лояне спросят друг друга, просто скажите Я провожу тренировки». Студентов, изучающих алгоритмы, очевидно, очень расстраивает, если нам приходится ждать результата модели 3 недели. Так есть ли у нас возможности сократить это время до уровня дней или даже часов? Ответ тот же: нужна распределенная система.
Вышеуказанные два сценария могут быть лишь небольшой частью многих бизнес-сценариев Goose Factory, но я считаю, что они в определенной степени репрезентативны. Общий ответ здесь таков: нам нужна распределенная система для решения инженерных задач, возникающих в бизнес-сценариях. С точки зрения стоимости машины мы вряд ли настроим одну машину, которая может удовлетворить потребности; с точки зрения стоимости рабочей силы мы также вряд ли потерпим сверхнеэффективность скорости обучения модели; поэтому используйте относительно дешевые машины для создания Распределенная система для нужд машинного обучения — наш единственный вариант.
Распределенная система машинного обучения, как следует из названия, похожа на распределенную файловую систему и распределенную фоновую службу. случай для сценариев машинного обучения.Распределенная система относительно дешевых машин (это дерьмо). Итак, по сравнению с традиционными распределенными системами, каковы уникальные характеристики распределенных систем машинного обучения? Какие знания алгоритмов и инженерное мышление необходимы для разработки таких систем?
Большое отличие от традиционных распределенных систем заключается в том, что традиционные распределенные системы ориентированы на операции, на примере систем хранения традиционные распределенные файловые системы абсолютно не могут принять блок данных, записанный не в том месте.
Рисунок 4 Система, ориентированная на эксплуатацию
Разница в том, что если мы будем иметь дело с задачами распределенного машинного обучения с эксплуатационно-ориентированными требованиями, то результат будет довольно трагичным. С нашими нынешними вычислительными мощностями мы не сможем выполнить требования в приемлемое время. крупная модель. Однако, когда Бог закрывает дверь, он может поднять для вас крышу, сами модели машинного обучения и алгоритмы обладают достаточной отказоустойчивостью, и если вы сбросите образец или градиент, это не повлияет на конечную сходимость модели. дает выход для распределенных систем машинного обучения, которые я буду называть системами, ориентированными на конвергенцию.
Рис. 5. Система, ориентированная на конвергенцию.
Как показано на рисунке 3, система, ориентированная на конвергенцию, похожа на спуск с горы. Существует бесчисленное множество способов спуститься с горы. гора.
Благодаря характеристикам самого алгоритма машинного обучения, распределенная система машинного обучения имеет большие возможности для действий с точки зрения передачи данных, протокола синхронизации, аварийного восстановления и т. д. по сравнению с традиционной распределенной системой, которая также закладывает основу для нашей стремление к максимальной производительности. Для общения, заинтересованного в протоколе связи и синхронизации распределенных систем машинного обучения, обратитесь к предыдущей работе [1] и связанным статьям Эрика. Далее давайте ознакомимся с доступными системными архитектурами для обоих сценариев!
Что касается сервера параметров, то в моей предыдущей работе [1] уже много обсуждалось, и я не буду здесь его подробно раскрывать, а только дам краткое введение.Студенты, которые хотят узнать о нем больше, пожалуйста, следуйте картинке согласно [ 1].
Рис. 6 Схематическая диаграмма архитектуры сервера параметров
Как показано на рисунке, сервер параметров логически разделен на две роли: сервер и рабочий; сервер отвечает за хранение параметров модели, а каждый узел отвечает за фрагментацию параметров; рабочий отвечает за расчет данных, участвующих в фрагментации данных. по разным фрагментам данных.Приращение градиента, соответствующее параметру, отправляется обратно на серверный узел для обновления модели. Поскольку и данные, и модели хранятся распределенным образом, а архитектура проста и надежна, размер модели, который может поддерживать эта архитектура, теоретически бесконечен; в каждом сегменте данных могут быть распределены по разным машинам, каждый раз, когда мы добавляем машину, общий объем передачи по сети будет увеличиваться, как показано на следующем рисунке
Рис. 7 Схематическая диаграмма связи службы параметров
Следовательно, при параметрической серверной архитектуре нашим узким местом скорее станет сеть, чем узким местом вычислительной мощности, и как это решить? Пожалуйста, продолжайте просматривать ниже.
Для таких сценариев, как классификация изображений и машинный перевод, которые сильно зависят от машин с графическим процессором, давайте рассмотрим другую ситуацию:
Рис. 8. Архитектура ps, построенная с использованием графического процессора.
Как показано на рисунке, если мы используем GPU для построения PS-кластера, мы столкнемся с еще более серьезными проблемами; поскольку GPU чрезвычайно быстр в работе, при уменьшении параметра время связи с GPU0 станет доминантой всего системное время и сделать GPU в системе хоть отбавляй. С этой целью команда Baidu SVAIL [3] позаимствовала идею ring-allreduce из области высокопроизводительных вычислений и построила архитектуру ring-allreduce для распределенного машинного обучения следующим образом:
Рис. 9 Схематическая диаграмма архитектуры ring-allreduce
Организация GPU в виде кольца теперь поддерживается официальной NCCL.Те, кто интересуется принципом NCCL, могут обратиться к соответствующим статьям, таким как [4].
Рис. 10 Многоцелевое многозажимное кольцо, изготовленное с использованием NCCL
Как показано на рисунке, когда мы используем NCCL для объединения нескольких машин GPU в кольцевую структуру, мы видим, что пропускная способность сети может быть полностью использована, если мы заменим ее этой передачей. Далее объясните концепцию allreduce.Общая концепция редукции выглядит следующим образом.
Рис. 11. Сокращение семантики операции
Концепция allreduce заключается в следующем
Рис. 12. Семантика операции allreduce
Поскольку приведенная выше картинка достаточно интуитивно понятна, я не буду объяснять ее здесь. Далее мы расскажем, почему ring-allreduce подходит для параллельных сценариев данных кластера графического процессора; учитывая, что модели малого и среднего размера могут храниться на одной машине (одна карта или несколько карт, но не на разных машинах), каждая машина делится по к своим собственным данным.После обучения модели операция allreduce выполняется через кольцевую связь, при этой настройке сетевой трафик всей системы не будет увеличиваться с увеличением количества машин, а будет только связан с моделью и пропускной способностью.По сравнению с архитектурой сервера параметров это огромное улучшение. Подробный процесс вывода см. в [5], поэтому я не буду вдаваться в подробности. Фактический поток сетевой связи выглядит следующим образом
Рисунок 13 Физический процесс связи Ring-allreduce
После представления двух различных архитектур распределенных систем машинного обучения, сервера параметров и кольцевого сокращения, как нам разумно выбрать архитектуру, вычислительную мощность, социальную защиту и стратегию развертывания в соответствии с нашими собственными бизнес-сценариями? см. следующий раздел
Две логические архитектуры, представленные в первых двух разделах, могут иметь несколько вариантов физической реализации.Вот несколько выводов:
Для поддержки параллелизма данных используется только архитектура PS, как показано на следующем рисунке.
Рис. 14 Архитектура сервера параметров с одним сервером
Эта архитектура поддерживает только рабочие процессы для выполнения параллельных вычислений с данными, а модель хранится на централизованном серверном узле, аналогично архитектуре spark. Поскольку это один узел, модель не может быть слишком большой, поэтому эта модель лишь немного более значима и в основном не используется таким образом.
В реализации две роли сервера параметров, воркер и сервер объединены в одну.В одном процессе есть потоки, которые берут на себя роль сервера и потоки, которые отвечают за воркер, потому что воркер в основном вычислений, сервер хранит параметры.В основном, это слияние имеет определенную рациональность.Как показано на рисунке ниже, пунктир представляет собой физический процесс, и один или несколько таких физических процессов могут быть развернуты на машине.
Рисунок 15 Сервер параметров структуры P2P
На мой взгляд, у этой архитектуры есть два недостатка: 1. Связывание ролей, трудно выделить соотношение потоков в зависимости от машины, отладка также относительно сложна 2. Связывание архитектуры, гибкость расширения плохая Кооперация Модули защиты, модули мониторинга и аварийного восстановления имеют определенные риски.
В отличие от рисунка 13, если мы реализуем роли работника и сервера как два независимых процесса, которые не связаны между собой, в систему планирования может быть передано больше пространства для действий. В то же время зарезервировано место для расширения архитектуры: если мы создадим отдельный модуль планирования, он перерастет в следующую архитектуру.
Когда мы разделим воркер и сервер на два отдельных модуля и введем модуль планировщика, то сформируется более классическая трехролевая архитектура распределенной системы, роли и обязанности воркера и сервера остаются неизменными, а модуль планировщика имеет сравнение Multiple варианты: 1. Возьмем на себя взаимодействие только с системой планирования ресурсов более низкого уровня Prajna (по аналогии с yarn и mesos) 2. В дополнение к 1 добавлены дополнительные функции для мониторинга работоспособности и контроля работоспособности сервера и управления процессами, как показано на следующий рисунок:
Рис. 16 Сервер параметров с модулем управления
Другим преимуществом введения модуля планировщика является то, что он обеспечивает пространство для реализации параллелизма модели.Чтобы понять концепцию параллелизма модели, обратитесь к [1], чтобы узнать, как реализовать планирование параметров модели в модуле планировщика для достижения эффекта модельного параллелизма, см. Обсуждение парадигмы программирования SchMP в [6]; модуль планирования не только способствует реализации парадигмы модельного параллельного обучения, но также имеет другие преимущества; например, понимание корреляция конкретных параметров модели, детальное планирование процесса обучения параметрам может еще больше ускорить сходимость модели и даже иметь возможность улучшить метрики модели. Это направление также заслуживает изучения, и заинтересованные студенты могут обратиться к [7]. Студентов, знакомых с распределенными системами, может волновать одноточечная проблема модуля планировщика, которая лучше решается с помощью протоколов paxos, таких как raft и zab, так что особо беспокоиться не о чем.
Первоначальный ring-allreduce имеет версию horovod с открытым исходным кодом, реализованную uber.В ходе тестирования мы воспроизвели ускорение в документе horovod, как показано на следующем рисунке.
Рисунок 17 Коэффициент ускорения архитектуры ring-allreduce по сравнению с коэффициентом ускорения TensorFlow в сценарии с несколькими компьютерами и несколькими картами
Из рисунка видно, что коэффициент ускорения ring-allreduce и наклон идеального коэффициента ускорения почти одинаковы, в то время как коэффициент ускорения TensorFlow намного ниже; это доказывает, что механизм связи ring-allreduce более совершенен. эффективен, чем механизм ps в сетевой связи.Преимущества,но в отличие от архитектуры PS,первоначальная версия ring-allreduce предполагает, что параметры модели должны храниться на одной карте.Кроме того,если имеется много полносвязных слоев в В этой модели сильная связь полносвязного уровня в сочетании с allreduce аналогична синхронизации bsp. Механизм по-прежнему будет узким местом во время сетевого взаимодействия. Поэтому в среде ring-allreduce стоит изучить, можем ли мы выполнять фрагментацию модели и преобразование протоколов синхронизации, например, использовать SSP для замены BSP или использовать градиентное сжатие для ускорения процесса allreduce.
После более чем полугодовой закрытой разработки текущая система Boundless поддерживает автономное обучение и онлайн-обучение в реальном времени для LR, FM, FFM и DNN. Поддерживаются различные алгоритмы оптимизации, такие как FTRL, SGD, Adam, AmsGrad. Для различных алгоритмов оптимизации мы также предприняли некоторые базовые попытки сжатия градиента, как показано на рисунке.
Рисунок 18. Сравнение показателей сходимости различных алгоритмов оптимизации после градиентного сжатия
Как показано на рисунке, в процессе распределенного обучения алгоритма LR мы отфильтровываем 99 % градиентов, и только перенос оставшегося 1 % градиентов может по-прежнему достигать эффекта сходимости модели; и индекс может быть немного улучшено, мы предполагаем, что это может быть градиент крупномасштабной фильтрации, который вводит некоторые эффекты регуляризации.
В дополнение к обычным алгоритмам мы разработали поддержку распределенного обучения для крупномасштабного встраивания + DNN, как показано на рисунке.
Рис. 19 Самостоятельно разработанная модель распределенной DNN
Модель может применяться как в ссылках отзыва, так и в ссылках точной аранжировки, и в настоящее время в ссылке отзыва она отображается в оттенках серого. Возвращаясь к первоначальному вопросу, одно из наших первоначальных намерений при закрытой разработке Boundless — поддержать тонкую настройку бизнеса фидов Итак, какова наша текущая ситуация перед лицом больших данных + больших моделей? Infinite поддерживает распределенное обучение разреженных LR с сотнями миллиардов пространств признаков; в настоящее время в сети фактически используются десятки миллиардов признаков и десятки миллиардов шаблонов.Чтобы облегчить вывод на одной машине, мы сделаем некоторые пошив для обученной модели, подробный процесс могу сослаться на мой другой обмен.
Рисунок 20 Коэффициент улучшения онлайн-эффекта
После использования модели, основанной на обучении бесконечной системы, онлайн-CTR и эффективность воздействия фидов были значительно улучшены, как показано на рисунке; относительный процент улучшения выражается двузначным числом, и это улучшение основано на грубом ранжировании. на основе детальных функций GBDT+ Таким образом, этот результат по-прежнему в значительной степени соответствует бизнес-ожиданиям.
В другом направлении, на основе архитектуры ring-allreduce, мы уже можем добиться вывода маломасштабной модели для сценария cv больших данных + маленькая модель; этот сценарий будет дополнительно изучен в будущем.
Проект Boundless разрабатывается совместно отделом продуктов мобильного просмотра MIG и отделом эксплуатации беспроводных сетей.Основные члены команды разработчиков состоят из группы интеллектуальных приложений в большом центре обработки данных, группы вычислительной среды в составе операционного отдела и студенты, связанные с браузерным большим информационным бизнесом.Основные участники: robertyuan, suziliu, clarebu, yancyliu, wahmingchen, burnesduan, binzhu, williamqin, carbonzhang, janwang, collinhe, joeyzhong, foxchen, brucebian и т. д.
Эта статья является нулевой статьей в серии обмена. Она в основном знакомит с фоном и доступной архитектурой распределенной среды машинного обучения. Далее мы начнем серию обмена с точки зрения общего обзора системы, инженерных задач, проблем алгоритмов. и бизнес-приложений, так что следите за обновлениями!
Особая благодарность henrysxu и xinliu, двум боссам отдела браузера и эксплуатации, за их поддержку.Без поддержки босса у нас не было бы возможности исследовать область распределенного обучения; спасибо foxchen, taydai, brucebian Resource поддержка всегда в авангарде развития. Спасибо rainyu, joeyzhong, janwang за их поддержку, они уделяли большое внимание проекту во время процесса и часто организовывали обсуждения и смешивание; наконец, спасибо robertyuan, suziliu, clarebu, yancyliu, wahmingchen, burnesduan, binzhu, hbsun и другим студентов за их упорное развитие Через столкновение в последний раз давайте поймем друг друга и разделим бремя!
Есть также много студентов, которые оказали большую помощь во время запуска проекта, таких как larrytu, aiyima, ballwu и т. д., и мы, возможно, не сможем последовательно перечислить процесс и параметры, но благодарность не уменьшается. !
Цитировать
[1] Четырехкратная область крупномасштабных платформ машинного обучения
[2] More Effective Distributed ML via a Stale Synchronous Parallel Parameter Server
[3]https://www.sohu.com/a/127596575_494939
[4] Bandwidth Optimal All-reduce Algorithms for Clusters of Workstations
[5]https://www.zhihu.com/question/63219175/answer/206697974
[6] STRADS: A Distributed Framework for Scheduled Model Parallel Machine Learning
[7] Managed Communication and Consistency for Fast Data-Parallel Iterative Analytics