"Машинное обучение"

Чему Uber научился при создании собственной платформы машинного обучения?

Некоторые уроки, извлеченные после нескольких лет работы Микеланджело.

Недавно я начал выпускать образовательный информационный бюллетень, посвященный ИИ, на который уже подписано более 100 000 человек. TheSequence - это информационный бюллетень, ориентированный на ML (то есть без рекламы, без новостей и т. Д.), На чтение которого уходит 5 минут. Цель состоит в том, чтобы держать вас в курсе проектов, исследовательских работ и концепций машинного обучения. Пожалуйста, попробуйте, подписавшись ниже:



Uber был одним из самых активных разработчиков технологий машинного обучения с открытым исходным кодом за последние несколько лет. В то время как такие компании, как Google или Facebook, сосредоточили свой вклад на новых стеках глубокого обучения, таких как TensorFlow, Caffe2 или PyTorch, команда инженеров Uber действительно сосредоточилась на инструментах и ​​передовых методах создания масштабируемого машинного обучения в реальном мире. Такие технологии, как Michelangelo, Horovod, PyML, Pyro являются одними из примеров вклада Uber в экосистему машинного обучения. Поскольку только небольшая группа компаний разрабатывает крупномасштабные решения для машинного обучения, уроки и рекомендации Uber становятся еще более ценными для практиков машинного обучения (я, безусловно, многому научился и регулярно писал об усилиях Uber).

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

Что такое Микеланджело?

Микеланджело - центральная часть стека машинного обучения Uber. Концептуально Michelangelo можно рассматривать как платформу ML-as-a-Service для внутренних рабочих нагрузок машинного обучения в Uber. С функциональной точки зрения Микеланджело автоматизирует различные аспекты жизненного цикла моделей машинного обучения, позволяя различным командам инженеров Uber создавать, развертывать, отслеживать и эксплуатировать модели машинного обучения в любом масштабе. В частности, Микеланджело абстрагирует жизненный цикл моделей машинного обучения в очень сложном рабочем процессе:

Архитектура Микеланджело использует современный, но сложный стек, основанный на таких технологиях, как HDFS, Spark, Samza, Cassandra, MLLib, XGBoost и TensorFlow.

Микеланджело поддерживает сотни сценариев машинного обучения в разных подразделениях Uber. Например, Uber Eats использует модели машинного обучения, работающие на Michelangelo, для ранжирования рекомендаций ресторана. Точно так же невероятно точное расчетное время прибытия (ETA) в приложении Uber рассчитывается с использованием невероятно сложных моделей машинного обучения, работающих на Michelangelo, которые оценивают ETA сегмент за сегментом.

Чтобы обеспечить такой уровень масштабируемости для десятков групп по обработке данных и сотен моделей, Микеланджело необходимо предоставить очень гибкую и масштабируемую архитектуру, а также соответствующий процесс разработки. Первая версия Michelangelo была развернута в 2015 году, а спустя три года и сотни моделей машинного обучения Uber извлек несколько важных уроков.

1-Обучение требует собственной инфраструктуры

Если вы строите единую модель, у вас возникает соблазн использовать одну и ту же инфраструктуру и инструменты для обучения и разработки. Если вы строите сотню моделей, этот подход не работает. Микеланджело из Uber использует собственный набор инструментов под названием Data Science Workbench (DSW) для обучения моделей в больших кластерах графических процессоров и различных наборах инструментов машинного обучения. Помимо согласованной инфраструктуры, DSW Микеланджело абстрагирует общие задачи процессов обучения машинного обучения, такие как преобразование данных, составление моделей и т. Д.

Две модели нуждаются в мониторинге

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

3-Данные - сложнее всего понять

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

4. Машинное обучение следует оценивать как процесс разработки программного обеспечения

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

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

5-Автоматическая оптимизация

Точная настройка и оптимизация гиперпараметров - бесконечная задача в решениях для машинного обучения. Часто инженеры по науке о данных тратят больше времени на поиск правильной конфигурации гиперпараметров, чем на построение самой модели. Чтобы решить эту проблему, Микеланджело из Uber представил инструмент оптимизации как услуги под названием AutoTune, который использует самые современные алгоритмы байесовской оптимизации черного ящика для более эффективного поиска оптимального набора гиперпараметров. Идея AutoTune Микеланджело состоит в том, чтобы использовать машинное обучение для оптимизации моделей машинного обучения, позволяя инженерам по обработке данных уделять больше времени реализации моделей, а не их оптимизации.

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