Некоторые уроки, извлеченные из первых нескольких лет работы инфраструктуры машинного обучения Uber.

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



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

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

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

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

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

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

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

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

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

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

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

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

3. Данные — это самое трудное, что нужно сделать правильно

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

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

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

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

5-Автоматизация оптимизации

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

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