Введение
Лесные пожары наносят значительный ущерб нашей окружающей среде, имуществу и безопасности. Раннее обнаружение лесных пожаров и принятие мер по борьбе с ними имеют решающее значение для спасения жизней и сведения к минимуму ущерба. В связи с этим мы разработали несколько моделей для помощи в обнаружении лесных пожаров с использованием заданных переменных. Обнаружение лесных пожаров играет жизненно важную роль в минимизации потерь и защите экосистем, жизней людей и дикой природы.
Мы решили работать над темой обнаружения лесных пожаров и создали несколько моделей для обнаружения пожаров на основе предоставленных переменных. В моделях обнаружения используются такие ключевые характеристики, как "температура, дождь, код влажности сыпучих материалов, скорость ветра, код влажности топлива и индекс начального распространения". Эти функции позволяют модели определять наличие огня и указывать, находятся ли люди в опасности или в безопасности. Репозиторий 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 для улучшения нашего развертывания:
- Azure Active Directory. Мы использовали Azure Active Directory для управления идентификацией пользователей и доступом. Эта безопасная служба каталогов позволила нам установить централизованную аутентификацию и авторизацию для нашего приложения. Мы могли бы контролировать доступ к ресурсам, внедрять настраиваемые политики безопасности и обеспечивать конфиденциальность данных пользователей.
- Служба приложений. Служба приложений предоставила эффективный хостинг для наших веб-приложений, автоматическое управление обновлениями, простое масштабирование и беспрепятственную интеграцию с другими службами Azure.
- Контроль доступа (IAM). Мы использовали Azure Identity and Access Management (IAM) для централизованного управления удостоверениями и разрешениями в нашей инфраструктуре Azure. Это позволило нам обеспечить безопасный и детальный контроль доступа к ресурсам путем назначения соответствующих ролей и разрешений каждому пользователю или сервису. Использование IAM повысило безопасность нашего проекта и снизило риски управления доступом.
Конвейер GitHub Actions. Чтобы автоматизировать важные задачи в нашем проекте, мы использовали рабочие процессы GitHub Actions. Рабочий процесс был запущен нажатием на основную ветку. Это означало, что всякий раз, когда фиксация помещалась в основную ветку, запускался рабочий процесс. Рабочий процесс состоял из нескольких заданий, выполняемых последовательно: