Введение

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

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

II/Концепции

млн операций в секунду

MLOps — это подход, применяющий принципы DevOps к проектам машинного обучения. Он направлен на повышение эффективности, воспроизводимости и надежности проектов машинного обучения за счет применения проверенных методов разработки программного обеспечения. MLOps имеет решающее значение для оптимизации управления моделями машинного обучения в области обнаружения лесных пожаров.

Microsoft Azure

Microsoft Azure — это облачная платформа, предоставляющая все необходимые ресурсы для виртуального управления ИТ-операциями. Он предлагает услуги по развертыванию, управлению и эксплуатации решений для машинного обучения, включая обнаружение лесных пожаров. Использование Azure позволяет нам развертывать наши модели в масштабируемой и безопасной облачной среде.

Веса и смещения

Weights and Biases (W&B) — это платформа машинного обучения, которая помогает разработчикам быстрее создавать более качественные модели. Он поддерживает и автоматизирует ключевые этапы жизненного цикла MLOps, такие как отслеживание экспериментов, набор данных и управление версиями модели. W&B обеспечивает визуализацию результатов экспериментов в виде графиков, таблиц и диаграмм. Мы использовали этот функционал для анализа и сравнения производительности разных моделей.

Действия на GitHub

GitHub Actions — это платформа непрерывной интеграции и непрерывной доставки (CI/CD), которая автоматизирует различные задачи разработки программного обеспечения. Это позволяет нам создавать рабочие процессы, которые создают и тестируют каждый запрос на вытягивание, отправленный в репозиторий. Мы интегрировали GitHub Actions в наш рабочий процесс разработки программного обеспечения, чтобы автоматизировать такие задачи, как модульное тестирование, развертывание в Azure и создание отчетов.

FastAPI

FastAPI — это современная, быстрая (высокопроизводительная) веб-инфраструктура для создания API-интерфейсов с помощью Python на основе стандартных подсказок типов Python. Мы использовали эту структуру для разработки веб-сайта по обнаружению лесных пожаров, создания API-интерфейсов для обработки пользовательского ввода, выполнения прогнозов с использованием моделей и возврата результатов. Высокая производительность FastAPI и поддержка RESTful API способствовали эффективной разработке веб-приложений.

Питест

PyTest — это среда тестирования Python, которую мы использовали для автоматизации модульного тестирования нашего кода обнаружения лесных пожаров. Это одна из самых популярных сред тестирования в Python. Мы написали модульные тесты для проверки правильного функционирования каждого компонента нашего приложения, включая модели и API, разработанные с помощью FastAPI. PyTest обеспечил надежность нашего приложения и облегчил тестирование и выявление ошибок.

Наш интерфейс:

Проверка функционирования:

1-случай: лес безопасен

2- cas: Лес в опасности

Модель III/ML:

Исследование и подготовка данных:

Мы начали с изучения набора данных, состоящего из 14 столбцов и 246 строк. В каждом регионе было 122 экземпляра, собранных с июня 2012 г. по сентябрь 2012 г. Мы изучили распределение переменных и проверили наличие пропущенных значений или выбросов. Для обучения наших моделей мы разделили набор данных на наборы для обучения и тестирования, обеспечив соответствующий баланс между положительными (пожар) и отрицательными (без возгорания) экземплярами.

Разработка модели:

Чтобы установить базовый уровень, мы внедрили модель логистической регрессии. Затем мы экспериментировали с четырьмя другими моделями: Random Forest, XGBoost, деревьями решений и наивным байесовским алгоритмом. Каждая модель обучалась на обучающем наборе и оценивалась на тестовом наборе. Мы настроили гиперпараметры моделей, чтобы оптимизировать их производительность.

Показатели оценки и мониторинг:

Чтобы сравнить производительность моделей, мы использовали API мониторинга Weights & Biases (W&B). Мы записали такие показатели, как точность, отзыв, точность, оценка F1 и матрица путаницы. Кроме того, W&B предоставила системную статистику, такую ​​как энергопотребление графического процессора, выделенная память графического процессора, время доступа к памяти графического процессора, температура графического процессора, использование графического процессора и сетевой трафик. Этот всесторонний мониторинг позволил нам получить представление как о производительности модели, так и о системных ресурсах.

Сравнение моделей и обсуждение:

В разделе «Эксперименты/Результаты/Обсуждение» мы представляем подробный анализ характеристик модели. Мы сравниваем точность, воспроизводимость, полноту, оценку F1 и матрицу путаницы для каждой модели. Кроме того, мы обсудим сильные и слабые стороны различных моделей, подчеркнув их пригодность для обнаружения лесных пожаров в условиях Алжира.

IV/CI/CD и развертывание:

Развертывание в Azure:

Для настройки нашей архитектуры мы использовали несколько ресурсов Azure. Взгляните на компоненты, которые мы использовали:

Веб-приложения — контейнер Docker. Мы создали два отдельных веб-приложения в Azure для размещения нашего сайта. Первое веб-приложение было настроено с помощью веб-сервера Nginx для обработки внешнего интерфейса, что обеспечивало бесперебойную и быструю работу пользователей. Второе веб-приложение использовало FastAPI, что позволило нам запустить серверную часть и беспрепятственно интегрировать нашу модель обнаружения.

Реестр контейнеров. Для развертывания мы выбрали два реестра контейнеров в Azure. Эти реестры контейнеров служили репозиториями для наших образов Docker. После того, как мы внесли необходимые изменения в код, мы отправили изменения из нашего репозитория GitHub. Впоследствии мы наладили автоматизированный процесс с использованием конвейерных заданий для непрерывного развертывания (CD). Это позволило нашим веб-приложениям извлекать обновленные образы из реестров контейнеров, обеспечивая эффективное обновление при сохранении надежной и автоматизированной инфраструктуры.

Соединение API: Соединение API сыграло решающую роль в интеграции нашего сайта с внутренними/внешними службами, установлении надежной и безопасной связи. Он предоставил упрощенный и стандартизированный интерфейс для взаимодействия с этими API, упрощая обмен данными (например, входные данные модели в формате JSON между внешним и внутренним приложениями) и операции между нашим сайтом и сторонними службами.

Службы Azure. Мы использовали несколько служб Azure для улучшения нашего развертывания:

  1. Azure Active Directory. Мы использовали Azure Active Directory для управления идентификацией пользователей и доступом. Эта безопасная служба каталогов позволила нам установить централизованную аутентификацию и авторизацию для нашего приложения. Мы могли бы контролировать доступ к ресурсам, внедрять настраиваемые политики безопасности и обеспечивать конфиденциальность данных пользователей.
  2. Служба приложений. Служба приложений предоставила эффективный хостинг для наших веб-приложений, автоматическое управление обновлениями, простое масштабирование и беспрепятственную интеграцию с другими службами Azure.
  3. Контроль доступа (IAM). Мы использовали Azure Identity and Access Management (IAM) для централизованного управления удостоверениями и разрешениями в нашей инфраструктуре Azure. Это позволило нам обеспечить безопасный и детальный контроль доступа к ресурсам путем назначения соответствующих ролей и разрешений каждому пользователю или сервису. Использование IAM повысило безопасность нашего проекта и снизило риски управления доступом.

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

V/Объяснение видео и ССЫЛКИ:

Ссылки:

Отчет о проекте

Репозиторий GitHub

Наш веб-сайт

Мониторинг — взвешивание и погрешность