Введение

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

Что такое ML-системы?

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

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

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

Урок 1: Упустите проблему, упустите решение

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

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

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

Урок 2. Изучите роль данных в системе машинного обучения — количество или качество

Система машинного обучения почти так же хороша, как и данные, которые вы в нее вводите. Это можно интерпретировать в разных измерениях. Одна интерпретация граничит с количеством. Это довольно просто; чем больше точек данных вы вводите в свои модели, тем больше шаблонов могут быть поняты моделями, что позволяет делать более точные прогнозы. Просто, верно? Здесь только одна проблема: что отдаешь, то и получаешь — мусор на входе, мусор на выходе! Вот здесь и возникает интерпретация качества. Чтобы получить разумные результаты от систем машинного обучения, используемый набор данных должен быть безошибочным (т. е. правильным), подходящим для обучающего решения и иметь минимальное количество отсутствующих точек данных (т. е. полный), а также складываются, имеют смысл относительно самих себя и правильно обрабатываются выбросы (т. е. данные непротиворечивы).

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

Урок 3. Данные решают все, как и ваш выбор технического дизайна и стратегии

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

Пакетный или в режиме реального времени?

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

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

Глобальная или персонализированная модель?

Еще одна дилемма проектирования заключается в том, чтобы знать, когда повторно использовать модели для разных клиентов, а когда применять гиперперсонализацию при моделировании решений машинного обучения. Гиперперсонализация относится к персонализации модели с высокой степенью специфичности для получения точных прогнозов. Поиск компромисса между повторным использованием модели (одинаковые/глобальные модели машинного обучения для всех клиентов) и гипер-персонализацией может быть затруднен. Это зависит от того, можно ли сгруппировать ваших клиентов в подмножества с более схожим поведением. В программных приложениях для бизнеса (B2B) ваши клиенты могут относиться к совершенно разным вертикалям. Затем ваша команда инженеров может разработать несколько настраиваемых моделей для одних и тех же задач обучения для каждой из этих различных вертикалей. Ваша вертикаль может быть даже ограничена отдельными клиентами.

В Loopio мы изучаем подход модели для каждого клиента для некоторых наших решений, и мы называем это мультитенантными MLOps.

Анализ стоимости и стоимости

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

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

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

Урок 4: Чем больше вы наблюдаете, тем лучше.

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

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

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

Урок 5. Всегда повторяйте решения машинного обучения. Всегда!

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

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

Заключительные слова

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

  1. Держите деловую проблему в центре внимания.
  2. Количество и качество данных важны.
  3. Будьте преднамеренными в выборе технических решений и стратегий.
  4. Крайне важно отслеживать и наблюдать ML в дикой природе.
  5. Повторяйте решение ML для дальнейшего успеха.

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

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

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