Skip to content

SoldierID101/CloudCS-Lab1-Weather-Inference

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CloudCS Lab 1 — Weather Inference Service

Лабораторная работа №1

«Изучение синхронного инференса с применением веб-сервиса»

Дисциплина: Облачные вычислительные системы


Цели и задачи работы

Целью лабораторной работы является изучение принципов организации синхронного инференса моделей машинного обучения с использованием веб-сервиса.

В ходе выполнения работы необходимо:

  • познакомиться с понятием инференса в системах машинного обучения;
  • изучить протокол HTTP и принципы микросервисной архитектуры;
  • освоить методы сохранения обученной модели;
  • получить практические навыки проектирования и разработки веб-сервисов;
  • реализовать API сервис для инференса модели машинного обучения;
  • реализовать модульные тесты;
  • настроить CI-конвейер в GitHub Actions для автоматического тестирования сервиса.

1. Постановка задачи

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

Сервис должен принимать входные данные через HTTP-запрос, передавать их в обученную модель и возвращать результат предсказания. В качестве архитектурного решения используется микросервисный подход, при котором модель машинного обучения разворачивается в виде отдельного сервиса.

Основные требования к системе:

  • использование обученной модели машинного обучения;
  • реализация REST API для взаимодействия с сервисом;
  • использование механизма авторизации;
  • обработка корректных и ошибочных запросов;
  • наличие модульных тестов;
  • автоматическая проверка проекта с использованием CI.

Разработанный сервис принимает погодные параметры и возвращает предсказание температуры.


2. Описание модели машинного обучения

В проекте используется модель машинного обучения для прогнозирования температуры на основе метеорологических данных.

Входными признаками модели являются:

  • hour — час наблюдения
  • month — месяц
  • precipitation — количество осадков
  • pressure — атмосферное давление
  • humidity — влажность воздуха
  • wind_speed — скорость ветра
  • latitude — широта
  • longitude — долгота
  • height — высота над уровнем моря

Целевая переменная — температура воздуха.

Модель обучается на датасете погодных наблюдений.

Для упрощения применения модели используется Scikit-Learn Pipeline, который включает:

  • этапы предварительной обработки данных;
  • модель машинного обучения.

Pipeline сохраняется в файл:

models/weather_pipeline.pkl

Это позволяет использовать модель напрямую для инференса без повторного обучения.


3. Описание API сервиса

Сервис реализован с использованием фреймворка FastAPI.

Основной endpoint

POST /predictions

Этот метод выполняет инференс модели машинного обучения.

Пример запроса

{
  "hour": 12,
  "month": 6,
  "precipitation": 0.0,
  "pressure": 1008.0,
  "humidity": 75.0,
  "wind_speed": 3.5,
  "latitude": -3.1,
  "longitude": -60.0,
  "height": 61.25
}

Пример ответа

{
  "temperature": 27.83
}

Авторизация

Для доступа к сервису используется Bearer Token.

Пример заголовка:

Authorization: Bearer 00000

Если токен неверный или отсутствует, сервис возвращает ошибку:

{
  "detail": "Invalid authentication credentials"
}

4. Реализация сервиса

Сервис реализован на языке Python с использованием следующих библиотек:

  • FastAPI — веб-фреймворк
  • Uvicorn — ASGI сервер
  • Scikit-Learn — машинное обучение
  • Pandas / NumPy — обработка данных

Основные компоненты проекта:

src/
 ├ main.py
 ├ model_utils.py

main.py

Содержит:

  • инициализацию FastAPI
  • реализацию API
  • обработку авторизации
  • вызов модели

model_utils.py

Содержит функции:

  • загрузки модели
  • подготовки данных
  • выполнения инференса

При запуске сервиса модель загружается из сохраненного pipeline.


5. Тестирование и CI

Для проверки работоспособности сервиса были разработаны модульные тесты.

Используемые инструменты:

  • pytest — тестирование
  • pycodestyle — проверка стиля кода

Тесты проверяют:

  • доступность сервиса (healthcheck)
  • корректность авторизации
  • обработку неверных токенов
  • работу инференса модели
  • обработку некорректных входных данных

Файлы тестов:

test/
 ├ test_main.py
 ├ test_model_utils.py

CI-конвейер

В проекте настроен GitHub Actions.

При каждом push автоматически выполняются:

  1. установка зависимостей
  2. проверка стиля кода
  3. запуск тестов

Конфигурация CI:

.github/workflows/Lab1-service-testing.yml

Если тесты или проверки не проходят — сборка помечается как failed.


6. Вывод

В ходе выполнения лабораторной работы были изучены принципы организации инференса моделей машинного обучения с использованием веб-сервисов.

Был разработан REST API сервис для выполнения предсказаний температуры на основе погодных данных. Сервис реализован с использованием FastAPI и использует сохраненную модель машинного обучения в формате Scikit-Learn Pipeline.

Также были реализованы модульные тесты и настроен CI-конвейер в GitHub Actions, обеспечивающий автоматическую проверку проекта.

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

About

FastAPI service for weather temperature prediction using ML pipeline

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors