MLOps: DevOps для машинного обучения

Оглавление

Традиционная разработка программного обеспечения против машинного обучения
Рабочий процесс машинного обучения
Этап №1: Управление данными
- Большой размер данных
- Высокое качество
- Контроль версий данных
- Местоположение
- Безопасность и соответствие
Этап №2: Эксперименты
- Постоянный Рабочий процесс исследования и экспериментов
- Отслеживание экспериментов
- Качество кода
- Время обучения и устранение неполадок
- Оценка точности модели
- Переподготовка
- Требования к инфраструктуре
Этап №3: Развертывание производства
- Автономное / онлайн-прогнозирование
- Деградация модели
Заключение

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

«Лишь небольшая часть реальных систем машинного обучения состоит из кода машинного обучения, как показано маленьким черным квадратом посередине (см. Диаграмму ниже). Необходимая окружающая инфраструктура обширна и сложна ».

Традиционная разработка программного обеспечения против машинного обучения

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

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

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

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

Этап # 1: Управление данными

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

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

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

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

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

Внимание: Убедитесь, что это того стоит. Если вы можете обойтись без этой сложности и управлять делами централизованно, я бы порекомендовал вам это сделать.

Безопасность и соответствие: в некоторых случаях используемые данные могут быть конфиденциальными или должны соответствовать определенным стандартам соответствия (например, HIPAA, PCI или GDPR). Вы должны помнить об этом, когда поддерживаете системы машинного обучения.

Этап # 2: экспериментирование

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

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

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

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

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

Время обучения и устранение неполадок. Обучение модели обычно требует часов, а иногда и дней, и требует специальной инфраструктуры (см. задачу № 4 ниже). Например, полная сборка нейронных сетей Tesla Autopilot требует 70 000 часов GPU для обучения согласно их веб-сайту. Поскольку обучение обычно занимает много времени, вам необходимо иметь возможность облегчить устранение неполадок, используя такие аспекты, как мониторинг, ведение журнала, оповещение и проверка в процессе обучения. Если в процессе обучения возникают ошибки, важно предоставить простые способы решения проблемы и продолжить / возобновить обучение.

Оценка точности модели. После обучения необходимо оценить точность модели, чтобы убедиться, что она соответствует стандарту, необходимому для прогнозирования в производственной среде. Как видно на диаграмме № 3 выше, вы повторяете этапы обучения / управления данными, чтобы продолжать повышать точность, пока не достигнете приемлемого числа.

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

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

Пограничные устройства (IoT, мобильные и т. Д.), Такие как серия Nvidia Jetson, все больше и больше используются в наши дни, и развертывание на этих устройствах - еще одна проблема, поскольку эти устройства в основном используют архитектуру ARM вместо x86, которая имеет ограниченные ресурсы. На этих устройствах необходимо проверить модели на точность и производительность.

Из-за отсутствия поддержки определенных зависимостей и их последних версий для архитектуры ARM помогает наличие хороших практик построения пакетов / моделей.

Этап № 3: Развертывание производства

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

Автономное / онлайн-прогнозирование: в зависимости от модели и способа ее использования в производственной среде с данными в реальном времени вам, возможно, придется поддерживать автономное (пакетное) прогнозирование или онлайн-прогнозирование (в реальном времени). Вам нужна соответствующая структура для обслуживания модели в зависимости от типа (пакетная или в режиме реального времени). Если это пакетный прогноз, убедитесь, что вы можете запланировать пакетное задание соответствующим образом и в режиме реального времени, вам нужно беспокоиться о времени обработки, поскольку результат обычно требуется обратно синхронно.

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

Заключение

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

Благодарности: Приянка Рао и Бобби Вагнер прочитали черновой вариант этой статьи и предоставили отзывы, чтобы улучшить ее.

Также опубликовано на моем сайте.