Автор | Хуан Бо, Хэ Цанпин
Главный редактор | Хэ Юнкан
Благодаря зрелости алгоритмов искусственных нейронных сетей и повышению вычислительной мощности графических процессоров глубокое обучение совершило крупный прорыв во многих областях. В этом документе представлен опыт Weibo по внедрению глубокого обучения и созданию платформы глубокого обучения, особенно опыт проектирования и архитектуры основных частей, таких как рабочий процесс машинного обучения, центр управления, обучающий кластер моделей глубокого обучения и сервис онлайн-прогнозирования моделей. Платформа глубокого обучения Weibo значительно повышает эффективность разработки глубокого обучения и скорость бизнес-итераций, а также улучшает эффект моделей глубокого обучения и бизнес-эффектов.
Введение в платформу глубокого обучения
Искусственный интеллект и глубокое обучение
Искусственный интеллект наделяет машины интеллектом людей. По мере того, как компьютеры становились все более и более способными, они быстро превзошли людей в повторяющемся труде и математических вычислениях. Однако некоторые проблемы, которые люди могут быстро решить с помощью интуиции, такие как понимание естественного языка, распознавание изображений, распознавание речи и т. д., долгое время было трудно решить с помощью компьютеров. Благодаря зрелости алгоритмов искусственных нейронных сетей и повышению вычислительной мощности графических процессоров глубокое обучение также совершило крупный прорыв в этих областях, даже превзойдя человека. Глубокое обучение значительно расширило область искусственного интеллекта.
Фреймворк глубокого обучения
Фреймворки глубокого обучения — это инструменты для глубокого обучения. Проще говоря, среда глубокого обучения — это набор строительных блоков, а каждый компонент — это модель или алгоритм; разработчики могут получить собственный набор решений путем простого проектирования и сборки. Появление фреймворков глубокого обучения снизило порог для глубокого обучения. Разработчикам не нужно писать сложный код нейронной сети, а нужно только использовать существующие модели для обучения параметров с помощью простой настройки в соответствии с их собственными наборами данных.
TensorFlow, Caffe и MXNet — это три основных фреймворка с открытым исходным кодом для глубокого обучения: преимущество TensorFlow состоит в том, что он наиболее активен в сообществе и имеет самое большое количество алгоритмов и моделей с открытым исходным кодом; Caffe — это классический графический фреймворк, который легко использовать. использование и играет важную роль в научных исследованиях, MXNet Отличная распределенная производительность. PaddlePaddle, Kunpeng и Angel — это платформы распределенных вычислений, запущенные Baidu, Alibaba и Tencent соответственно.
В конце 2015 года Google открыл исходный код платформы глубокого обучения TensorFlow, которая позволяет разработчикам легко комбинировать CNN, RNN и другие модули для реализации сложных моделей нейронных сетей. TensorFlow — это программная библиотека с открытым исходным кодом для числовых вычислений с использованием графов потоков данных.
В 2016 году Baidu открыла исходный код платформы глубокого обучения PaddlePaddle (PArallel Distributed Deep Learning, параллельное распределенное глубокое обучение). PaddlePaddle прост в использовании, эффективен, гибок и масштабируем, а также обеспечивает поддержку алгоритмов глубокого обучения для ряда внутренних продуктов Baidu.
Платформа глубокого обучения
Фреймворк глубокого обучения в основном обеспечивает реализацию модели нейронной сети для обучения модели. Обучение модели — это только часть машинного обучения и глубокого обучения.Кроме того, существуют важные связи, такие как ввод данных, обработка данных, прогнозирование моделей и бизнес-приложения. Платформа глубокого обучения — это платформа, которая объединяет все аспекты глубокого обучения и предоставляет разработчикам интегрированные услуги. Платформа глубокого обучения может ускорить разработку глубокого обучения и сократить итерационный цикл; в то же время платформа глубокого обучения может совместно использовать вычислительную мощность и возможности разработки моделей, повышать эффективность разработки и бизнес-результаты, а также может разумно планировать ресурсы и улучшить использование ресурсов.
Платформа глубокого обучения Tencent DI-X
Платформа глубокого обучения Tencent DI-X была выпущена в марте 2017 года. DI-X предоставляет универсальные услуги машинного обучения и глубокого обучения на основе возможностей хранения и обработки больших данных Tencent Cloud. DI-X поддерживает три среды глубокого обучения, включая TensorFlow, Caffe и Torch, и в основном основан на вычислительной платформе Tencent Cloud на GPU. Концепция дизайна DI-X заключается в создании универсальной платформы машинного обучения, которая объединяет разработку, отладку, обучение, прогнозирование и развертывание, чтобы ученым-алгоритмистам и специалистам по данным не нужно было обращать внимание на базовую разработку машинного обучения. (особенно глубокое обучение) Утомительные детали и ресурсы, посвященные настройке моделей и алгоритмов.
DI-X используется в Tencent в течение года и в основном используется для прогнозирования скорости оттока игр, распространения пользовательских тегов и прогнозирования поведения кликов по рекламе.
Платформа машинного обучения Alibaba PAI
Платформа машинного обучения Alibaba PAI1.0 была выпущена в 2015 году, включая обработку данных и базовые алгоритмы регрессии, классификации и кластеризации. Платформа машинного обучения Alibaba PAI2.0 была выпущена в марте 2017 года и оснащена более богатой библиотекой алгоритмов, крупномасштабным обучением данных и продуктами платформы, которые полностью совместимы с открытым исходным кодом. Глубокое обучение — важная функция платформы машинного обучения Alibaba PAI2.0, которая поддерживает платформы TensorFlow, Caffe и MXNet, совместимые с интерфейсами с открытым исходным кодом. С точки зрения источников данных, PAI 2.0 поддерживает различные источники данных, такие как неструктурированные и структурированные; с точки зрения вычислительных ресурсов, он поддерживает гетерогенные вычислительные ресурсы, такие как ЦП, ГП и ПЛИС; с точки зрения рабочего процесса, он поддерживает интеграцию модели обучение и прогнозирование.
PAI используется в Alibaba уже 2 года. На основе этой платформы в поиске Taobao результаты поиска сортируются на основе характеристик продуктов и пользователей.
Платформа глубокого обучения Baidu
Платформа глубокого обучения Baidu — это платформа глубокого обучения для больших данных, основанная на вычислительной среде с открытым исходным кодом PaddlePaddle и TensorFlow, поддерживающая вычисления на графическом процессоре и предоставляющая высоконадежные и масштабируемые услуги облачного хостинга для разработки и применения технологий глубокого обучения. С помощью платформы глубокого обучения Baidu нейронные сети можно не только легко обучить анализу настроений, машинному переводу и распознаванию изображений, но также можно напрямую развертывать модели в средах приложений с помощью продуктов для хранения и виртуализации Baidu Cloud.
Дизайн платформы глубокого обучения Weibo
Weibo широко использует технологию глубокого обучения в фидах CTR, борьбе со спамом, классификации изображений, распознавании звезд, видеорекомендациях, рекламе и других сферах деятельности, а также широко использует фреймворки глубокого обучения, такие как TensorFlow, Caffe, Keras и MXNet. Чтобы интегрировать различные фреймворки глубокого обучения, эффективно использовать ресурсы ЦП и ГП, а также в полной мере использовать большие данные, распределенное хранилище и сервисы распределенных вычислений, Weibo спроектировала и разработала платформу глубокого обучения Weibo.
Платформа глубокого обучения Weibo поддерживает следующие функции:
-
Простота использования: поддерживает рабочие процессы, такие как ввод данных, обработка данных, обучение модели и прогнозирование модели, и может выполнять сложные задачи машинного обучения и глубокого обучения с помощью простой настройки. Специально для глубокого обучения вам нужно только выбрать тип фреймворка и масштаб вычислительных ресурсов для обучения модели.
-
Гибкое расширение: поддержка общих алгоритмов и моделей машинного обучения, а также определяемых пользователем алгоритмов и моделей.
-
Несколько фреймворков глубокого обучения: в настоящее время поддерживает множество основных сред глубокого обучения, таких как TensorFlow и Caffe, и провела целевую оптимизацию.
-
Гетерогенные вычисления: поддерживает GPU и CPU для обучения модели, чтобы повысить эффективность обучения модели.
-
Управление ресурсами: поддержка управления пользователями, совместного использования ресурсов, планирования заданий, восстановления после сбоев и других функций.
-
Предсказание модели: поддерживает развертывание онлайн-сервисов прогнозирования для моделей глубокого обучения одним щелчком мыши.
Архитектура и практика платформы глубокого обучения Weibo
Платформа глубокого обучения Weibo является важной частью платформы машинного обучения Weibo.Помимо наследования возможностей и функций платформы машинного обучения Weibo, она поддерживает различные основные среды глубокого обучения, такие как TensorFlow и Caffe, а также поддерживает высокопроизводительные вычисления. кластеры, такие как графические процессоры. Архитектура платформы глубокого обучения Weibo показана на рисунке 1.
Рис. 1. Архитектура платформы глубокого обучения Weibo
Ниже приведены типичные модули, такие как рабочий процесс машинного обучения, центр управления, обучающий кластер модели глубокого обучения и сервис онлайн-прогнозирования модели, в качестве примеров для ознакомления с практикой платформы глубокого обучения Weibo.
Рабочий процесс машинного обучения WeiFlow
В рабочих процессах глубокого и машинного обучения Weibo такие процессы, как сбор необработанных данных, обработка данных, проектирование функций, создание образцов и оценка моделей, занимают много времени и энергии. Чтобы эффективно выполнять сквозное глубокое обучение и разработку машинного обучения, мы представили WeiFlow, платформу рабочего процесса машинного обучения Weibo.
Первоначальная цель дизайна WeiFlow состоит в том, чтобы упростить и обмануть разработку потока машинного обучения Weibo, освободив бизнес-разработчиков от сложной обработки данных, разработки функций и разработки моделей и посвятив их драгоценное время и энергию бизнес-сценариям. производительность делового персонала полностью высвобождается, а эффективность развития значительно повышается.
WeiFlow родился из потребностей бизнеса в машинном обучении Weibo. В рабочем процессе машинного обучения Weibo (как показано на рис. 2) различные потоки данных обрабатываются в режиме реального времени, сохраняются в процессе разработки функций и генерируются необработанные образцы в автономном режиме. В автономной системе выполняется различная обработка данных, обработка признаков и сопоставление признаков с исходными образцами для создания обучающих образцов; бизнес-персонал выбирает различные модели алгоритмов для обучения и прогнозирования моделей в соответствии с реальными бизнес-сценариями (сортировка, рекомендации). и оценка; после того, как итерация модели соответствует требованиям, файлы модели и правила сопоставления развертываются в сети посредством автоматического развертывания. Онлайн-система извлекает соответствующие функции из разработки функций в соответствии с файлом модели и правилами отображения, выполняет предварительную обработку в соответствии с правилами отображения, генерирует образец формата, который можно использовать для прогнозирования, выполняет онлайн-прогнозирование в реальном времени и, наконец, прогнозирует результаты ( комментарии пользователей к контенту Weibo. Уровень интереса) вывод для вызова онлайн-сервиса.
Рис. 2. Рабочий процесс машинного обучения Weibo
Чтобы справиться с разнообразной вычислительной средой Weibo, WeiFlow использует двухуровневую структуру потока задач DAG, как показано на рисунке 3. Внешняя DAG состоит из разных узлов.Каждый узел представляет собой внутреннюю DAG с независимой средой выполнения, то есть с вышеупомянутыми вычислительными механизмами, такими как Spark, TensorFlow, Hive, Storm и Flink.
Рис. 3. Двухуровневая структура потока задач DAG WeiFlow
Первоначальная цель внешнего дизайна DAG состоит в том, чтобы использовать сильные стороны каждого вычислительного механизма и в то же время решить проблемы зависимостей и передачи данных между вычислительными механизмами. Внутренняя DAG использует характеристики и механизм оптимизации движка для реализации различных абстракций в качестве носителя данных взаимодействия между вычислительными модулями в DAG.
С точки зрения использования бизнес-персонал определяет логику расчета двухуровневой DAG в файле конфигурации XML в соответствии с предварительно согласованной спецификацией и форматом. В соответствии с зависимостями и модулями обработки, указанными пользователем в XML, WeiFlow автоматически генерирует граф потока задач DAG и вызывает реализацию модуля обработки на этапе выполнения для завершения указанного пользователем потока задач. Путем объединения необходимых вычислительных модулей в соответствии с зависимостями в конфигурационном XML-файле конфигурация и модульная разработка конвейера могут быть завершены с помощью строительных блоков.
Центр управленияWeiCenter
Цель центра управления WeiCenter — быть простым, удобным и простым в использовании, чтобы каждый мог удобно использовать платформу глубокого обучения Weibo. Далее будет представлено управление заданиями, управление данными и управление расписанием в центре управления.
-
Управление работой: В процессе глубокого обучения, крупномасштабного машинного обучения и обработки в реальном времени нам нужны различные фреймворки для совместной работы для выполнения задачи.Например, TensorFlow подходит для высокопроизводительного обучения, Spark подходит для для крупномасштабного обучения миллиардомерным функциям, а Storm подходит для высокопроизводительного обучения. Или Flink подходит для создания функций в реальном времени и создания моделей в реальном времени. Комбинируя их вместе, можно выполнять от автономного обучения до онлайн-прогнозирования в реальном времени. . Если раньше это требовало от разработчиков изучения сложной основы разработки различных фреймворков, то теперь, выбирая различные типы заданий в центре управления, можно легко создавать различные типы рабочих заданий. Пользователям нужно только выбрать тип задания, источник данных, место назначения вывода или использовать WeiFlow для программирования в визуальном пользовательском интерфейсе для создания высокоуровневого задания глубокого или машинного обучения.
-
управление данными: Когда объем данных больших данных растет на P-уровень каждый день, и каждый день есть сотни пользователей, управление данными становится особенно важным. Если кластер, в котором обучается модель, и кластер, в котором расположены данные, не являются одним и тем же кластером, будет сложно эффективно синхронизировать данные с кластером, в котором обучается модель. И после того, как обучение модели завершено, оценка может быть выполнена автоматически в соответствии с результатами обучения, а данные обучения могут быть удалены. Из-за неравномерного качества разработчиков, которые используют кластер, вы обнаружите, что всегда есть много избыточных данных, которые не были удалены, и всегда генерируются бесполезные данные.В настоящее время необходима единая платформа управления данными, чтобы запретить всем удалять данные во время их создания.Переходить на различные платформы, чтобы обнаруживать данные, к которым не было доступа в течение длительного времени, и выполнять очистку подтверждения.
-
Управление расписанием: В домашнем задании много категорий, по важным уровням: высокий, средний, низкий; по занятым ресурсам: больше, занято, занимать меньше; планировщик прессы: Yarn, Mesos, Kubernetes и т.д. Spark, Hadoop использует YARN для разрешения противоречия между приоритетом высоких заданий и ресурсов, занимающих несколько домашних заданий; Tensorflow использует зрелый запланированный узел Tensorflow Kubernetes или Mesos для управления задачами кластеризации графического процессора; обычные автономные задания и развертывание сервисов используют Mesos для планирования ресурсов. Центр управления интегрирует различные планировщики, используя множество зрелых решений, чтобы упростить задачу домашней работы по планированию этой проблемы.
Короче говоря, центр управления отвечает за контроль разрешений пользователей, управление зависимостями графа заданий, управление зависимостями данных и т. д., а служба планирования отвечает за выполнение конкретных заданий, абстракцию ресурсов и управление ресурсами. Центр управления и диспетчерская служба показаны на рисунке 4.
Рис. 4 Центр управления и диспетчерская служба
Кластер обучения модели глубокого обучения
Между обучающими кластерами глубокого обучения Weibo и традиционными высокопроизводительными кластерами есть существенные различия, которые отражаются в выборе вычислительных серверов, распределенного обучения, сетевого оборудования, систем хранения и систем планирования заданий.
-
Карта с несколькими GPU для одной машины: в большинстве случаев обучение модели глубокого обучения выполняется на одной машине и почти полностью зависит от графического процессора, поэтому сервер, который может установить 2/4/8 графических процессоров, выбирается, чтобы максимизировать вычислительную мощность одной машины.
-
Распределенное обучение: Если время обучения велико или размер выборки превышает возможности одного сервера, необходимо поддерживать распределенное обучение. Возьмем в качестве примера распределенный режим работы TensorFlow, как показано на рисунке 5. Распределенная программа TensorFlow соответствует абстрактному кластеру, состоящему из рабочих узлов и серверов параметров. сервер) состав. Рабочий узел выполняет определенные вычислительные задачи, такие как умножение матриц и сложение векторов, вычисляет соответствующие параметры (вес и смещение) и суммирует параметры на сервер параметров; сервер параметров (сервер параметров) суммирует и вычисляет параметры, полученные от многих рабочих узлов. nodes. , и передать его соответствующему рабочему узлу, а рабочий узел выполняет следующий раунд вычислений и так далее.
Рис. 5 Распределенная архитектура TensorFlow
-
10-гигабитный Ethernet: во время процесса обновления параметров уровень детализации связи велик, асинхронная связь разрешена, и нет строгих требований к задержке. Поэтому в обучающем кластере используются не низколатентные сетевые устройства InfiniBand или Omini-Path, которые необходимы для кластеров HPC, а обычные Ethernet-устройства.
-
Распределенная файловая система HDFS: когда распределенные рабочие узлы TensorFlow считывают файлы обучающих образцов, сегменты данных, считанные разными рабочими узлами, не пересекаются, и во время обучения данные образцов не обмениваются. Только один рабочий узел отвечает за запись файла модели, и обмен данными между рабочими узлами не задействован. Таким образом, задания по обучению глубокому обучению не требуют параллельных файловых систем, обычно встречающихся в кластерах высокопроизводительных вычислений, если доступ к файловой системе возможен одновременно для всех рабочих узлов. Фактически, платформа глубокого обучения Weibo использует HDFS, которая не только соответствует требованиям, но и облегчает обмен данными с другими предприятиями.
-
Индивидуальная система планирования работы: Процесс сервера распределенных параметров TensorFlow не завершится автоматически и должен быть остановлен вручную, в то время как процесс MPI в приложении HPC запускается и завершается одновременно. Эту функцию необходимо учитывать при разработке схемы планирования заданий, чтобы автоматически завершать процесс сервера параметров после завершения работы всех рабочих узлов.
Модель сервиса онлайн-прогнозов WeiServing
Служба онлайн-прогнозирования моделей является важной функцией платформы глубокого обучения. Из-за потребностей бизнес-сценариев Weibo служба онлайн-прогнозирования модели имеет большой объем параллелизма, что требует чрезвычайно высокой задержки и доступности. С учетом этих бизнес-требований и высокой масштабируемости самого сервиса архитектура WeiServing, сервиса онлайн-прогнозирования для распределенных моделей микроблогов, показана на рис. 6.
Рис. 6. Распределенная модель WeiServing-Weibo. Архитектура службы онлайн-прогнозирования
-
Диверсификация обработки функций: первая проблема, которую должна решить служба онлайн-прогнозирования модели, — это преобразовать исходные онлайн-данные об объектах в формат данных, который может обрабатывать модель. WeiFlow, рабочая среда машинного обучения Weibo, основанная на большом количестве практик и настроек бизнес-моделей, абстрагирует набор функций обработки функций для повышения эффективности разработки и бизнес-результатов. WeiServing и WeiFlow находятся в одном ряду в обработке признаков.Они поддерживают ряд функций обработки признаков, в том числе кусочные, выборочные, декартовские, комбинированные хеш-функции и другие функции сопоставления, а также выполняют обработку признаков, такую как нормализация, дискретизация, идентификация и комбинирование.
-
Мультимодельная поддержка нескольких версий: из-за разнообразия бизнес-сценариев Weibo разные бизнес-сценарии имеют разные требования к моделям и функциям, WeiServing поддерживает один и тот же кластер для предоставления услуг для нескольких предприятий и использует docker + k8 для изоляции ресурсов и балансировки нагрузки. В случае одного и того же признака для обработки могут быть выбраны разные алгоритмы модели. Кроме того, для той же модели WeiServing поддерживает онлайн-обновление и одновременную онлайн-мультиверсию, что дает возможность для бизнес-тестирования в оттенках серого. Все различия отображаются в файле конфигурации, а онлайн-преобразование модели выполняется с помощью простой настройки.
-
Распределенная сервисная поддержка: чтобы справиться с крупномасштабными модельными услугами и машинным обучением в режиме онлайн, WeiServing реализует архитектуру распределенных служб WeiParam, ссылаясь на решение сервера общих параметров.Предоставляет многокопийный, высокодоступный и высокопроизводительный системный механизм.
-
Поддержка нескольких источников: для обычного автономного обучения модель будет экспортирована в файл, WeiServing управляет загрузкой модели через модуль ModelManager и поддерживает локальное и распределенное хранилище. В то же время для поддержки машинного обучения в режиме онлайн WeiServing обеспечивает подключение к потоковому интерфейсу в реальном времени, а параметры модели онлайн-обучения могут быть переданы в WeiParam в режиме реального времени для предоставления онлайн-услуг.
Суммировать
В этом документе представлены концепции и характеристики платформ и платформ глубокого обучения, а также обсуждается дизайн-мышление и техническая архитектура платформ глубокого обучения на основе платформы глубокого обучения Weibo. Рабочий процесс машинного обучения и центр управления — это результат нашего проектирования в стандартизации рабочего процесса машинного обучения.Систематический стандартный процесс может значительно повысить эффективность разработки машинного обучения и скорость бизнес-итераций.
Кластеры обучения моделей глубокого обучения и сервисы онлайн-прогнозирования моделей являются выходными данными нашей системы при обучении моделей глубокого обучения, кластеризации прогнозирования моделей и обслуживании, а также являются основой для обеспечения эффектов модели и бизнес-эффектов. Я надеюсь, что приведенное выше введение может натолкнуть вас на мысли и помочь.
Об авторе:
Хуан Бо, технический директор и старший архитектор платформы машинного обучения Weibo, ответственный за платформу машинного обучения Weibo и систему алгоритмов подачи. Окончил Институт вычислительных технологий Китайской академии наук, знаком с системами подачи, рекомендательными системами и распределенными вычислительными системами.
Хэ Цанпин, архитектор платформы глубокого обучения Weibo, в основном отвечает за применение алгоритмов глубокого обучения в персонализированной сортировке Weibo Feed, персонализированных рекомендациях и других сферах бизнеса. Окончил Школу математики Китайской академии наук, знаком с высокопроизводительными вычислениями, автор книги «Практика параллельного программирования OpenACC».
Эта статья является оригинальной статьей "Программист", Не перепечатывайте без разрешения, нажмите, чтобы увидеть больше интересных статей"читать оригинал" Подписаться на "Программист"