Машинное обучение — это основная технология для многих важных продуктов и услуг Facebook. В этом документе, подготовленном 17 учеными и инженерами Facebook, мир знакомится с программной и аппаратной архитектурой прикладного машинного обучения Facebook.
С миссией «дать людям возможность создавать сообщества и сближать мир» к декабрю 2017 года Facebook объединил более двух миллиардов человек по всему миру. В то же время за последние несколько лет произошла революция в применении машинного обучения к практическим задачам, и краеугольным камнем этой революции является благотворный круг инноваций алгоритмов машинного обучения, больших объемов данных для обучения моделей и достижений в области высоких технологий. -производительная компьютерная архитектура. В Facebook машинное обучение обеспечивает ключевую мощь практически всех пользовательских сервисов, включая ленту новостей, голосовой и текстовый перевод, а также категоризацию фото и видео в реальном времени.
Facebook использует различные алгоритмы машинного обучения в этих сервисах, включая машины опорных векторов, деревья решений с градиентным усилением и различные нейронные сети. Архитектура машинного обучения Facebook в основном включает внутренние рабочие процессы «машинное обучение как услуга», платформы машинного обучения с открытым исходным кодом и алгоритмы распределенного обучения. С точки зрения аппаратного обеспечения Facebook использует большое количество платформ ЦП и ГП для обучения моделей, чтобы поддерживать необходимую частоту обучения для удовлетворения требований службы к задержке.
Ключевое резюме:
- Машинное обучение применяется почти во всех сервисах, тогда как компьютерное зрение составляет лишь небольшую часть требований к ресурсам.
- Facebook использует различные методы машинного обучения, включая, помимо прочего, нейронные сети.
- Большие объемы данных передаются через конвейеры машинного обучения, и связанные с этим проблемы инженерной эффективности далеки от решения вычислительными узлами.
- В настоящее время Facebook в значительной степени полагается на ЦП для выводов на этапе тестирования, а также на ЦП и ГП для обучения, но постоянно создает и оценивает новые аппаратные решения с точки зрения производительности на ватт.
Машинное обучение в Facebook
Машинное обучение обычно состоит из двух этапов:
1) Этап обучения: создание модели, обычно в автономном режиме.
2) Этап вывода: запустите обученную модель в производстве и сделайте серию прогнозов в реальном времени, этот этап выполняется онлайн.
Отличительной особенностью машинного обучения в Facebook является потенциальное влияние больших объемов данных на обучение модели. Масштаб этих данных имеет много значений во всей архитектуре.
A. Основные службы приложений машинного обучения
Лента новостей (служба новостной ленты Facebook)Алгоритмы сортировки позволяют людям видеть наиболее важные для них истории каждый раз, когда они посещают Facebook. Общая модель сначала обучается для выбора различных факторов пользователя и среды, которые в конечном итоге используются для определения рейтинга контента. Затем, когда человек посещает Facebook, модель генерирует персонализированный набор лучших статусов, изображений и другого контента из сотен кандидатов для отображения, а также лучший рейтинг выбранного контента.
AdsИспользуйте машинное обучение, чтобы решить, какую рекламу показывать пользователю. Модели рекламы обучаются тому, как лучше прогнозировать вероятность нажатия на объявление, посещения веб-сайта или покупки продукта на основе характеристик пользователя, пользовательского контекста, предыдущих взаимодействий и атрибутов рекламы.
SearchСервис запустил серию различных подпоисков для каждой вертикальной отрасли, таких как видео, фотографии, люди, события и т. д. Уровень классификации работает поверх различных вертикальных поисков, чтобы предсказать, какой аспект искать.
Sigmaпредставляет собой целостную структуру классификации и обнаружения аномалий, используемую во многих внутренних приложениях, включая целостность сайта, обнаружение спама, платежи, регистрацию, несанкционированный доступ сотрудников и рекомендации по событиям.
LumosИзвлекайте высокоуровневые атрибуты и сопоставления из изображений и контента, позволяя алгоритмам автоматически понимать их.
Facer— это система обнаружения и распознавания лиц Facebook. Для данного изображения он сначала находит все лица на изображении. Затем запустите пользовательский алгоритм распознавания лиц, чтобы определить вероятность того, что лицо на изображении является вашим другом. Facebook использует эту службу, чтобы помочь вам выбрать друзей, которых вы хотите отметить на своих фотографиях.
Language Translation— это сервис, который управляет интернационализацией контента Facebook. Система поддерживает более 45 языков и 2000 направлений перевода, помогая 600 миллионам человек ежедневно преодолевать языковой барьер, позволяя им видеть переведенную версию Ленты новостей.
Speech RecognitionПреобразование аудио в текст, в основном используется для автоматического заполнения субтитров к видео.
B. Модели машинного обучения
Модели машинного обучения, используемые Facebook, включают логистическую регрессию (LR), машину опорных векторов (SVM), дерево решений с градиентным усилением (Gradient Boosted Decision).
дерево, GBDT) и глубокая нейронная сеть (DNN). LR и SVM очень эффективны для обучения и прогнозирования. GBDT может повысить точность за счет использования дополнительных вычислительных ресурсов. DNN — наиболее выразительная модель, способная достичь высочайшей точности, но она использует больше всего ресурсов (как минимум на порядок дороже в вычислительном отношении, чем линейные модели, такие как LR и SVM).
В DNN используются три основных типа сетей: многослойные персептроны (MLP) обычно используются для структурированных входных функций (таких как сортировка), а сверточные нейронные сети (CNN) используются в качестве пространственных процессоров (например, для обработки изображений). и рекуррентные нейронные сети (RNN, LSTM) в основном используются в процессорах последовательностей (таких как обработка языка).
Алгоритмы машинного обучения, используемые продуктами или услугами Facebook.
C. Внутренний Facebook «Машинное обучение как услуга»
У Facebook есть несколько внутренних платформ и наборов инструментов, призванных упростить задачу использования машинного обучения в продуктах Facebook. Например, FBLearner, Caffe2 и PyTorch. FBLearner состоит из трех инструментов, каждый из которых ориентирован на разные части конвейера машинного обучения. FBLearner использует внутренний планировщик заданий для распределения ресурсов и планирования работы в общем пуле графических и центральных процессоров. Большая часть обучения машинному обучению Facebook проводится через платформу FBLearner. Эти инструменты и платформы работают вместе, чтобы повысить производительность инженеров по машинному обучению и помочь им сосредоточиться на алгоритмических инновациях.
Процесс и архитектура машинного обучения Facebook.
Магазин функций FBLearner. Отправной точкой для многих задач моделирования машинного обучения является агрегирование и создание функций. Репозиторий функций — это, по сути, каталог нескольких генераторов функций, которые можно использовать для обучения и прогнозирования в реальном времени, а также его можно рассматривать как рынок, где несколько команд могут делиться и открывать функции.
FBLearner Flow— это платформа машинного обучения Facebook для обучения моделей. Flow — это система управления каналами, которая выполняет рабочий процесс, описывающий шаги по обучению или оценке модели и требуемые ресурсы. Рабочий процесс состоит из отдельных блоков, называемых операторами, каждый из которых имеет ввод и вывод. Flow также включает в себя инструменты для управления экспериментами и простой пользовательский интерфейс для отслеживания всех артефактов и данных, созданных в ходе каждого выполнения рабочего процесса или эксперимента.
Предиктор FBLearner— это внутренний механизм логического вывода Facebook, который использует модели, обученные в Flow, для предоставления прогнозов в реальном времени.
D. Структура глубокого обучения
Facebook использует две совершенно разные платформы глубокого обучения, которые работают в тандеме: PyTorch, который в первую очередь оптимизирован для исследовательских сред, и Caffe2, оптимизированный для производственных сред.
Caffe2— это внутренняя структура Facebook для обучения и развертывания крупномасштабных моделей машинного обучения. Caffe2 фокусируется на нескольких ключевых функциях, необходимых продукту: производительность, кроссплатформенная поддержка и базовые алгоритмы машинного обучения. В дизайне Caffe2 используется модульный подход, при котором все серверные реализации (ЦП, ГП и ускорители) используют единое представление графа. Отдельные механизмы выполнения удовлетворяют потребности выполнения различных графов, а Caffe2 объединяет сторонние библиотеки (например, cuDNN, MKL и Metal) для оптимизации работы на разных платформах.
PyTorch— это структура, используемая Facebook для исследования искусственного интеллекта. Его интерфейс ориентирован на гибкость, отладку и динамические нейронные сети для быстрого экспериментирования. Поскольку он основан на Python, он не оптимизирован для производства и мобильного развертывания. Когда исследовательский проект дает ценные результаты, модель необходимо перевести в производство. Традиционный подход заключается в переносе путем перезаписи процесса обучения с другими фреймворками в производственной среде. Недавно Facebook начал создавать инструменты ONNX, чтобы упростить этот процесс передачи.
ONNX, эта система инструментов глубокого обучения все еще находится в зачаточном состоянии в отрасли. Поскольку разные фреймворки (Caffe2 и PyTorch) имеют свои преимущества для решения разных задач, обмен обученными моделями между разными фреймворками или платформами сейчас является серьезной производственной задачей. В конце 2017 года Facebook объединился с другими связанными командами для запуска ONNX (Open Neural Network Exchange), формата для стандартного представления моделей глубокого обучения для реализации между различными платформами и оптимизированными для поставщиков библиотеками Interoperate. Facebook использует ONNX внутри компании в качестве основного метода переноса исследовательских моделей из среды PyTorch в высокопроизводительную производственную среду Caffe2.
Интерпретация ресурсов машинного обучения
A. Обзор аппаратных ресурсов Facebook
Архитектура Facebook имеет долгую историю предоставления эффективной платформы для основных программных сервисов, включая настраиваемый сервер, хранилище и сетевую поддержку для удовлетворения требований к ресурсам для каждой крупной работы. В настоящее время Facebook поддерживает 8 основных вычислительных платформ и систем хранения данных, соответствующих 8 основным службам.
Шасси 2U с тремя вычислительными слотами поддерживает два альтернативных типа серверов. Один из них представляет собой сервер с одним сокетом ЦП (1xCPU), содержащий 4 дочерние платы сервера Monolake, а другой представляет собой сервер с двумя сокетами ЦП (2xCPU).
Чтобы ускорить процесс обучения для более крупных и глубоких нейронных сетей, Facebook построил Big Basin, последнее поколение серверов GPU.
Исходный GPU-сервер Big Basin содержал восемь GPU-ускорителей NVIDIA Tesla P100.
По сравнению с предыдущими графическими серверами Big Sur платформа Big Basin предлагает значительное увеличение производительности на ватт благодаря увеличению числа операций с плавающей запятой одинарной точности с 7 терафлопс до 15,7 терафлопс и пропускной способности 900 ГБ/с.
B. Распределение ресурсов на этапе обучения
Платформы обучения машинному обучению, частота, продолжительность для различных сервисов.
Тип и место расчета
- Обучение на GPU: Люмос, Распознавание речи, Языковой перевод.
- Тренинг на CPU: Лента новостей, Sigma.
- Обучение на CPU и GPU: Facer (общая модель обучается на GPU каждые несколько лет, поскольку модель более стабильна, пользовательская модель обучается на 1xCPU), поиск (использует несколько независимых вертикальных поисков и прогнозирует. Классификатор применяется в наиболее подходящее поле).
В процессе обучения используется много данных, хранящихся в производственной среде.По соображениям производительности и пропускной способности графические процессоры в производственных средах необходимо размещать рядом с местом сбора данных. Данные, используемые каждой моделью, быстро увеличиваются, поэтому местоположение рядом с источником данных со временем становится все более и более важным.
Память, хранилище и сеть
С точки зрения объема памяти как платформа ЦП, так и платформа ГП обеспечивают достаточное пространство для обучения. Например, Facer обучает пользовательскую модель SVM на 1xCPU с 32 ГБ ОЗУ. Машинное обучение Facebook использует большую часть хранимых данных, что также создает региональные предпочтения для размещения вычислительных ресурсов рядом с хранилищами данных. Со временем большинство сервисов демонстрируют тенденцию к использованию большего количества пользовательских данных, поэтому это повысит зависимость от других сервисов Facebook, а также увеличит пропускную способность сети для доступа к данным.
Вопросы масштабирования и распределенное обучение
Обучение нейронной сети требует оптимизации весов параметров с использованием стохастического градиентного спуска, который выполняется посредством итеративных обновлений весов, которые оцениваются в пакетах (пакетах, мини-пакетах) данных. Традиционная модель обучается на одной машине, а производительность обучения можно оптимизировать за счет добавления моделей и параллелизма данных. Но учитывая, что данные, необходимые для обучения, со временем растут, аппаратные ограничения могут увеличить общую задержку обучения и время сходимости до неприемлемого уровня. Чтобы преодолеть ограничения, связанные с этим оборудованием, распределенное обучение является решением и одним из активных направлений исследований в области ИИ.
Распространено предположение, что параллелизм данных между машинами требует выделенного соединения. Однако в ходе работы над распределенным обучением исследователи обнаружили, что сетей на основе Ethernet достаточно для обеспечения возможностей приблизительно линейного масштабирования.
C. Распределение ресурсов на этапе вывода
После завершения обучения шаг онлайн-вывода включает в себя загрузку модели на машину и запуск модели с входными данными в реальном времени для получения результатов в реальном времени.
Вывод потребностей в ресурсах онлайн
Здесь модель ранжирования рекламы используется для представления работы онлайн-модели вывода. Модель сортировки объявлений отфильтровывает сотни объявлений и показывает только первые 1-5 лучших в ленте новостей. Это результат фильтрации с помощью все более сложных вычислений сортировки на все более мелких подмножествах объявлений. При расчете ранжирования используется модель, подобная MLP, с разреженными слоями встраивания, где каждый фильтр сужает диапазон рекламных объявлений. Слой разреженного встраивания требует много памяти, и для последующих операций фильтрации со все большим количеством параметров он отделяется от фильтрации MLP и выполняется на отдельном сервере.
С вычислительной точки зрения большое количество онлайн-выводов выполняется на 1xCPU (один сокет) или 2xCPU (двойной сокет).Для службы Facebook 1xCPU более энергоэффективен, чем 2xCPU, поэтому необходимо перенести модель с 2xCPU на 1xЦП включен.
Машинное обучение в масштабе центра обработки данных
Помимо требований к ресурсам, при развертывании машинного обучения в масштабе центра обработки данных необходимо учитывать некоторые важные факторы, в том числе требования к критически важным данным и надежность перед лицом стихийного бедствия.
А. От данных к модели
Для многих сложных приложений Facebook для машинного обучения, таких как Ads и Feed Ranking, каждая задача обучения требует обработки более сотен терабайт данных. Кроме того, сложные операции предварительной обработки используются для обеспечения очистки и нормализации данных для эффективной передачи и обучения. Это предъявляет высокие требования к ресурсам хранилища, сети и ЦП.
Facebook решает эту проблему, отделяя нагрузку данных от нагрузки обучения. Распределение различных рабочих нагрузок на разные машины: «считыватель» машины обработки данных считывает данные из хранилища, обрабатывает и сжимает их, а затем передает их «тренажеру» обучающей машины, которому нужно только быстро и эффективно выполнять обучающие операции.
B. Масштаб использования
Facebook приходилось поддерживать большое количество серверов, чтобы постоянно справляться с пиковыми нагрузками.
В особые дни, в связи с изменением активности пользователей, будут возникать ежедневные пики нагрузки, а большое количество пулов серверов часто простаивает в определенные промежутки времени, что обеспечивает большое количество вычислительных ресурсов в непиковые часы. Для приложений машинного обучения это дает возможность воспользоваться преимуществами механизмов распределенного обучения, которые можно масштабировать до большого количества разнородных ресурсов (например, разных платформ ЦП и ГП с разным распределением ОЗУ). Например, в конфигурации 1xCPU с четырьмя хостами, совместно использующими сетевую карту 50G, если 4 хоста попытаются одновременно синхронизировать градиенты с другими хостами, общая сетевая карта немедленно станет узким местом, что приведет к потере пакетов и тайм-аутам ответа. Следовательно, для эффективного использования простаивающих серверов в нерабочее время требуется совместная разработка топологии сети и планировщика.
C. Обнаружение бедствия
Когда часть глобальных вычислений, хранилищ и сетевых следов Facebook теряется, возможность беспрепятственно справиться с проблемой была долгосрочной целью инфраструктуры Facebook. Внутри группы аварийного восстановления Facebook регулярно проводятся учения по выявлению и устранению самых слабых звеньев в глобальной архитектуре и программном стеке. Саботаж заключался в том, что почти незамеченным отключили целые центры обработки данных, чтобы гарантировать, что потеря любого из глобальных центров обработки данных Facebook вызовет минимальные нарушения бизнеса.
Что произойдет, если модель не будет обучена?
Авторы анализируют три ключевых сервиса, использующих машинное обучение, чтобы проиллюстрировать влияние отсутствия возможности часто обновлять модель во время обучения.
Честность сообщества: команда Facebook по обеспечению целостности сообщества использует машинное обучение для обнаружения оскорбительного контента в тексте, изображениях и видео. Обнаружение содержимого атаки — это особая форма обнаружения спама. Злоумышленники постоянно находят новые способы обойти дискриминаторы Facebook и показать пользователям плохой контент. Неспособность полностью обучиться приведет к неспособности защититься от такого плохого контента.
News Feed: определение наиболее релевантного контента для каждого пользователя каждый раз, когда он посещает Facebook, будет в значительной степени зависеть от современных алгоритмов машинного обучения для правильного поиска и ранжирования этого контента. Старая модель новостной ленты окажет качественное влияние на сервис. Даже неделя обучения вычислительным потерям мешает команде новостной ленты исследовать новые модели и параметры.
Ads: этот сервис находит и показывает лучшую рекламу для людей, в значительной степени полагаясь на машинное обучение. Исследователи обнаружили, что влияние использования устаревших моделей машинного обучения измеряется часами. Другими словами, использование однодневной модели оказывает худшее влияние, чем использование часовой модели.
Архитектурная поддержка аварийного восстановления
Расположение центров обработки данных Facebook по всему миру, декабрь 2017 г.
Поскольку глубокое обучение используется во многих продуктах, взаимосвязь между вычислениями на GPU и большими данными становится все более и более важной. А стратегический поворот к мегарегиональному хранилищу усложняет совместную компоновку вычислительных данных. Концепция мегарегионов означает, что в небольшом количестве центров обработки данных будет храниться большая часть данных Facebook. А площадь, на которой размещается весь парк GPU, не входит в гигантскую зону хранения.
Таким образом, помимо совместного определения важности вычислительных данных, можно быстро рассмотреть, что может произойти, если область хранения графического процессора будет полностью потеряна. Это соображение приводит к необходимости в различных физических расположениях графических процессоров.
Будущее направление: совместная разработка оборудования, программного обеспечения и алгоритмов.
Увеличение вычислительной интенсивности обычно увеличивает эффективность базового оборудования, поэтому рекомендуется обучение с большими размерами пакетов, поскольку позволяет задержка. Рабочие нагрузки машинного обучения, охватывающие все вычислительные ресурсы, выиграют от более широких блоков SIMD, специальных механизмов свертки или матричного умножения, а также выделенных сопроцессоров.
В некоторых случаях мини-пакет для каждого вычислительного узла является фиксированным требованием, что обычно снижает интенсивность вычислений. Таким образом, производительность может снизиться, если полная модель не помещается в закрепленную SRAM или кэш последнего уровня. Это можно решить с помощью сжатия модели, квантования и памяти с высокой пропускной способностью.
Для сокращения времени обучения и ускорения доставки модели требуется распределенное обучение. Распределенное обучение требует тщательного совместного проектирования топологии сети и планирования для эффективного использования оборудования для достижения хорошей скорости и качества обучения. Наиболее распространенной формой параллелизма в распределенном обучении является параллелизм данных, который требует синхронизации градиентного спуска на всех узлах.
Суммировать
В Facebook исследователи определили несколько ключевых факторов, возникающих при разработке платформ прикладного машинного обучения с точки зрения масштаба и принятия решений: важность совместного размещения данных и компьютеров, а также важность обработки различных машинных рабочих нагрузок, а не только компьютеров. видение и возможность получения свободных мощностей от ежедневного вычислительного цикла. Исследователи учли все факторы при разработке комплексного решения, которое включает специально разработанное готовое оборудование с открытым исходным кодом и экосистему программного обеспечения с открытым исходным кодом, которое сочетает в себе производительность и удобство использования. Эти решения лежат в основе крупномасштабных усилий по машинному обучению, которые обслуживают более 2,1 миллиарда человек по всему миру, что отражает междисциплинарные усилия экспертов в области алгоритмов машинного обучения и проектирования систем.
Оригинальная бумага:Applied Machine Learning at Facebook: A Datacenter Infrastructure Perspective
благодарныйЦай ФанфанОбзор этой статьи.