Основные понятия — операции машинного обучения (MLOps) для рабочих процессов искусственного интеллекта и машинного обучения
В этой статье вы узнаете об операциях машинного обучения (MLOps), в том числе о типах методик и инструментов, а также о том, как упростить и ускорить рабочие процессы искусственного интеллекта и машинного обучения на Служба Azure Kubernetes (AKS).
Что собой представляет MLOps?
Операции машинного обучения (MLOps) включают методики, которые упрощают совместную работу между специалистами по обработке и анализу данных, ИТ-операциями и заинтересованными лицами бизнеса, обеспечивая разработку, развертывание и эффективное обслуживание моделей машинного обучения. MLOps применяет принципы DevOps к проектам машинного обучения, стремясь автоматизировать и оптимизировать комплексный жизненный цикл машинного обучения. Этот жизненный цикл включает обучение, упаковку, проверку, развертывание, мониторинг и переобучение моделей.
MLOps требует эффективной работы нескольких ролей и инструментов. Специалисты по обработке и анализу данных сосредоточены на задачах, связанных с обучением модели, которая называется внутренним циклом. Инженеры машинного обучения и ИТ-специалисты обрабатывают внешний цикл, где применяются методики DevOps для упаковки, проверки, развертывания и мониторинга моделей. Когда модель нуждается в тонкой настройке или переобучение, процесс циклирует обратно во внутренний цикл.
Конвейер MLOps
Конвейер MLOps может использовать различные средства и микрослужбы, которые развертываются последовательно или параллельно. Ниже приведены примеры ключевых компонентов в конвейере, которые пользуются преимуществами реализации следующих рекомендаций по снижению затрат и позволяют ускорить итерацию:
- Неструктурированное хранилище данных для новых потоков данных в приложение
- Векторная база данных для хранения и запроса структурированных предварительно обработанных данных
- Платформа приема и индексирования данных
- Векторный прием и (или) переобучение рабочих процессов переобучения моделей
- Средства сбора метрик и оповещений (производительность модели отслеживания, объем приема данных и т. д.)
- Средства управления жизненным циклом
DevOps и MLOps
DevOps — это сочетание инструментов и методик, позволяющих создавать надежные и воспроизводимые приложения. Цель использования DevOps — ускорить доставку ценности конечным пользователям. Создание, развертывание и мониторинг надежных и воспроизводимых моделей для обеспечения ценности конечным пользователям является основной целью MLOps.
Существует три процесса, которые важны для MLOps:
- Рабочие нагрузки машинного обучения, для которых отвечает специалист по обработке и анализу данных (EDA), проектированию признаков и обучению и настройке моделей.
- Методики разработки программного обеспечения, включая планирование, разработку, тестирование и упаковку модели для развертывания.
- Операционные аспекты развертывания и обслуживания модели в рабочей среде, включая выпуск, настройку ресурсов и мониторинг модели.
Принципы DevOps, применяемые к MLOps
MLOps использует несколько принципов от DevOps для улучшения жизненного цикла машинного обучения, таких как автоматизация, непрерывная интеграция и доставка (CI/CD), управление версиями, гибкое планирование и инфраструктура в виде кода (IaC).
Автоматизация
Автоматив задачи, вы можете уменьшить ошибки вручную, повысить эффективность и обеспечить согласованность в жизненном цикле машинного обучения. Автоматизация может применяться к различным этапам, включая сбор данных, обучение модели, развертывание и мониторинг. С помощью автоматизации можно также применять упреждающие меры в конвейере ИИ, чтобы обеспечить соответствие данных политикам вашей организации.
Например, конвейер может автоматизировать:
- Настройка или переобучение модели через регулярные интервалы времени или при сборе определенного количества новых данных в приложении.
- Обнаружение снижения производительности для точной настройки или переобучения в другом подмножестве данных.
- Распространенная проверка уязвимостей и уязвимостей (CVE) на базовых образах контейнеров, извлекаемых из внешних реестров контейнеров, чтобы обеспечить безопасные методики безопасности.
Непрерывная интеграция (CI)
Непрерывная интеграция охватывает создание и проверку аспектов процесса разработки модели. Цель CI — создать код и проверить качество кода и модели перед развертыванием. Это включает тестирование на диапазон выборочных наборов данных, чтобы гарантировать, что модель выполняется должным образом и соответствует стандартам качества.
В MLOps ci может включать следующее:
- Рефакторинг произвольного кода в записных книжках Jupyter в скрипты Python или R.
- Проверка новых входных данных для отсутствующих или ошибок.
- Модульное тестирование и тестирование интеграции в сквозном конвейере.
Для выполнения линтинга и модульного тестирования можно использовать такие средства автоматизации, как Azure Pipelines в Azure DevOps или GitHub Actions.
Непрерывная поставка (CD)
Непрерывная доставка включает шаги, необходимые для безопасного развертывания модели в рабочей среде. Первым шагом является упаковка и развертывание модели в предварительно рабочих средах, таких как среды разработки и тестирования. Переносимость параметров, гиперпараметров и других артефактов модели является важным аспектом для поддержки по мере продвижения кода в этих средах. Эта переносимость особенно важна, когда речь идет о крупных языковых моделях (LLM) и стабильных моделях диффузии. После прохождения модульных тестов и тестов проверки качества (QA) модель может утвердить ее для развертывания в рабочей среде.
Управление исходным кодом
Управление версиями или управление версиями имеет важное значение для управления изменениями кода и моделей. В системе машинного обучения это относится к версиям данных, управление версиями кода и управление версиями моделей, которые позволяют кроссфункциональным командам эффективно работать и отслеживать изменения с течением времени. Использование системы управления версиями на основе Git, например Azure Repos в Azure DevOps или репозитория GitHub, позволяет программно поддерживать журнал изменений, вернуться к предыдущим версиям и управлять ветвями для различных экспериментов.
Гибкое планирование
Гибкое планирование включает изоляцию работы в спринтах, которые являются короткими кадрами времени для выполнения конкретных задач. Такой подход позволяет командам быстро адаптироваться к изменениям и обеспечивать добавочные улучшения модели. Обучение моделей может быть непрерывным процессом, а планирование гибкой обработки может помочь в области проекта и обеспечить лучшее выравнивание команды.
Вы можете использовать такие инструменты, как Azure Boards в Azure DevOps или GitHub, для управления планированием Гибкой работы.
Инфраструктура как код (IaC)
Инфраструктура используется в качестве кода для повторения и автоматизации инфраструктуры, необходимой для обучения, развертывания и обслуживания моделей. В системе машинного обучения IaC помогает упростить и определить соответствующие ресурсы Azure, необходимые для конкретного типа задания в коде, и код сохраняется в репозитории. Это позволяет управлять инфраструктурой и вносить изменения в оптимизацию ресурсов, эффективность затрат и т. д. по мере необходимости.
Следующие шаги
Ознакомьтесь со следующими статьями, чтобы узнать о рекомендациях по MLOps в интеллектуальных приложениях в AKS:
Azure Kubernetes Service