Trénování a sledování modelů pomocí MLflow a experimentů
Kdykoli vytrénujete model, chcete, aby výsledky byly reprodukovatelné. Sledováním a protokolováním své práce můžete kdykoli zkontrolovat svou práci a rozhodnout se, jaký je nejlepší přístup k trénování modelu.
MLflow je opensourcová knihovna pro sledování a správu experimentů strojového učení. Konkrétně MLflow Tracking je komponenta MLflow, která zaznamenává všechno o modelu, který trénujete, jako jsou parametry, metriky a artefakty.
MLflow je už nainstalovaný, když otevřete poznámkový blok v Microsoft Fabric. Pokud chcete ke sledování modelů použít MLflow, stačí importovat knihovnu (s import mlflow
) a spustit protokolování.
Vytvoření experimentu
Kdykoli chcete sledovat svoji práci v Microsoft Fabric, musíte nejprve vytvořit experiment. Pokaždé, když model vytrénujete, se sleduje jako experiment spuštěný v pracovním prostoru. Experiment můžete vytvořit pomocí uživatelského rozhraní nebo spuštěním následujícího kódu:
mlflow.set_experiment("<EXPERIMENT_NAME>")
Při spuštění set_experiment()
nastavíte daný experiment jako aktivní experiment. Pokud experiment s zadaným názvem neexistuje, vytvoří se nový experiment.
Po nastavení experimentu můžete začít sledovat práci s MLflow pomocí:
- Automatické protokolování: Automaticky protokoluje metriky, parametry a modely bez nutnosti explicitních příkazů protokolu.
- Vlastní protokolování: Explicitně protokolujte všechny metriky, parametry, modely nebo artefakty, které vytvoříte během trénování modelu.
Pokud chcete sledovat jakékoli vlastní parametry, metriky nebo artefakty, můžete použít funkce protokolování, jako jsou:
mlflow.log_param()
: Zaznamená jeden parametr klíč-hodnota. Tuto funkci použijte pro vstupní parametr, který chcete protokolovat.mlflow.log_metric()
: Zaznamená metriku s jednou hodnotou klíče. Hodnota musí být číslo. Tuto funkci použijte pro všechny výstupy, které chcete uložit se spuštěním.mlflow.log_artifact()
: Zaznamená soubor. Tuto funkci použijte pro libovolný graf, který chcete protokolovat, nejprve uložte jako soubor obrázku.mlflow.log_model()
: Zaznamená model. Pomocí této funkce můžete vytvořit model MLflow, který může obsahovat vlastní podpis, prostředí a vstupní příklady.
Tip
Další informace o tom, jak sledovat modely pomocí MLflow, najdete v oficiální dokumentaci K MLflow.
Pokud chcete používat funkce protokolování v poznámkovém bloku, spusťte spuštění a mlflow.start_run()
protokolujte libovolnou metriku, kterou chcete:
from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score
import mlflow
with mlflow.start_run():
model = XGBClassifier(use_label_encoder=False, eval_metric="logloss")
model.fit(X_train, y_train, eval_set=[(X_test, y_test)], verbose=False)
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
mlflow.log_metric("accuracy", accuracy)
Při každém trénování a sledování modelu se v rámci experimentu vytvoří nové spuštění experimentu. Při trénování více modelů, které chcete porovnat, doporučujeme je seskupit pod stejným názvem experimentu.
Načtení metrik pomocí MLflow v poznámkovém bloku
Pokud chcete zkontrolovat spuštění experimentu a porovnat modely, můžete použít uživatelské rozhraní nebo použít knihovnu MLflow v poznámkovém bloku.
Všechny aktivní experimenty v pracovním prostoru můžete získat pomocí MLFlow:
experiments = mlflow.search_experiments(max_results=2)
for exp in experiments:
print(exp.name)
Pokud chcete načíst konkrétní experiment, můžete spustit:
exp = mlflow.get_experiment_by_name(experiment_name)
print(exp)
Tip
Projděte si dokumentaci k hledání experimentů pomocí MLflow.
Načtení spuštění
MLflow umožňuje hledat spuštění uvnitř jakéhokoli experimentu. Potřebujete BUĎ ID experimentu, nebo název experimentu.
Pokud například chcete načíst metriky konkrétního spuštění:
mlflow.search_runs(exp.experiment_id)
Ve výchozím nastavení jsou experimenty seřazeny sestupně podle start_time
, což je čas, kdy byl experiment zařazen do fronty v Microsoft Fabric. Toto výchozí nastavení však můžete změnit pomocí parametru order_by
.
Pokud například chcete řadit podle času zahájení a zobrazit pouze poslední dva výsledky:
mlflow.search_runs(exp.experiment_id, order_by=["start_time DESC"], max_results=2)
Můžete také vyhledat spuštění s konkrétní kombinací v hyperparametrech:
mlflow.search_runs(
exp.experiment_id, filter_string="params.num_boost_round='100'", max_results=2
)
Tip
Projděte si dokumentaci o tom, jak hledat spuštění pomocí MLflow.