Trénování a sledování modelů pomocí MLflow a experimentů

Dokončeno

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.