Интеграция машинного обучения с DevOps и Docker

Почему большинство проектов машинного обучения не реализуются? Потому что изменение гиперпараметра — очень громоздкая и утомительная задача. Что такое гиперпараметры?

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

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

* Предпосылки для завершения этого проекта: -

  1. Докер
  2. Дженкинс
  3. Для бесперебойной работы попробуйте использовать ОС на базе Linux.
  4. Гит
  5. Гитхаб.

* Что мы должны сделать:-

1. Создайте образ контейнера с Python3 и Keras или NumPy, установленными с помощью Dockerfile.

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

3. Создайте цепочку заданий job1, job2, job3, job4 и job5, используя плагин конвейера сборки в Jenkins.

4. Задание 1: автоматическое получение репозитория Github, когда некоторые разработчики отправляют репозиторий на Github.

5. Job2: просматривая код или файл программы, Дженкинс должен автоматически запустить соответствующее программное обеспечение для машинного обучения, установить интерпретатор, установить контейнер образа, чтобы развернуть код и начать обучение (например, если код использует CNN, тогда Дженкинс должен запустить контейнер, который уже установлено все программное обеспечение, необходимое для обработки CNN).

6. Job3: Обучите свою модель и спрогнозируйте точность или показатели.

7. Задание 4: если точность метрик меньше 80%, настроить архитектуру модели машинного обучения.

8. Job5: переобучить модель или уведомить, что создается лучшая модель

9. Создайте одно дополнительное задание job6 для монитора: если контейнер, в котором запущено приложение. происходит сбой по какой-либо причине, то это задание должно автоматически снова запускать контейнер с того места, где осталась последняя обученная модель.

* Шаги, чтобы следовать: -

  1. Создание одного каталога, в который мы помещаем все файлы и папки в системе redhat8.
# mkdir /mlops_pro
# cd mlops_pro

2. Теперь здесь мы создаем один Dockerfile для создания образа для запуска нашей модели CNN.

Сохранение и после этого сборка образа с помощью команды

#  docker build -t tensorflow:latest .

* Теперь создание рабочих мест: -

  1. Job1: — Автоматически извлекайте репозиторий Github, когда некоторые разработчики отправляют репозиторий на Github.

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

Это задание запустится после успешного запуска job1. Теперь с помощью приведенного выше изображения будет запущен контейнер, если код принадлежит CNN.

3. Job3: Обучите свою модель и предскажите точность или показатели.

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

Итак, вы можете видеть, что точность составляет почти 84%, и эта точность была сохранена в одном файле с именем precision.txt, который можно использовать в дальнейшем для тверка нашей модели.

4. Задание 4: если точность метрик меньше 85%, настроить архитектуру модели машинного обучения.

Как вы можете ясно видеть, моя точность составила почти 84%, поэтому мне нужно изменить мою модель для достижения этой предпочтительной точности.

Это задание будет запущено после успешного завершения задания 3.

Я создал один файл twerk.py для настройки нашей модели в соответствии с точностью, полученной в предыдущем задании, то есть в задании3.

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

5. Job5: Переобучите модель или уведомите, что создается лучшая модель.

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

# Python code to illustrate Sending mail from
# your Gmail account
import smtplib
# creates SMTP session
s = smtplib.SMTP('smtp.gmail.com', 587)
# start TLS for security
s.starttls()
# Authentication
s.login("sender_email_id", "sender_email_id_password")
# message to be sent
message = "Message_you_need_to_send"
# sending the mail
s.sendmail("sender_email_id", "receiver_email_id", message)
# terminating the session
s.quit()

Это файл mail.py.

Получил письмо о получении максимальной точности для модели.

6. Создайте одно дополнительное задание job6 для монитора: если контейнер, в котором запущено приложение. происходит сбой по какой-либо причине, то это задание должно автоматически снова запускать контейнер с того места, где осталась последняя обученная модель.

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

Ссылка Github для доступа к коду и файлу для этого проекта: -



Спасибо!!