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

машинное обучение дизайн алгоритм Spark

Как машины учатся?

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

У нас есть такая возможность, а как насчет машин? Разве машина не только получает инструкции и обрабатывает их? Подобно человеческому мозгу, исторические данные могут быть переданы машине. Машина использует алгоритм моделирования для создания модели. В соответствии с моделью она может обрабатывать новые данные для получения неизвестных атрибутов. Ниже представлена ​​диаграмма категорий машинного обучения и индуктивного опыта человеческого мозга:

Видение платформы

Внутри Tongcheng мы узнали о некоторых командах, применяющих машинное обучение, и обнаружили, что их общие этапы обработки следующие:

В этом процессе есть несколько болевых точек:

  • Требует много времени для передачи онлайн-данных в оффлайн
  • Трудно сбалансировать объем обучающих данных.Если объем обучающих данных велик, использование R или Python для обучения на одной машине займет очень много времени. Если количество обучающих данных невелико, обученная модель склонна к переобучению.
  • Существуют определенные требования к способности кодирования аналитического и горного персонала.

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

Сборка платформы

Цели дизайна

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

Библиотека алгоритмов

С точки зрения библиотеки алгоритмов мы выбрали Spark.По сравнению с R или Python, Spark имеет возможность распределенных вычислений и более эффективен.

И ml, и mllib являются библиотеками машинного обучения в Spark, и обе библиотеки для часто используемых функций машинного обучения могут удовлетворить потребности. Основной операцией ml является DataFrame.По сравнению с базовыми операциями, предоставляемыми mllib в RDD, ml имеет более высокий уровень абстракции в DataFrame и более низкую связь между данными и операцией.

ml обеспечивает конвейер, как и sklearn в Python, он может связывать множество операций (алгоритм/извлечение признаков/преобразование признаков) в виде конвейеров, что очень удобно для комбинирования задач, таких как StringToIndexer, IndexerToString, VectorAssembler и т. д.

компонентный дизайн

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

Картинка выше является частью всей диаграммы классов дизайна, на самом деле мы сделали больше уровней абстракции и общего кода. Давайте взглянем на базовый класс BaseTask:

Реализация метода run представляет собой набор шаблонов, шаги следующие:

Каждый компонент должен реализовать только свой собственный метод выполнения основной логики.

Итерация платформы

v1.0 (архитектура ядра платформы)

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

  • Пользователь строит процесс моделирования, перетаскивая компоненты в интерфейс, и сохраняет конфигурацию компонентов и зависимости в БД.
  • Пользователь может инициировать запуск эксперимента по моделированию в интерфейсе и фактически отправить задачу spark через spark-submit.
  • Ml Engine отвечает за выполнение этой задачи.На стороне драйвера зависимые компоненты и отношения процессов текущего эксперимента будут получены из БД. Эти компоненты будут выполняться последовательно, а операции, связанные с RDD, будут отправлены в Spark Executor для параллельных вычислений.

Просмотр процесса и оценки

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

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

  • Позиционирование платформы - это не только экспериментальная консоль, но и добавлена ​​функция прогнозирования результатов посадки (автономный расчет)
  • Обучение модели с непрерывным расширением исторических данных должно в большинстве случаев быть цикличным. Мы надеемся помочь пользователям разместить этот процесс на уровне платформы.

v2.0 (расширенные компоненты, автономные вычисления и периодическое планирование)

Во второй версии мы сначала расширили и улучшили соответствующие практические компоненты на основе оригинальной структуры дизайна:

При этом во второй версии мы внесли некоторые улучшения в детали:

  • Отображение состояния процесса моделирования эксперимента, пользователи могут наблюдать за временем выполнения, состоянием, журналом и т. д. каждого компонента.
  • Частичная операция может быть выполнена с использованием полных компонентов.В более сложном эксперименте по моделированию сначала может быть выполнена локальная проверка и настройка параметров.
  • Эксперименты по моделированию поддерживают клонирование

Автономные вычисления

Мы предоставляем инструментальный компонент «полевой посадки», который может сбрасывать результаты предсказания в hdfs в формате csv:

Периодическое планирование и поддержка макропеременных

Еще один из наших продуктов: Big Data Development Kit (BDK), который охватывает функцию периодического планирования, эксперименты по моделированию платформы машинного обучения могут быть встроены в виде подзадач, объединенных с макропеременными (какая-то обычная замена синтаксиса, для например, «/%Y/%m/%d» может быть выражено как текущий день и т. д.) Пользователи могут размещать свои эксперименты по моделированию на нашей платформе для проведения периодических автономных расчетов.

Архитектура

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

v3.0 (прогнозирование в реальном времени и перекрестная проверка)

прогноз в реальном времени

На нашей платформе модель можно обучать с помощью экспериментов по моделированию, а модель можно экспортировать с помощью таких стандартов, как PMML, Точно так же модель можно сохранить в соответствующем каталоге Hdfs в формате паркета с помощью нашей функции экспорта модели. Пользователи могут получить эти стандарты модели и реализовать некоторые функции самостоятельно. Но мы считаем, что функция прогнозирования в реальном времени также может быть абстрагирована на нашей платформе. Итак, в архитектуре 3.0 мы разработали систему tcscoring, которая предоставляет услуги прогнозирования в реальном времени:

Зависимым носителем системы tcscoring является файл модели PMML.Пользователи могут напрямую развернуть файл PMML, соответствующий обученной модели, на платформе машинного обучения или файл PMML, сгенерированный другими путями. После успешного развертывания оставшийся интерфейс для прогнозирования будет возвращен для использования в бизнесе:

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

Перекрестная проверка

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

Перспективы платформы

персонализировать

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

Слияние других пакетов алгоритмов

В настоящее время мы также пытаемся интегрировать пакеты алгоритмов, отличные от spark ml, такие как xgboost, который широко используется. С другой стороны, текущий алгоритм по-прежнему основан на традиционных алгоритмах машинного обучения для глубокого обучения, будь то встроенное в tensorflow или использование некоторых сторонних библиотек глубокого обучения, таких как Deeplearning4j и т. д. Далее мы попытаемся интегрировать эти пакеты алгоритмов за пределы spark ml.

автор

Руководитель платформы машинного обучения Tongcheng, Feng Yuce