4.3 KiB
4.3 KiB
🧪 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 | 256–512 для 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 минуты.
💡 Эксперименты для самостоятельной работы
- Подбор гиперпараметров: запустите
train_simple.pyс разными--n-estimatorsи--max-depth, сравните в UI - Визуализация: добавьте логирование ROC-кривой как артефакта
- Автолог: попробуйте
mlflow.autolog()вместо ручного логирования - GPU эксперименты: в
train_gpu.pyпопробуйте разные--lrи--batch-size, сравните графики learning curves - Model Registry: обучите несколько версий, переведите лучшую в Production, остальные в Archived
- Serving: попробуйте
mlflow models serve -m models:/digits_rf_model/Production -p 5001