Цель: Создать веб-приложение для автоматической оценки устных ответов на экзамене по русскому языку для иностранных граждан.
Деплой: https://lidachk.github.io/sigma108/
Видео: https://cloud.mail.ru/public/xcKe/UBnpmvgwz
- Backend: Python, FastAPI
- Frontend: React, Gravity UI
- Контейнеризация: Docker
- CI/CD: GitHub Actions
- Развёртывание: DockerHosting, GitHub Pages
- ML: Python, transformers, torch, pandas
- SLM: ruBert-base (open source - ruBert-base на Hugging Face - trained by torch, peft, transformers, pandas)
backend/
├── main.py # FastAPI, подключение маршрутов
├── config.py #
├── Dockerfile #
├── fine_tuned_rubert_base/ # Модель
│ ├── config.json #
│ ├── model.safetensors #
│ ├── special_tokens_map.json #
│ ├── tokenizer.json #
│ ├── tokenizer_config.json #
│ ├── training_args.bin #
│ └── vocab.txt #
├── services/ # Логика приложения
│ ├── __init__.py #
│ ├── file_processor.py #
│ └── task_manager.py #
├── api/ # роутеры FastAPI
│ ├── __init__.py #
│ └── routes.py # @app.post("/upload"), @app.get("/status"), @app.get("/download")
├── logger/ #
│ └── log_config.py # Логирование
└── requirements.txt # Зависимости для backend (fastapi, uvicorn, pandas, numpy)
frontend/
- Backend:
- Написать endpoint
/uploadдля загрузки CSV (FastAPI) - placeholder
- Реализовать endpoint
/status - Реализовать endpoint
/downloadдля выдачи обработанного CSV - Создать
Dockerfileдля backend - Добавить логику обработки ошибок (валидация файла и т.д.)
- очитска файлов после отдачи файла или по таймауту
- отправлять актуальный (%) статус обрабоки файла
- Написать endpoint
- Frontend:
- Инициализировать React-app
- добавить Mantine
- компонент для загрузки файла
- компонент для отображения статуса обработки
- компонент для скачивания результата
- Настроить вызов backend API из frontend
- ссылки на github
- отображать актуальный статус обработки файла
- отображать время затраченное на обработку
- Docker:
- Написать
docker-compose.ymlдля локального запуска backend + frontend
- Написать
- CI/CD & Deploy:
- создать ветку Deploy
- ML-логика:
- выбрать наиболее подходящую модельку
- перевести картинки в текст
- подготовить данные для дообучения
- код для дообучения
- код для приема .csv и предсказания ответов
docker
docker-compose up --buildfrontend/
cd ./frontend
npm run devbackend/
для bash VScode с Conda
eval "$(conda shell.bash hook)"
conda activate auto-evalcd ./backend
python -m uvicorn main:app --reload --host 0.0.0.0 --port 8000