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

122 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🧪 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. Установка зависимостей
```bash
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 (в отдельном терминале)
```bash
./start_ui.sh
# → откройте http://localhost:5000
```
### 3. Урок 1 — scikit-learn (быстрый, CPU)
```bash
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
```bash
# На 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
```bash
python src/register_model.py --experiment digits_classification
```
В UI → вкладка **Models** появится модель `digits_rf_model` со стадией **Production**.
### 6. Урок 4 — Загрузка и предсказание
```bash
python src/load_and_predict.py
```
### 7. Урок 5 — Сравнение запусков
```bash
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:
```python
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`