В 2015 году, когда мы приступили к развертыванию платформы машинного обучения Микеланджело от Uber, мы заметили интересную закономерность: 80 % моделей машинного обучения, запущенных на платформе, основаны на операционныхвариантах использования машинного обучения, которые напрямую влияют на опыт конечного пользователя (гонщиков и водителей Uber). Только 20 % — это варианты использования аналитического машинного обучения, которые способствуют принятию аналитических решений.

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

Оперативное машинное обучение было ключом к успеху Uber, и долгое время казалось, что это могут сделать только технологические гиганты. Но хорошая новость заключается в том, что за последние 7 лет многое изменилось. Существуют новые технологии и тенденции, которые позволяют любой компании перейти от преимущественно аналитического ML к использованию операционного ML, и у нас есть несколько советов для тех, кто хочет это сделать. Давайте углубимся.

Операционное ML против аналитического ML

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

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

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

Общие примеры включают прогнозирование продаж, прогнозирование оттока и сегментацию клиентов.

Оперативное машинное обучение на практике

Давайте более конкретно рассмотрим реальный пример оперативного машинного обучения от Uber Eats. Когда вы открываете приложение, оно рекомендует список ресторанов и предлагает, как долго вам придется ждать, пока заказ не появится на вашем пороге. То, что выглядит просто в приложении, на самом деле довольно сложно за кулисами:

Чтобы в итоге отобразить в приложении «Тако Отто» и «20–30 минут», платформе машинного обучения Uber необходимо просмотреть широкий массив данных из различных источников необработанных данных:

  • Сколько водителей сейчас в районе ресторана? Они доставляют заказ или они доступны для следующей отправки?
  • Насколько загружена сейчас кухня ресторана? Чем больше заказов в настоящее время обрабатывает ресторан, тем больше времени им потребуется, чтобы начать работу над новым заказом.
  • Какие рестораны клиент оценивал высоко и плохо в прошлом?
  • Какую кухню пользователь сейчас активно ищет?
  • И… каково текущее местоположение пользователя?

Feature Platform Микеланджело преобразует эти данные в функции машинного обучения. Это сигналы, на которых обучается модель и которые она использует для создания прогнозов в режиме реального времени. Например, «num_orders_last_30_min» используется в качестве входной функции для прогнозирования времени доставки, которое в конечном итоге появится в вашем мобильном приложении.

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

Тенденции, обеспечивающие операционное машинное обучение

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

Исторические данные хранятся почти бесконечно

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

Хранилища данных разрушаются

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

Данные в режиме реального времени доступны с потоковой передачей

Нам в Uber повезло иметь «центральную нервную систему» ​​для потоков данных: Kafka. Через Kafka передается множество сигналов от сервисов и мобильных приложений в режиме реального времени. Это имеет решающее значение для оперативного машинного обучения.

Вы не сможете обнаружить мошенничество, если будете знать только то, что произошло вчера. Вам нужно знать, что произошло за последние 30 секунд. Хранилища данных и озера данных созданы для долгосрочного хранения исторических данных. И за последние несколько лет мы стали свидетелями массового внедрения потоковой инфраструктуры, такой как Kafka или Kinesis, для обеспечения приложений сигналами в реальном времени.

MLOps обеспечивает быструю итерацию

В Uber отдельные инженеры имеют право ежедневно вносить изменения в производственную систему. Этот процесс поддерживается соблюдением и автоматизацией принципов DevOps. С Микеланджело мы привнесли эти принципы в операционное машинное обучение до того, как этот процесс стал называться MLOps 🙂. Нам было важно, чтобы дата-сайентисты смогли обучить модели и безопасно развернуть их в продакшне буквально за один день.

За пределами Uber и далеко за пределами Силиконовой долины мы наблюдаем растущее число первопроходцев, которые привносят принципы и автоматизацию DevOps не только в свою разработку программного обеспечения, но и в свои группы по обработке и анализу данных с помощью MLOps. Конечно, машинное обучение все еще гораздо более болезненно, чем программное обеспечение для большинства компаний, по причинам, которые я изложил в этом блоге. Но я убежден, что отрасль неуклонно движется к будущему, в котором ваш типичный специалист по данным в вашей типичной организации из списка Fortune 500 сможет повторять операционную модель машинного обучения несколько раз в день.

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

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

Начните с операционного машинного обучения

В 2013 году Uber не использовал машинное обучение в производстве. Сегодня в производстве находятся десятки тысяч моделей. Это изменение не произошло в одночасье.

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

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

Не все проблемы можно решить с помощью ML. Квалификаторы проблемы, которая может хорошо подходить для ML:

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

Если эти элементы верны, приложение машинного обучения может принимать решения, учиться на этих решениях и постоянно совершенствоваться.

Выберите вариант использования, который действительно имеет значение

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

Расширьте возможности небольшой команды и сведите к минимуму заинтересованные стороны для своей первой модели

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

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

Не проходите через это в одиночку

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

Оперативное машинное обучение продолжит революционизировать целые отрасли. Не все приложения хорошо подходят для этого, но для тех, которые подходят, операционное машинное обучение будет ключевым отличием между победителями и проигравшими. Если у вас есть приложение, которое выиграет от этого, вам следует подумать о внедрении элементов современной архитектуры данных и поэкспериментировать с вашими первыми вариантами использования. Усилия того стоят. И когда вы столкнетесь со стенами (мы все были там), не стесняйтесь написать мне прямо в Tecton & Feast Community Slack или отправляйтесь в сообщество MLOps и попросите о помощи.