«Большие данные+» в эпоху машинного обучения: проектирование и построение платформы данных

машинное обучение искусственный интеллект TensorFlow алгоритм

Как популярная технология в последние годы, машинное обучение не только известно своими многочисленными продуктами «искусственного интеллекта», но и существенно расширяет возможности традиционных интернет-продуктов. На недавно состоявшемся саммите ArchSummit Global Architect 2018 Юань Кай, главный архитектор данных GeTui, поделился своим «Проектированием и созданием платформы данных, ориентированной на машинное обучение», основанным на его многолетнем опыте создания платформ данных и разработки продуктов данных.

1. Предыстория: сценарии применения машинного обучения в бизнесе персональных push-уведомлений

Как независимый поставщик интеллектуальных услуг больших данных, Getui занимается в основном услугами разработчиков, услугами точного маркетинга и услугами больших данных в различных вертикальных областях. И технология машинного обучения используется во многих компаниях и продуктах:

1. Getui может предоставлять интеллектуальные push-уведомления на основе точных портретов пользователей. Среди них пользовательская метка в основном основана на машинном обучении, а население прогнозируется и классифицируется после обучения модели;

2. Таргетинг рекламной толпы;

3. Прогнозирование потоков людей в живописных местах деловых районов;

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

5. Индивидуальные рекомендации по контенту;

6. Прогнозирование оттока пользователей и периода удержания.

Во-вторых, конкретный процесс проведения машинного обучения


1. Исходные данные обрабатываются ETL и сохраняются в хранилище данных.

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

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

Затем мы занимаемся проектированием функций. Узнайте из данных переменные признаков, связанные с целью, чтобы построить или вывести некоторые признаки и в то же время удалить бессмысленные признаки. Нам нужно тратить около 80% нашего времени на разработку функций. После выбора функций мы обучаем модель с помощью таких алгоритмов, как логистическая регрессия и RNN. Затем модель необходимо проверить, чтобы определить, соответствует ли она цели. Причина невыполнения цели может заключаться в том, что данные не связаны с целью и их необходимо собрать заново; также может быть, что когда мы исследуем, работа не на месте, поэтому нам нужно заново исследовать существующие данные, а затем выполните этапы разработки признаков. Если окончательная модель соответствует бизнес-ожиданиям, мы применим ее к бизнес-направлению.


3. Часто задаваемые вопросы о реализации проектов машинного обучения

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

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

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

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

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

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

5. Большой проблемой в машинном обучении является использование данных, что очень дорого, потому что мы тратим много времени на изучение данных.

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

4. Стремление к решению проблем машинного обучения

Сначала поговорим о целях нашей платформы:

Во-первых, мы хотим стандартизировать внутренний процесс моделирования.

Во-вторых, мы надеемся предоставить комплексное решение, охватывающее весь процесс от разработки модели до онлайн-приложения.

В-третьих, мы надеемся, что данные платформы, особенно разработанные характерные данные, можно будет использовать и совместно использовать между различными командами в компании.

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

Ниже приведен наш собственный общий план, в основном разделенный на две части:


Нижняя часть представляет собой платформу моделирования, также называемую экспериментальной платформой, которая в основном используется инженерами-алгоритмами.Платформа моделирования включает в себя:

1. Соответствующая среда разработки. На этой платформе можно исследовать данные, экспериментировать с данными, и она может поддерживать управление проектами и обмен ими.

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

3. Когда образец сопоставляется, идентификатор образца может не совпадать с внутренним идентификатором.В настоящее время требуется унифицированная служба сопоставления идентификаторов.

4. Также очень важно помочь инженерам-алгоритмам быстро извлечь нужные данные из триллионов данных.

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

6. Поддержка упаковки и развертывания модельных сервисов.

7. Модель также должна поддерживать управление версиями.

8. Для применения модели в реальном бизнесе необходимо отслеживать ее в режиме реального времени и следить за доступностью и точностью модели.

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


В производственной среде данные объектов, соответствующие модели, делятся на две категории:

