Обзор проекта
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 и регистрации их в базе данных.
Основной сценарий использования
- Пользователь регистрируется или входит в систему через JWT-аутентификацию.
- Пользователь загружает ZIP-архив датасета через API.
- Пользователь выбирает системную базовую модель или загружает пользовательские веса.
- Для инференса пользователь отправляет изображение или PDF и идентификатор модели.
- Для обучения пользователь создает задачу fine-tuning на основе системной модели и ранее загруженного датасета.
- API сохраняет входные данные в MinIO, создает запись задачи в PostgreSQL и публикует сообщение в Bobber.
- Соответствующий воркер получает сообщение, выполняет вычисления, сохраняет результат в MinIO и обновляет статус задачи.
- Клиент получает статус через REST или SSE-подписку, а результат скачивает по presigned URL.
Поддерживаемые архитектуры моделей
На уровне API допустимые значения архитектуры заданы перечислением:
yolofaster_rcnn
Внутри воркеров также используются профили Faster R-CNN:
resnet50_fpnresnet50_fpn_v2mobilenet_v3_large_fpnmobilenet_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, переменные окружения и запуск.
- Разработка - локальная разработка, тесты и эксплуатационные замечания.