From 8d7d2d5d7a0f2a975eaf3b9aa1633d785cad66b2 Mon Sep 17 00:00:00 2001 From: syropiatovvv Date: Sat, 22 Nov 2025 15:00:24 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20README=20=D0=B4=D0=BB=D1=8F=20=D0=B2=D0=B5=D0=B1-?= =?UTF-8?q?=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 20 ++++++---- services/ml_service/README.md | 71 +++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+), 7 deletions(-) create mode 100644 services/ml_service/README.md diff --git a/README.md b/README.md index e7bf52f..5aaf375 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,15 @@ ](https://www.kaggle.com/datasets/vijayaadithyanvg/car-price-predictionused-cars/data) — продажа подержанных автомобилей на рынке в Индии. -## Установка +## Сервис предсказания цен -### Общий порядок +См. `services/ml_service.md`. + +## Исследовательская часть проекта + +### Установка + +#### Общий порядок **Внимание**: Здесь описан только общий порядок установки. Определённые части проекта могут требовать установки по отдельным инструкциям. @@ -47,13 +53,13 @@ 5. **При необходимости** скачайте данные. Каноническое расположение для данных проекта: `data/`. -### Зависимости +#### Зависимости -#### Общие зависимости +##### Общие зависимости Зависимости — пакеты Python — записаны в файле `requirements/requirements.txt` (см. **Пакеты Python**). -#### Пакеты Python +##### Пакеты Python Установка/обновление пакетов Python в активное окружение из файла `requirements/requirements.txt`: @@ -61,10 +67,10 @@ pip install -U -r requirements/requirements.txt ``` -## Разведочный анализ данных (EDA) +### Разведочный анализ данных (EDA) См. `eda/README.md`. -## Исследование и настройка предсказательной модели +### Исследование и настройка предсказательной модели См. `research/README.md`. diff --git a/services/ml_service/README.md b/services/ml_service/README.md new file mode 100644 index 0000000..d3429ec --- /dev/null +++ b/services/ml_service/README.md @@ -0,0 +1,71 @@ +# Сервис предсказания цен + +Веб-сервис предсказания цен на подержанные автомобили; только stateless API. Об используемой предсказательной модели см. `research/README.md`. + +## API + +**Базовый URL**: `/api`. Все указанные далее URL записаны **относительно базового URL**, если не указано иное. + +* Полная интерактивная документация (Swagger UI): `/docs`. + +* Предсказать цену подержанного автомобиля: `/predict`. + + Пример запроса: + + * requst query: `item_id=16` (параметр `item_id` необходим!); + + * request body: + + ```json + { + "selling_price": 5.59, + "driven_kms": 27000.0, + "age": 5.0, + "fuel_type": "petrol", + "selling_type": "dealer", + "transmission_type": "manual" + } + ``` + + * response body: + + ```json + { + "item_id": 16, + "price": 3.743508852258851 + } + ``` + +* Тестовый эндпоинт: `/` + + Возвращает простой демонстрационный объект JSON. + + Может использоваться для проверки состояния сервиса. + +## Развёртывание + +### Файл модели + +Файл используемой предсказательной модели `model.pkl` можно извлечь из MLFlow скриптом `services/models/fetch_model_as_pickle_from_mlflow.py`. Файл модели можно разместить в директории проекта, а именно в `services/models/`. + +Например, извлечь модель по имени (``) и версии (``) (например, `UsedCardPricePredictionFinal/1`) (команда запускается из корневой директории проекта — от этого зависит путь к создаваемому файлу): + + python services/models/fetch_model_as_pickle_from_mlflow.py --model "models://" services/models/model.pkl + +Можно указать адрес tracking сервера MLFlow, например: `--tracking-uri "http://localhost:5000"`. + +Информация о других опциях доступна: + + python services/models/fetch_model_as_pickle_from_mlflow.py --help + +### Образ Docker + +Сборка образа (замените `` на номер версии) (команда запускается из корневой директории проекта — от этого зависит путь к директории): + + docker build -t ml_service: services/ml_service/ + +Запуск образа (замените `` на номер версии образа, `` на **абсолютный** путь к директории, где размещён файл предсказательной модели `model.pkl`, `` на порт для запуска веб-сервиса (например, `8000`)): + + docker run -v ":/models" -p :8000 ml_service: + +Модель может быть размещена в директории проекта; тогда, например, при запуске команды из корна проекта: `$(pwd)/services/models` (здесь `$(pwd)` используется потому, что необходим абсолютный путь).