FastAPI сервис для получения рекомендаций из 10 объектов для каждого пользователя из тестовой выборки МТС Kion.
Для реализации были использованы данные из приложения МТС Kion по взаимодействиям пользователей с контентом за период 6 месяцев, взятые из RecSys Course Competition. Датасет содержит:
- факты просмотра контента пользователями
- описание контента
- описание пользователей
Выполните команду
make setup
Будет создано новое виртуальное окружение в папке .venv
.
В него будут установлены пакеты, перечисленные в файле pyproject.toml
.
Для установки новых пакетов используйте команду poetry add
.
python main.py
Приложение запустится локально, в одном процессе.
Хост и порт по умолчанию: 127.0.0.1
и 8080
.
Их можно изменить через переменные окружения HOST
и PORT
.
Управляет процессом легковесный ASGI server uvicorn.
uvicorn main:app
Запуск напрямую через uvicorn.
Собрать и запустить Docker-образ можно командой
make run
Нагрузочное тестирование реализовано с помощью инструемента Locust в tests/locustfile.py
.
Для запуска необходимо:
- установить locust командой
pip install locust
- перейти в папку
tests
- запустить locust web UI в терминале командой
locust
- открыть
http://localhost:8089/
и указать параметры теста (Number of users, Spawn rate, Host with running search server) - запустить тест
Текущие результаты тестирования для модели LightFM:
- Locust Setup
- Number of users (peak concurrency): 200
- Spawn rate (users added/stopped per second): 1
- Results
- Max RPS: 113.4
- Max Median response time: 480
Для запуска сбора логов в ELK необходимо:
- запустить сервис
- запустить Elasticsearch + Kibana + filebeat командой
docker-compose up
- зайти в консоль ELK и отфильтровать нужные логи
Для запуска сбора метрик в Prometheus и отрисовки дашбордов необходимо:
- запустить сервис
- запустить Prometheus + Grafana командой
docker-compose -f docker-compose-prometheus.yml up
- зайти в http://localhost:3000 и настроить вид дашбордов
Для запуска MLflow сервера необходимо выполнить команду:
mlflow server --backend-store-uri=sqlite:///mlflow_recsys.db --default-artifact-root=file:mlflow_runs --host 0.0.0.0 --port 5001
Графический интерфейс MLflow можно запустить через mlflow ui
Лог эксперимента popular_models
: