В последние дни многие компании решили инвестировать в машинное обучение для получения интеллекта и информации. Они набирают более талантливых специалистов по данным, инженеров машинного обучения для решения бизнес-задач с помощью ИИ. Если вас наняли в качестве Data Scientist или ML Engineer, вы начнете анализировать бизнес-проблему и придумаете модель, решив все сложные задачи x-science и y-math, настроите ее для достижения желаемой точности и спланируете развертывание. это в производственной среде.

Это выглядит очень просто. Но в реальном сценарии это довольно сложно. Знаете ли вы, что в недавнем отчете Deeplearning.ai говорится, что «только 22 процента компаний, использующих ИИ/машинное обучение, успешно развернули модель».

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

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

Рабочий процесс этой задачи:

  1. Первоначально мы начнем с создания образа Docker с предустановленными библиотеками, которые необходимы для создания модели, обучения, настройки гиперпараметров с использованием файла Docker. Используя этот образ, мы запустим контейнер для развертывания модели машинного обучения.
  2. Как только разработчик отправит код на GitHub, перетащите код из GitHub в Jenkins через опрос SCM. Он автоматически скопирует код из рабочей области Jenkins в папку Mlops, созданную в Red Hat Linux.
  3. Проверьте код. Если код содержит модель глубокого обучения, такую ​​как CNN, запустите контейнер с предустановленным keras или запустите соответствующий контейнер (например, Sci-kit Learn). Обучите модель и получите точность
  4. Найдите точность модели. Если точность меньше порогового значения, настройте архитектуру, настроив гиперпараметры, и переобучите модель, пока она не достигнет желаемой точности.
  5. Если желаемая точность достигнута, отправьте письмо разработчику с указанием статуса и точности модели. Затем разверните модель в контейнере с предустановленным Flask и запустите приложение flask для работы.
  6. Контролируйте развертывание модели. Если контейнер остановился из-за какой-либо проблемы, перезапустите контейнер с того места, где он остановился ранее.

В приведенной выше архитектуре вы можете увидеть обзор завершенной задачи в верхнем конце. Здесь мы используем Git, Jenkins, Docker и Flask для автоматизации задачи.

Зачем возиться со всеми этими теориями. Давайте начнем с грязных рук, чтобы автоматизировать процесс.

Шаг 1. Создайте Docker-файл для глубокого обучения, машинного обучения и образа приложения Flask с предустановленными Python и библиотеками

  • После создания Docker-файла создайте образ Docker, используя приведенный ниже фрагмент кода.
docker build -t krsconimg:v1 /root/myap/docker/
  • Приведенный выше код создаст образ контейнера с именем krsconimg:v1 (контейнер Keras для глубокого обучения) с использованием файла dockerfile, расположенного в /root/myapp/docker/.
docker build -t sklconimg:v1 /root/sklapp/docker/
  • Приведенный выше код создаст образ контейнера с именем sklconimg:v1 (контейнер Sklearn для машинного обучения) с использованием файла dockerfile, расположенного в /root/sklapp/docker/.
docker build -t flaskdocker:v1 /root/mlops/docker/
  • Приведенный выше код создаст образ контейнера с именем flaskdocker:v1 (контейнер Flask для развертывания модели) с использованием файла dockerfile, расположенного по адресу /root/mlops/docker/.

Шаг 2. Создание задания 1 в Jenkins (получите код model_build из GitHub, отправленный разработчиком)

  • Триггер PollSCM продолжает проверять репозиторий GitHub, если в коде есть какие-либо изменения, он автоматически извлечет код и скопирует его в каталог /root/mlops.
  • Здесь я использую набор данных рукописных цифр для создания модели из-за его меньшего веса и простоты.

Вы можете получить доступ к репозиторию GitHub, щелкнув ссылку

Шаг 3. Задание 2 Проверка скопированного кода и запуск соответствующего контейнера для обучения модели

  • Как видите, задание 2 запустится только в том случае, если задание 1 завершится успешно.

  • Задание 2 проверит код, запустит соответствующий контейнер, обучит модель и скопирует точность в файл accuracy.txt.
  • В коде model_build.py мы используем аргумент командной строки для настройки модели.

Шаг 4. Задание 3. Сравните точность с пороговым значением и настройте архитектуру, если точность меньше порогового значения

  • Это задание запустится только в случае успешного выполнения задания 2.

Примечание. Это наиболее важная часть этой автоматизации. Настройка архитектуры модели путем добавления слоев и изменения фильтров в CNN.

Здесь я установил порог 97%. Если точность меньше порога, он настроит гиперпараметр, добавив слой conv2d, и изменит фильтр, изменив аргумент командной строки, например (1,2,3 и т. д.). См. рис. 7

  • Если задание 3 завершается неудачей, оно запускает задание 6.

Шаг 5. Задание 4. Отправьте письмо разработчику с указанием точности и статуса модели и скопируйте файл model.h5 (окончательная модель) в /root/mlops/git2docker.

Копия письма

  • Когда модель достигнет точности 97%, она отправит письмо разработчику следующим образом.

После копирования model.h5 в gi2docker (папка приложения Flask) древовидная структура папок будет выглядеть примерно так.

Шаг 6. Задание 5. Разверните окончательную модель в контейнере приложения Flask и запустите ее.

  • После развертывания фляжного приложения в контейнере flaskv1. Мы можем получить доступ к приложению, используя URL http://127.0.0.1:24000/

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

Шаг 7. Задание 6 для мониторинга krsconv1 и его запуска в случае сбоя из-за какой-либо проблемы

  • Задание 6 продолжит отслеживать krsconv1 и перезапустит контейнер, если он остановится.

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

Подведение итогов:

В этой статье мы автоматизировали задачу Mlops с помощью git, docker, Jenkins и flask. Этот процесс можно дополнительно улучшить с помощью Kubernetes и настройки гиперпараметров и тестирования кодов с дополнительными условиями в Jenkins.

Надеюсь, вам понравилась эта статья. Делитесь своими ценными отзывами и идеями для совместной работы.

Продолжайте учиться…..

Продолжайте делиться…..