Skip to content
Обзор проекта

Обзор проекта

Schemion: обзор проекта

Назначение

Schemion представляет собой серверную платформу для управления датасетами, моделями компьютерного зрения и асинхронными задачами обучения и инференса. Проект ориентирован на задачи детекции объектов: пользователь загружает датасет или изображение, выбирает модель, создает задачу, а специализированные воркеры выполняют вычислительную часть вне HTTP-запроса.

Система построена как набор сервисов:

  • schemion-api - публичный HTTP API, аутентификация, авторизация, хранение метаданных, загрузка файлов в MinIO и постановка задач в брокер.
  • schemion-training - воркер обучения, подписанный на очередь training_queue.
  • schemion-inference - воркер инференса, подписанный на очередь inference_queue.
  • bob-the-broker - брокер сообщений Bobber, связывающий API и фоновые воркеры.
  • database - PostgreSQL 16, основное хранилище метаданных.
  • minio - объектное хранилище исходных изображений, датасетов, весов моделей, метрик и результатов инференса.
  • nginx - обратный прокси и раздача фронтенд-сборки из nginx/dist.
  • system_model_importer - утилита для загрузки системных моделей в MinIO и регистрации их в базе данных.

Основной сценарий использования

  1. Пользователь регистрируется или входит в систему через JWT-аутентификацию.
  2. Пользователь загружает ZIP-архив датасета через API.
  3. Пользователь выбирает системную базовую модель или загружает пользовательские веса.
  4. Для инференса пользователь отправляет изображение или PDF и идентификатор модели.
  5. Для обучения пользователь создает задачу fine-tuning на основе системной модели и ранее загруженного датасета.
  6. API сохраняет входные данные в MinIO, создает запись задачи в PostgreSQL и публикует сообщение в Bobber.
  7. Соответствующий воркер получает сообщение, выполняет вычисления, сохраняет результат в MinIO и обновляет статус задачи.
  8. Клиент получает статус через REST или SSE-подписку, а результат скачивает по presigned URL.

Поддерживаемые архитектуры моделей

На уровне API допустимые значения архитектуры заданы перечислением:

  • yolo
  • faster_rcnn

Внутри воркеров также используются профили Faster R-CNN:

  • resnet50_fpn
  • resnet50_fpn_v2
  • mobilenet_v3_large_fpn
  • mobilenet_v3_large_320_fpn

Для YOLO используется библиотека ultralytics. Для Faster R-CNN используются модели из torchvision.models.detection.

Границы ответственности сервисов

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

Training-воркер отвечает за загрузку датасета и базовых весов, запуск обучения, экспорт новой модели, сохранение метрик и регистрацию fine-tuned модели в таблице models.

Inference-воркер отвечает за загрузку входного изображения, разбиение крупного изображения на тайлы, запуск детектора, объединение предсказаний и сохранение JSON-результата.

Разделы документации

Эта документация разделена по темам:

  • Архитектура - устройство сервисов и потоков данных.
  • API - публичные HTTP-эндпоинты и схемы запросов.
  • Данные - требования к ZIP-датасету, структура БД, MinIO-бакеты и кэш.
  • ML-пайплайны - алгоритмика обучения и инференса.
  • Эксплуатация - Docker Compose, переменные окружения и запуск.
  • Разработка - локальная разработка, тесты и эксплуатационные замечания.