Один из них — это данные функций в реальном времени, такие как сбор данных в реальном времени, для создания некоторых функций в реальном времени и их хранения в разных кластерах в соответствии с различными бизнес-требованиями.

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

В производственной среде мы можем предоставить API онлайн-прогнозирования или данные офлайн-прогнозирования для использования в бизнесе.

V. Особенности программной практики

Во-первых, давайте поговорим о jupyter:

Выбор Jupyter в качестве основной IDE для моделирования вместо самостоятельно разработанного инструмента визуального моделирования методом перетаскивания имеет преимущества интерактивного анализа, высокой эффективности моделирования, простоты расширения и низких затрат на исследования и разработки. Конечно, платформа визуального моделирования с помощью перетаскивания, такая как Microsoft Azure, может четко видеть весь процесс, что подходит для студентов начального уровня, чтобы быстро приступить к работе. Но наши целевые пользователи — группы экспертов и полуэкспертов, поэтому мы выбрали наиболее подходящий Jupyter.

При использовании Jupyter для поддержки мультиарендности мы используем Jupyterhub. В качестве базовых фреймворков машинного обучения мы используем Tensorflow, Pyspark, Sklearn и т. д. При обработке и исследовании данных в сочетании с sparkmagic очень удобно запускать код Spark, написанный на Jupyter, в кластер Spark.

Для Jupyter нет готового контроля версий и управления проектами, для решения используем git.

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

Второй момент, поговорим о функции инструмента:

Мы предоставляем основные библиотеки функций и инструменты, связанные с машинным обучением:

1) Стандартизированный API службы сопоставления идентификаторов.

2) Чтобы создать API для извлечения данных, независимо от того, какое это хранилище, аналитикам достаточно единообразно вызвать этот API. 3) Визуализируйте стандартизированные библиотеки функций и классы инструментов.

4) Jupyter2AzkabanFlow: он может автоматически преобразовывать код или сценарий, изначально написанный на Jupyter, в AzkabanFlow, что решает проблему повторного использования кода на этапе разработки функций.

Третий момент, касающийся использования Tensorflow:

При использовании Tensorflow наш выбор TensorflowOnSpark, Распределенная поддержка собственного Tensorflow недостаточно хороша, и необходимо указать некоторую информацию об узле, что сложно использовать.

TensorflowOnSpark может решить распределенную проблему собственного кластера Tensorflow, а код можно легко перенести в TensorflowOnSpark, в основном нет необходимости в изменении.

В то же время использование yarn может поддерживать смешанные кластеры GPU и CPU, а ресурсы легко использовать повторно.


Четвертый пункт, о приложении доставки модели:

Что касается доставки модели, мы разработали весь код прогнозирования и предоставили аналитикам множество стандартных платформ для непосредственного выбора. Существуют требования к формату выходного файла модели, например: можно выбрать только формат pmml или формат tensorflow pb. После стандартизации работа разработчика моделей может быть отделена от работы разработчика системы с помощью стандартной библиотеки функций прогнозирования.

Напоследок поделитесь своим опытом:

Во-первых, количество PS на TensorflowOnSpark ограничено, а распределение ресурсов рабочих и PS-узлов не очень гибкое, и все они имеют одинаковый размер.

Во-вторых, когда используется Jupyter, он сам должен вносить некоторые изменения, а некоторые версии библиотек с открытым исходным кодом имеют проблемы с совместимостью.

В-третьих, использование PMML имеет узкие места в производительности, некоторые из них - это повторная реконструкция объектов Java, а некоторые - потеря преобразования формата. Для получения подробной информации вы можете получить информацию о jvm для анализа и оптимизации.

В-четвертых, по вопросу использования Spark и Hive в процессе посадки необходимо предоставить простые в использовании инструменты диагностики.Моделеры не являются экспертами в Spark и Hive и не обязательно знакомы с диагностикой и оптимизацией.

В-пятых, относитесь к модели и библиотеке функций как к активу, регулярно оценивайте их ценность и управляйте их жизненным циклом.

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

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

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