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

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

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

Дженкинс Джобс

  • Задание 1. Это задание сначала извлечет коды из Git-Hub, как только коды будут зафиксированы разработчиком, и загрузит их в свою рабочую область с помощью «опроса GITScm».

Затем Jenkins выполнит ряд команд, которые сначала проверят контейнер докеров dl_train_env , если он запущен, он скопирует коды из рабочей области в целевую папку для контейнера, а затем запустит код Main_build.py для обучения модели, которая имеет некоторые низкие гиперпараметры по умолчанию или, можно сказать, первую сборку. Если контейнер не запущен, он запустит контейнер, затем скопирует коды в целевую папку и затем выполнит Main_build.py. Итак, эта работа, наконец, запустит первую сборку или обучение нашей модели.

  • Задание 2: это задание сначала проверит состояние контейнера dl_train_env и, если контейнер запущен, выполнит код Python Rebuild.py, который инициирует вторую сборку для нашей модели с дополнительным плотным слоем. и подправил гиперпараметры, необходимые для достижения желаемой точности нашей модели. Если контейнер не запущен, он сначала запустит новый контейнер, а затем выполнит Rebuild.py. Это задание запускается заданием «job_mail_main_fail», которое вы со временем поймете.

  • Задание 3. Единственной задачей этого задания является постоянный мониторинг док-контейнера dl_train_env каждую минуту.

Для мониторинга я использовал небольшую хитрость в этой работе, используя команду выхода. Таким образом, этот кусок будет проверять состояние контейнера каждую минуту, если контейнер запущен, он выполнит команду выхода 1, которая вернет значение Fail для Jenkins, поэтому задание будет продолжать давать сбой, и это хорошо для нас, потому что это означает, что наш контейнер работает нормально. Как только контейнер остановится или выйдет из строя, он запустит команду exit 0, которая вернет значение «Успех» в Jenkins, поэтому это задание будет успешно завершено в первый раз.

Когда задание завершится успешно, оно выполнит Задание_1, которое снова запустит весь процесс.

  • Job_mail_main_success : это задание выполняется удаленным триггером, который запускается программой Python Main_build.py, и эта программа выполнит это задание, только если мы достигнем желаемой точности для нашей модели. Он выполнит программу Python, которая отправит мультимедийное письмо разработчику о состоянии обучения нашей модели с некоторыми графическими изображениями об обучении модели.
  • Job_mail_main_fail: это задание выполняется удаленным триггером, который запускается программой Python Main_build.py, и эта программа выполнит это задание, если мы не смогли достичь желаемой точности для нашей модели. Он выполнит программу Python, которая отправит разработчику мультимедийное сообщение о состоянии обучения нашей модели с некоторыми графическими изображениями об обучении модели, а также запустит задание 2 с использованием действия после сборки, тем самым запустив перестроение.
  • Job_mail_rebuild_success: это задание выполняется удаленным триггером, который запускается программой Python Rebuild.py, и эта программа выполнит это задание, только если мы достигнем желаемой точности для нашей модели. Он выполнит программу Python, которая отправит мультимедийное письмо разработчику о состоянии обучения нашей модели с некоторыми графическими изображениями об обучении модели.
  • Job_mail_rebuild_fail: это задание выполняется удаленным триггером, который запускается программой Python Rebuild.py, и эта программа выполнит это задание, если мы не достигли желаемой точности для нашей модели по какой-либо другой причине. вместо настройки слоя и гиперпараметров. Он выполнит программу Python, которая отправит мультимедийное письмо разработчику о состоянии обучения нашей модели с некоторыми графическими изображениями об обучении модели.

Дополнительный шаг только в job_mail_main_fail…

Глубокое обучение и коды Python

  • Main_build.py: это базовый код CNN для глубокого обучения, в котором я использую предварительно обученную модель от MobileNet, обученную на наборе данных imagenet, поэтому это очень мощная модель, которая уже знает о многих объекты. Затем мы выполнили трансферное обучение, чтобы использовать мощную предварительно обученную модель MobileNet и переобучить ее в соответствии с нашими потребностями. При сохранении мы будем обучать только новый добавленный слой поверх предыдущей модели и обучать только новые слои в соответствии с их гиперпараметрами для нашего требования. В этой сборке мы добавляем один слой GlobalAveragePooling, три плотных слоя и один выходной слой. Затем модель не будет обучаться, и после обучения она построит два графика, один для значения точности, а другой для значения потерь, и сохранит график в папке как изображение. Другой очень важной частью этой программы является проверка значения полученной точности с желаемой точностью, а затем запуск токена для job_mail_main_success или job_mail_main_fail, таким образом продолжая цепочку выполнения и автоматизации. Вы можете найти коды в моей учетной записи GitHub.
  • Rebuild.py: это основной код, который будет перестраивать нашу модель снова и снова до тех пор, пока модель не достигнет желаемой точности. Он также использует ту же предварительно обученную модель из MobileNet. Мы также проводили трансферное обучение в этой программе и переучивали его в соответствии с нашими потребностями. Таким образом, в целом это один и тот же код, но что отличается и делает его основным кодом для проекта, так это то, что в этой перестройке мы продолжаем добавлять один дополнительный плотный слой и настраиваем гиперпараметры для всех слоев, такие как единицы и размер фильтра, но также мы настраиваем число эпох и размера партии с каждым Rebuild и одним выходным слоем. Затем модель не будет обучаться, и после обучения она построит два графика, один для значения точности, а другой для значения потерь, и сохранит график в папке как изображение. Другой очень важной частью этой программы является проверка значения полученной точности с желаемой точностью, а затем запуск токена для job_mail_main_success или job_mail_main_fail, таким образом продолжая цепочку выполнения и автоматизации. Это основная часть программы Rebuild, которая позволяет ей переобучать модель с лучшими гиперпараметрами при каждой перестройке……

  • mma_main_success.py, mma_main_fail.py, mma_rebuild_success.py, mma_rebuild_fail.py:Все эти коды одинаковы, но с разными сообщениями для разработчика в соответствии со сценарием, который мы можем узнать по названиям программ. . Это программа для отправки письма разработчику с двумя вложениями изображений графика, показывающих статистическую информацию об обучении модели.

Докер-контейнер

  • Dockerfile :создан файл Docker для создания образа Docker, который предоставит среду для запуска нашего кода Python для глубокого обучения. Я создал этот образ, обновив образ tensorflow/tensorflow, и создал свой собственный образ докера, который я загрузил на Docker Hub.

  • Мой образ Docker: вы можете загрузить образ с помощью команды…. «docker pull tripath599/ml_devops_599:v1»

Git (bash и хаб)

Ссылка на репозиторий GitHub:https://github.com/shivamtripathi599/mlops_task3_share.git

  • Git Bash:мы добавляем хук после фиксации, чтобы автоматически отправлять файлы, как только разработчик выполняет фиксацию…

  • Git Hub: коды загружаются в репозиторий Git Hub, и веб-перехватчик готов автоматически запускать задание Jenkins 1, поэтому мы можем использовать возможности автоматизации.

Нгрок

  • Это инструмент, который предоставляет нашей системе Red Hat общедоступный IP-адрес. Он использует некоторую концепцию туннелирования между частным IP-адресом системы Red Hat и общедоступным IP-адресом ngrok. Зачем я это делаю?? Ответ заключается в том, что для работы Git Hub Webhook требуется общедоступный IP-адрес, а в нашей системе Red Hat его нет, поэтому мы используем небольшой трюк, чтобы заставить его работать.

Создание конвейеров

  • Задача_3. Этот конвейер находится между job_mail_main_fail и заданием 2, предназначенным для перестроения модели с улучшенными гиперпараметрами.

  • Монитор: этот конвейер находится между заданием 3, которое имеет только одну задачу, и которое отслеживает док-контейнер dl_train_env, и, как я объяснял ранее, если это задание продолжает давать сбои, это хороший знак.

  • Моя панель инструментов Jenkins

Общие сведения о модели и различия

  • Сводка первой модели:Dense Layer = 4, Epoch = 3, размер пакета = 16 и Units/DenseLayer

  • Сводка по второй модели:Dense Layer = 5, Epoch = 6, размер пакета = 32 и Units/DenseLayer

  • Успешно достигнута желаемая точность:

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

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