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

Машинное обучение (сокращенно ML) является неотъемлемой частью ДНК Qucit. Действительно, миссия Qucit - предложить «лучший пользовательский интерфейс для городов с помощью ИИ». Для этого мы развиваем 4 разные вертикали с акцентом на мобильность:

  • Qucit Bike: Повышение удобства использования мобильных устройств самообслуживания за счет прогнозирования спроса
  • Qucit Parking: повышение впечатлений автомобилистов за счет прогнозирования их поведения.
  • Qucit Road: прогнозирование происшествий и приближающихся дорожных условий для повышения безопасности дорожного движения и повышения эффективности использования сети пользователями и патрулями.
  • Qucit Comfort: Повышение удобства пользования общими пространствами за счет определения и количественной оценки факторов благополучия и дискомфорта.

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

Эта зависимость от машинного обучения означает, что разработка моделей должна быть максимально плавной и как можно быстрее переходить от прототипа (обычно ноутбука jupyter) к производству. Так было не всегда.

Фактически, на заре Qucit разработка и запуск в производство новой модели машинного обучения была сложной задачей. Действительно, каждая новая модель означала написание новых обучающих конвейеров, кода для создания функций, развертывание модели и многое другое. Это привело к значительному дублированию кода, сильной связи между наукой о данных и разработкой API, а также сделало развертывание новых моделей распределенной ответственностью: если это будет делать специалист по данным, специалист по анализу данных. конечный инженер или и то, и другое?

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

Есть ли лучшее решение?

Платформа машинного обучения спешит на помощь

Как вы уже догадались, платформа - это лучший выбор.

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

Давайте сделаем шаг назад и сосредоточимся на том, зачем нам вообще нужна была платформа машинного обучения:

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

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

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

Строительные блоки платформы машинного обучения

Разработка модели машинного обучения - это гораздо больше, чем просто вызов методов fit и прогноз (кстати, это самые простые в реализации части). На рисунке ниже (отсюда) видно, что раздел кода ML самый маленький и требуется целый ряд других сервисов, в том числе:

  • Сбор данных
  • Генерация функций
  • Обучение моделей
  • Отслеживание моделей
  • Развертывание моделей
  • Прогнозы моделей
  • Мониторинг моделей
  • И многое другое

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

Далее мы более подробно рассмотрим каждый из этих компонентов.

Внутренние библиотеки и службы машинного обучения в Qucit

Как упоминалось выше, UPP - это набор служб и внутренних библиотек, составляющих нашу платформу машинного обучения. Он состоит из трех основных библиотек, а именно Qfeatures, Qscientist и Qpreprocessor, и одной службы, а именно Qucit Models.

Qfeatures

Библиотека функций, которая содержит различные инструменты для создания:

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

Qscientist

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

Q препроцессор

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

  • Загрузка данных: функция получения данных, в основном, из S3 (облачное хранилище объектов).
  • Обработка данных: функция для агрегирования, вменения отсутствующих данных, целевого преобразования и других этапов обработки.
  • Обучение модели: импорт модели из библиотеки Qscientist и подгонка к данным обучения.
  • Сохранение модели: сохранение модели и загрузка в S3.

Модели Qucit

Это наша центральная производственная служба, которая используется для следующих частей:

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

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

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

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

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

Вот как это делается:

  1. В библиотеку Qpreprocessor добавлен новый конвейер обучения: этот конвейер включает загрузку данных (из S3), обработку данных, оптимизацию гиперпараметров и сериализацию модели.
  2. После обучения модель загружается в S3 для дальнейшего использования (и для отслеживания всех моделей).
  3. Затем модель развертывается в Qucit Models с помощью интерфейса командной строки (сначала в промежуточном экземпляре, а затем в производственной среде).
  4. Новая модель теперь доступна и может быть запрошена через Qucit Parking API.

Вот и все, вот и все. При этом в текущем рабочем процессе есть некоторые ограничения.

Улучшенные службы машинного обучения

Одно из текущих ограничений - создание и использование функций. Следуя примеру использования, представим, что новая найденная функция еще не доступна в Qfeatures. Что же тогда делать?

Магазин функций

На данный момент функции создаются либо в определении конвейера Qpreprocessor на этапе обучения, либо в службе Qucit Models во время обслуживания (оба с использованием библиотеки Qfeatures).

Таким образом, добавление недавно созданной функции требует трех вещей: добавления ее в Qpreprocessor, Qfeatures и Qucit-Models.

Этот подход работает (в некоторой степени) на данный момент, но не масштабируется и создает много трений.

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

  • Возможности обучения: они будут вычисляться пакетно и сохраняться на S3. После того, как набор функций вычислен, специалисты по анализу данных могут повторно использовать его для других моделей.
  • Функции прогнозов: они будут вычисляться чаще (скажем, каждые 15 минут) и будут доступны для вычисления прогнозов. В производственной базе данных будут храниться только самые последние функции.

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

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

Оптимизация и переподготовка гиперпараметров моделей

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

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

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

Отслеживание моделей

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

Вот почему мы работаем над решением для отслеживания, которое будет автоматически хранить метаданные моделей (дату создания, создателя модели, расположение модели на S3, пакеты среды и т. Д.) При каждом запуске нового конвейера машинного обучения. Эта служба отслеживания упростит развертывание модели, поскольку она синхронизирует необходимые метаданные с моделями Qucit.

Будущая архитектура

Имея в виду эти новые элементы, вот как будет выглядеть следующая версия UPP:

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

Заключение

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

Имейте в виду, что это всего лишь беглый взгляд на экосистему данных в Qucit.

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

Наконец, если вам интересна такая работа, Qucit всегда ищет талантливых специалистов по данным и / или инженеров по данным.

Выйти за рамки

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

Об авторе

Специалист по данным

Яссин - специалист по данным в Qucit. Среди своих задач он гарантирует, что различные модели науки о данных легко интегрируются в различные продукты, API и внутренние инструменты Qucit. В дополнение к этим функциям Яссин активно участвует во внутреннем обмене знаниями и привлечении новых специалистов по данным.

Яссин имеет степень общего инженера в Ecole Centrale Paris и степень магистра статистики в Кембриджском университете.
До прихода в Qucit Яссин работал в Suez Environment над обнаружением аномалий в сети питьевой воды. Незадолго до этого он проводил миссии по эконометрическому консультированию.

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