СОДЕРЖАНИЕ

  • Моделирование — это не последний горизонт, приготовьтесь к производству
  • Изменение чего-либо меняет все (экспериментальное отслеживание)
  • Подготовьтесь к изменениям данных (мониторинг и оповещения)
  • Модели устаревают — следите за ними (цикл обратной связи и A/B-тестирование)
  • Подготовка данных и «кухонная раковина» (конвейер и планировщик)
  • Что делает платформу машинного обучения отличной для производства

Моделирование — это не конечный горизонт, приготовьтесь к производству

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

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

При изменении чего-либо изменяется все (экспериментальное отслеживание)

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

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

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

Таким образом, вы можете подумать, что программное обеспечение для контроля версий, подобное Git, — это серебряная пуля для отслеживания всех изменений. Вы можете подумать, как это может быть неправильно? Дело в том, что ты не можешь сказать. Сколько раз вы сталкивались с ситуацией, когда ваш ноутбук вдруг перестал вести себя так, как шесть месяцев назад? Думая о том, что могло измениться, вы начнете задаваться вопросом, что пошло не так:

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

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

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

Подготовьтесь к изменениям данных (мониторинг и оповещения)

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

Здесь вопрос на миллион или миллиард долларов не в том, будут ли данные ошибочными или нет? Вместо этого это: как я реагирую, когда данные неверны? Потому что, без сомнения, данные будут ошибочными, уверяю вас!

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

Первая категория отказа? Громоздкие проблемы с данными, обнаруженные в рабочей среде — данные в плохом формате, данные вне допустимого диапазона или просто отсутствующие данные. Их часто объединяет то, что основная причина связана с внешним «улучшением» ИТ-системы компании. Чтобы проиллюстрировать, классический и раздражающий пример — это когда ИТ-специалист по соседству решает переименовать некоторые функции данных. Как человек, вы, вероятно, можете принять переименование переменной passengerId в passenged_id в качестве улучшения и неявно адаптироваться к ней. Но ваша модель машинного обучения не будет такой гибкой, и она может незаметно вернуться к отсутствующим данным. Еще один классический пример из окопов — неявное изменение единиц измерения в данных. Когда ваша модель обучалась с американским форматом даты и времени, а затем использовалась в продакшене с европейским, то месяцы превращались в дни и наоборот — гарантированный хаос. Если ваша модель не дает сбоев незаметно, каждый раз, когда вы сталкиваетесь с такого рода проблемами, вы должны быть в состоянии указать на конкретное решение, которое кто-то принял и которое каскадом отразилось на вашей хрупкой модели в производственной среде.

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

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

Модели устаревают — следите за ними (цикл обратной связи и A/B-тестирование)

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

Так как же обнаружить, что что-то идет не так? Ответ прост, но реализация сложна. Чтобы снизить риск разрушения модели, вам просто нужно периодически проверять ее производительность. На жаргоне науки о данных вам нужно сравнить фактические данные (реальные наземные данные) и прогнозы (результаты модели). Сложность заключается в том, что в большинстве случаев фактические данные могут быть известны только спустя много времени после того, как был сделан прогноз.

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

Цикл обратной связи и стратегии A/B-тестирования — это способ смягчить вероятность нарушения прогноза. Ярким примером тому является модель сепсиса от поставщика электронных медицинских карт EPIC, которая в течение двух лет широко использовалась индустрией здравоохранения. До этого независимое исследование показало, что модель несовершенна в реальном мире — и это оказалось правдой. Это можно было бы отследить и исправить раньше, если бы были созданы надежные петли обратной связи.

Подготовка данных и «кухонная раковина» (конвейер и планировщик)

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

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

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

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

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

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

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

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

Делай то, что умеешь лучше всего. Примените свои таланты для решения бизнес-задач, а мы возьмем на себя техническую рутинную работу по созданию, развертыванию и мониторингу ваших высокопроизводительных моделей. Если вы хотите попробовать сами, посетите нас на www.prevision.io, чтобы узнать больше.

Автор: Николя Гауд, соучредитель Prevision.io