«Изучение синхронного инференса с применением веб-сервиса»
Дисциплина: Облачные вычислительные системы
Целью лабораторной работы является изучение принципов организации синхронного инференса моделей машинного обучения с использованием веб-сервиса.
В ходе выполнения работы необходимо:
- познакомиться с понятием инференса в системах машинного обучения;
- изучить протокол HTTP и принципы микросервисной архитектуры;
- освоить методы сохранения обученной модели;
- получить практические навыки проектирования и разработки веб-сервисов;
- реализовать API сервис для инференса модели машинного обучения;
- реализовать модульные тесты;
- настроить CI-конвейер в GitHub Actions для автоматического тестирования сервиса.
В рамках лабораторной работы необходимо разработать веб-сервис, обеспечивающий выполнение инференса модели машинного обучения.
Сервис должен принимать входные данные через HTTP-запрос, передавать их в обученную модель и возвращать результат предсказания. В качестве архитектурного решения используется микросервисный подход, при котором модель машинного обучения разворачивается в виде отдельного сервиса.
Основные требования к системе:
- использование обученной модели машинного обучения;
- реализация REST API для взаимодействия с сервисом;
- использование механизма авторизации;
- обработка корректных и ошибочных запросов;
- наличие модульных тестов;
- автоматическая проверка проекта с использованием CI.
Разработанный сервис принимает погодные параметры и возвращает предсказание температуры.
В проекте используется модель машинного обучения для прогнозирования температуры на основе метеорологических данных.
Входными признаками модели являются:
hour— час наблюденияmonth— месяцprecipitation— количество осадковpressure— атмосферное давлениеhumidity— влажность воздухаwind_speed— скорость ветраlatitude— широтаlongitude— долготаheight— высота над уровнем моря
Целевая переменная — температура воздуха.
Модель обучается на датасете погодных наблюдений.
Для упрощения применения модели используется Scikit-Learn Pipeline, который включает:
- этапы предварительной обработки данных;
- модель машинного обучения.
Pipeline сохраняется в файл:
models/weather_pipeline.pkl
Это позволяет использовать модель напрямую для инференса без повторного обучения.
Сервис реализован с использованием фреймворка FastAPI.
Этот метод выполняет инференс модели машинного обучения.
{
"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"
}Сервис реализован на языке Python с использованием следующих библиотек:
- FastAPI — веб-фреймворк
- Uvicorn — ASGI сервер
- Scikit-Learn — машинное обучение
- Pandas / NumPy — обработка данных
Основные компоненты проекта:
src/
├ main.py
├ model_utils.py
Содержит:
- инициализацию FastAPI
- реализацию API
- обработку авторизации
- вызов модели
Содержит функции:
- загрузки модели
- подготовки данных
- выполнения инференса
При запуске сервиса модель загружается из сохраненного pipeline.
Для проверки работоспособности сервиса были разработаны модульные тесты.
Используемые инструменты:
- pytest — тестирование
- pycodestyle — проверка стиля кода
Тесты проверяют:
- доступность сервиса (healthcheck)
- корректность авторизации
- обработку неверных токенов
- работу инференса модели
- обработку некорректных входных данных
Файлы тестов:
test/
├ test_main.py
├ test_model_utils.py
В проекте настроен GitHub Actions.
При каждом push автоматически выполняются:
- установка зависимостей
- проверка стиля кода
- запуск тестов
Конфигурация CI:
.github/workflows/Lab1-service-testing.yml
Если тесты или проверки не проходят — сборка помечается как failed.
В ходе выполнения лабораторной работы были изучены принципы организации инференса моделей машинного обучения с использованием веб-сервисов.
Был разработан REST API сервис для выполнения предсказаний температуры на основе погодных данных. Сервис реализован с использованием FastAPI и использует сохраненную модель машинного обучения в формате Scikit-Learn Pipeline.
Также были реализованы модульные тесты и настроен CI-конвейер в GitHub Actions, обеспечивающий автоматическую проверку проекта.
Полученные результаты демонстрируют практическое применение методов машинного обучения в микросервисной архитектуре и позволяют разворачивать модели в виде полноценных сервисов для использования в облачных вычислительных системах.