src/train.py— обучение, MLflow‑логирование, параметры из CLIsrc/inference.py— инференс из Registry-models:/Churn_Model/Productionsrc/client.py— rest‑api дляmlflow models servesrc/data_validation.py— проверки данных перед обучениемmlruns/,mlflow.db— артефакты и метаданные MLflow
- Python 3.10+
- Java
- Docker
- train:
data/raw/cell2celltrain.csv - holdout:
data/raw/cell2cellholdout.csv
python -m venv .venv311
source .venv311/bin/activate
pip install -r requirements.txtdocker compose build mlflow
docker compose up -d mlflow
export MLFLOW_TRACKING_URI=http://127.0.0.1:5001python -m src.train \
--data-path data/raw/cell2celltrain.csv \
--experiment-name cell2cell-churn \
--run-name gbt_depth5_lr01 \
--max-depth 5 \
--max-iter 60 \
--step-size 0.1 \
--use-class-weightsскрипт:
- определяет категориальные/числовые признаки
- заполняет пропуски в датасете
- строит Pipeline
- логирует ROC‑AUC, F1, Accuracy и модель
сделайте 3–5 запусков с разными гиперпараметрами
лучшая модель регистрируется в MLflow Registry и помечается Production
регистрация через ui:
- открыть лучший run
Register model→Churn_Model- назначить стадию
Production
export MLFLOW_TRACKING_URI=http://127.0.0.1:5001
python -m src.inference \
--data-path data/raw/cell2cellholdout.csv \
--output-path data/predictions/holdoutрезультат в папке data/predictions/holdout/part-*.csv
запуск сервера:
MLFLOW_TRACKING_URI=http://127.0.0.1:5001 \
mlflow models serve -m "models:/Churn_Model/Production" \
-p 5002 --host 127.0.0.1 --env-manager localпроверка:
.venv311/bin/python -m src.client --data-path data/raw/cell2celltrain.csv --n-rows 1результат:
prediction = 1.0→ уйдетprediction = 0.0→ не уйдет