Files
mlflow-practice/README.md
T
2026-07-20 14:10:12 +03:00

4.3 KiB
Raw Blame History

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

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


📁 Структура

mlflow-practice/
├── requirements.txt          # зависимости
├── start_ui.sh               # запуск MLflow Tracking Server
├── README.md                 # этот файл
├── data/                     # датасеты (MNIST скачается автоматически)
├── artifacts/                # графики, отчёты
└── src/
    ├── train_simple.py       # Урок 1: scikit-learn + Tracking
    ├── train_gpu.py          # Урок 2: PyTorch CNN на GPU (3090)
    ├── register_model.py     # Урок 3: Model Registry
    ├── load_and_predict.py   # Урок 4: загрузка и предсказание
    └── compare_runs.py       # Урок 5: сравнение запусков

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

1. Установка зависимостей

cd mlflow-practice

# Базовые зависимости (CPU — работает везде)
pip install mlflow scikit-learn pandas numpy matplotlib

# Для GPU-урока (RTX 3090) — установите PyTorch под вашу CUDA:
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121

2. Запуск MLflow UI (в отдельном терминале)

./start_ui.sh
# → откройте http://localhost:5000

3. Урок 1 — scikit-learn (быстрый, CPU)

python src/train_simple.py --n-estimators 50  --max-depth 5
python src/train_simple.py --n-estimators 100 --max-depth 8
python src/train_simple.py --n-estimators 200 --max-depth 12

Сравните результаты в UI → вкладка Experiments → digits_classification.

4. Урок 2 — PyTorch CNN на 3090

# На GPU — быстро (3090 справится за пару минут)
python src/train_gpu.py --epochs 10 --batch-size 256 --lr 0.001

# На CPU — медленно, уменьшите эпохи
python src/train_gpu.py --epochs 2 --batch-size 64 --lr 0.01

В UI посмотрите графики train_loss и test_accuracy по эпохам.

5. Урок 3 — Model Registry

python src/register_model.py --experiment digits_classification

В UI → вкладка Models появится модель digits_rf_model со стадией Production.

6. Урок 4 — Загрузка и предсказание

python src/load_and_predict.py

7. Урок 5 — Сравнение запусков

python src/compare_runs.py --experiment digits_classification --top 10

🖥️ Специфика RTX 3090

Параметр Значение
VRAM 24 GB GDDR6X
CUDA cores 10496
Рекомендуемый batch-size 256512 для MNIST
CUDA версия 12.1 (рекомендуется)

Код в train_gpu.py автоматически определяет CUDA:

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

На 3090 обучение MNIST (10 epochs) займёт ~1-2 минуты.


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

  1. Подбор гиперпараметров: запустите train_simple.py с разными --n-estimators и --max-depth, сравните в UI
  2. Визуализация: добавьте логирование ROC-кривой как артефакта
  3. Автолог: попробуйте mlflow.autolog() вместо ручного логирования
  4. GPU эксперименты: в train_gpu.py попробуйте разные --lr и --batch-size, сравните графики learning curves
  5. Model Registry: обучите несколько версий, переведите лучшую в Production, остальные в Archived
  6. Serving: попробуйте mlflow models serve -m models:/digits_rf_model/Production -p 5001