Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FastQueue ML Service

ML-сервис для оптимизации очередей на защиту лабораторных работ. Использует Ridge-регрессию для предсказания времени защиты и динамического расчета времени ожидания.

Особенности

  • Интеллектуальный прогноз: Предсказание времени на основе сложности лабы, опыта преподавателя и прогресса пары.
  • Сбор данных: Автоматическое логгирование каждой защиты для последующего переобучения модели.
  • Гибкость: Поддержка одиночных и пакетных запросов (для всей очереди сразу).
  • Отказоустойчивость: Автоматический переход на Fallback-алгоритм при отсутствии обученной модели.

Быстрый старт (Docker)

Самый простой способ запустить сервис — использовать Docker Compose:

docker-compose up --build

API будет доступно по адресу http://localhost:8000.

Локальная разработка

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

  1. Установка зависимостей:

    uv sync
  2. Обучение модели (первичный запуск):

    uv run python train.py
  3. Запуск сервера:

    uv run python -m api.main

API Эндпоинты

Предсказания (ML)

  • POST /api/v1/predict — Одиночный расчет времени для студента.
  • POST /api/v1/predict/batch — Пакетный пересчет времени для всей очереди.

Управление очередью (DB)

  • POST /api/v1/queue/create — Открыть новую очередь (для преподавателя).
  • POST /api/v1/queue/add — Записаться в очередь (для студента).
  • POST /api/v1/queue/next — Вызвать следующего студента.
  • POST /api/v1/queue/finish-student — Завершить защиту и сохранить данные для обучения.

Структура проекта

  • api/ — Основной код FastAPI сервиса.
  • api/models/ — Сериализованные ML модели (.joblib).
  • data/ — База данных SQLite и CSV-логи для обучения.
  • train.py — Скрипт для (пере)обучения модели.
  • docker-compose.yml — Конфигурация для быстрого развертывания.

Переобучение модели

Чтобы улучшить точность предсказаний, после накопления новых данных в data/defense_history.csv (происходит автоматически при вызове finish-student), запустите скрипт обучения:

uv run python train.py

После чего перезапустите сервис, чтобы он подхватил новую версию модели.

About

Учебный проект по ML - механизм оптимизации очередей в ВУЗе

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages