second_constantine d5c5bf3767 Recall везде + фиксы окружения
- recall_macro/recall_weighted во всех скриптах с метриками
  (train_simple, train_gpu, autolog_demo, hyperparam_sweep,
   grid_search_cv, load_and_predict, compare_runs)
- grid_search_cv: multi-metric scoring (accuracy + recall_macro)
- register_model: выбор лучшей модели по recall (--metric)
- MLflow warnings: name вместо artifact_path, сигнатура модели,
  numpy input_example для pytorch, подавление env-var INFO
- start_ui.sh: порт 5555 + file-store backend (фикс: UI не показывал
  эксперименты, т.к. скрипты писали в mlruns/, а сервер читал sqlite)
- setup_server.sh: развилка macOS/Linux + проверка MPS
- train_gpu: get_device CUDA→MPS→CPU, num_workers=0 на macOS
- AGENTS.md: гид для агента + саморегламент обновления
- README/CODE_WALKTHROUGH: выровнена нумерация уроков 8/9
- .gitignore: +.DS_Store
- удалён scripts/setup_git.sh
2026-07-20 22:28:23 +03:00

🧪 MLflow Practice — практический проект

Проект для изучения MLflow на практике: от логирования экспериментов до Model Registry, Model Serving и воспроизводимых запусков. Поддерживает GPU (RTX 3090) и CPU.

📖 CODE_WALKTHROUGH.md — подробный разбор каждого файла.


📁 Структура

mlflow-practice/
├── MLproject              # Формат MLflow Projects (воспроизводимость)
├── python_env.yaml        # Окружение для MLproject
├── requirements.txt        # зависимости
├── setup_server.sh        # установка на GPU-сервере
├── start_ui.sh             # запуск MLflow Tracking Server
├── CODE_WALKTHROUGH.md    # экскурс по коду
├── scripts/
│   └── setup_git.sh       # настройка Git (HTTPS + токен)
└── src/
    ├── train_simple.py     # Урок 1: sklearn + Tracking (ручное)
    ├── train_gpu.py        # Урок 2: PyTorch CNN на GPU
    ├── register_model.py   # Урок 3: Model Registry
    ├── load_and_predict.py # Урок 4: загрузка + предсказание
    ├── compare_runs.py     # Урок 5: сравнение через API
    ├── autolog_demo.py     # Урок 6: autolog (автоматическое)
    ├── hyperparam_sweep.py # Урок 7: перебор гиперпараметров
    ├── serve_model.py      # Урок 8: REST API сервер
    └── grid_search_cv.py   # Урок 9: GridSearchCV + autolog

🚀 Быстрый старт

1. Установка

# На GPU-сервере:
bash setup_server.sh
source .venv/bin/activate

# PyTorch под CUDA:
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
pip install flask  # для serve_model.py

2. Запуск MLflow UI

./start_ui.sh
# → http://10.0.0.7:5555

3. Уроки по порядку

# Урок 1 — scikit-learn (CPU, ~5 сек)
python src/train_simple.py --n-estimators 100 --max-depth 8
python src/train_simple.py --n-estimators 200 --max-depth 12
python src/train_simple.py --n-estimators 50  --max-depth 5

# Урок 2 — PyTorch CNN на 3090 (~1-2 мин)
python src/train_gpu.py --epochs 10 --batch-size 256 --lr 0.001

# Урок 3 — Регистрация лучшей модели
python src/register_model.py --experiment digits_classification

# Урок 4 — Загрузка и предсказание
python src/load_and_predict.py

# Урок 5 — Сравнение запусков
python src/compare_runs.py --experiment digits_classification --top 10

# Урок 6 — Autolog (автоматическое логирование)
python src/autolog_demo.py

# Урок 7 — Hyperparameter sweep (20 комбинаций)
python src/hyperparam_sweep.py --max-combos 20

# Урок 8 — Model serving (REST API)
python src/serve_model.py --port 5001
# → curl http://localhost:5001/predict_random

# Урок 9 — GridSearchCV + autolog (parent/child runs)
python src/grid_search_cv.py

4. MLflow Projects (воспроизводимый запуск)

# Запуск через MLproject — MLflow сам создаст окружение
mlflow run . -P n_estimators=200 -P max_depth=12
mlflow run . -e gpu -P epochs=10 -P batch_size=256 -P lr=0.001
mlflow run . -e sweep -P max_combos=30

📚 Что изучает каждый урок

Урок Концепция MLflow На чём
1 Tracking: params, metrics, artifacts, tags RandomForest (digits)
2 Tracking + GPU: логирование по эпохам, learning curves PyTorch CNN (MNIST) на 3090
3 Model Registry: версии, стадии Staging→Production лучшая модель из Урока 1
4 Model Loading: models:/name/stage предсказание
5 API: search_runs, order_by сортировка по accuracy
6 Autolog: одна строка вместо ручного логирования GradientBoosting (wine)
7 Hyperparameter sweep: itertools + random search 20+ комбинаций RandomForest
8 GridSearchCV + autolog: parent/child runs 18 комбинаций × 5 фолдов
9 Model serving: Flask REST API REST эндпоинты для модели

🖥️ RTX 3090

Параметр Значение
VRAM 24 GB GDDR6X
Рекомендуемый batch-size 256512 для MNIST
CUDA 12.1
MNIST 10 epochs ~1-2 минуты

Код GPU-aware — автоматически выбирает CUDA если доступна.


💡 Эксперименты для самостоятельной работы

  1. Подбор гиперпараметров — запустите sweep с --max-combos 50
  2. Сравнение моделей — обучите RandomForest vs GradientBoosting vs SVM
  3. Autolog vs ручное — запустите один датасет с autolog и без, сравните
  4. Model Registry — обучите несколько версий, переведите лучшую в Production
  5. Serving — поднимите REST API, отправьте запрос через curl
  6. MLproject — запустите через mlflow run . на другой машине
S
Description
Учюсь mlflow
Readme
224 KiB
Languages
Python 82.2%
Shell 17.8%