🧱 MLflow & Model Registry
MLflow Tracking, Model Registry, управление экспериментами, autolog
🧪 Что такое MLflow?
MLflow — платформа управления жизненным циклом ML с открытым исходным кодом. 4 компонента: Tracking (эксперименты, запуски, параметры, метрики, артефакты), Projects (упаковка воспроизводимого ML-кода), Models (упаковка и обслуживание моделей), Registry (централизованное хранилище моделей, версионирование, управление стадиями). В Databricks — полностью управляемый MLflow.
📊 MLflow Tracking
Experiment — набор связанных запусков (runs). Run — одна сессия обучения ML. Что логируется: params (гиперпараметры: learning_rate, n_estimators), metrics (accuracy, loss), artifacts (файл модели, график, CSV). `mlflow.autolog()` — автоматическое логирование для многих фреймворков: sklearn, xgboost, pytorch и других.
🏪 MLflow Model Registry
Registered Model — версионированная модель. Стадии: None → Staging → Production → Archived. Model alias — например, "champion", "challenger". С Unity Catalog: трёхуровневое пространство имён `catalog.schema.model`. Версионирование моделей, отслеживание происхождения, процесс согласования.
⚡ Настройка производительности Spark
Partitioning: `repartition(n)` — с перемешиванием (shuffle), `coalesce(n)` — без перемешивания (только уменьшение). Оптимальное число партиций: core * 2-4. Broadcast Join: отправка небольшого DataFrame всем исполнителям (`F.broadcast(small_df)`). Кэширование: `df.cache()` — если данные используются многократно. AQE: адаптивное выполнение запросов.
💡 Ключевые моменты
- MLflow: Tracking, Projects, Models, Registry — 4 компонента
- mlflow.autolog() — автоматическое логирование для sklearn, xgboost, pytorch
- Стадии Model Registry: None → Staging → Production
- repartition = shuffle (увеличение и уменьшение числа партиций)
- coalesce = без shuffle (только уменьшение)
- Broadcast join: предотвращение shuffle для таблиц <10 МБ
📋 Пример кода
import mlflow
import mlflow.sklearn
from sklearn.ensemble import RandomForestClassifier
# Experiment
mlflow.set_experiment("fraud_detection_v2")
with mlflow.start_run(run_name="rf_baseline"):
mlflow.log_param("n_estimators", 100)
mlflow.log_param("max_depth", 5)
model = RandomForestClassifier(n_estimators=100, max_depth=5)
model.fit(X_train, y_train)
accuracy = model.score(X_test, y_test)
mlflow.log_metric("accuracy", accuracy)
# Model saqlash va register qilish
mlflow.sklearn.log_model(model, "model",
registered_model_name="fraud_detector")
# Broadcast join
from pyspark.sql import functions as F
result = large_df.join(F.broadcast(small_lookup), on="id")
🎯 Советы для экзамена
- MLflow Tracking URI: в Databricks управляемый MLflow — URI настраивается автоматически
- repartition vs coalesce: repartition = shuffle (затратно), coalesce = без shuffle (только уменьшение)
- Стадия "Production" в Model Registry означает готовность к развёртыванию (не автоматический деплой)
- mlflow.autolog() — работают оба варианта: `mlflow.sklearn.autolog()` и `mlflow.autolog()`
- Unity Catalog Model Registry: трёхуровневое пространство имён, детальное управление доступом
⚠️ Частые ошибки
- repartition и coalesce: repartition может увеличивать число партиций, coalesce — только уменьшать
- Разница между params и metrics в MLflow: params = статические (гиперпараметры), metrics = изменяемые (точность по эпохам)
- Использование Broadcast join всегда — broadcast большого DataFrame вызовет ошибку OOM
🧠 Для запоминания: "MLflow 4C" = Collect (tracking), Catalog (registry), Compare (experiments), Champion (production model). "rePARTITION = reshuffle, COALESCE = combine"
Проверьте себя по теме «MLflow & Model Registry»
Бесплатные интерактивные тесты, пробный экзамен и полные уроки — на платформе CertMaster.
Начать бесплатно →