Modellen trainen en volgen met MLflow en experimenten

Voltooid

Wanneer u een model traint, wilt u dat de resultaten kunnen worden gereproduceerd. Door uw werk bij te houden en te registreren, kunt u uw werk op elk gewenst moment bekijken en bepalen wat de beste methode is om een model te trainen.

MLflow is een opensource-bibliotheek voor het bijhouden en beheren van uw machine learning-experimenten. MLflow Tracking is met name een onderdeel van MLflow dat alles registreert over het model dat u traint, zoals parameters, metrische gegevens en artefacten.

MLflow is al geïnstalleerd wanneer u een notebook opent in Microsoft Fabric. Als u MLflow wilt gebruiken om uw modellen bij te houden, hoeft u alleen de bibliotheek (met) import mlflowte importeren en logboekregistratie te starten.

Een experiment maken

Wanneer u uw werk wilt bijhouden in Microsoft Fabric, moet u eerst een experiment maken. Telkens wanneer u een model traint, wordt het bijgehouden als een experiment dat wordt uitgevoerd in uw werkruimte. U kunt een experiment maken met behulp van de gebruikersinterface (UI) of door de volgende code uit te voeren:

mlflow.set_experiment("<EXPERIMENT_NAME>")

Wanneer u het uitvoert set_experiment(), stelt u het opgegeven experiment in als het actieve experiment. Als er geen experiment met de opgegeven naam bestaat, wordt er een nieuw experiment gemaakt.

Nadat het experiment is ingesteld, kunt u beginnen met het bijhouden van uw werk met MLflow met behulp van:

  • Automatische logboekregistratie: registreert automatisch metrische gegevens, parameters en modellen zonder expliciete logboekinstructies.
  • Aangepaste logboekregistratie: registreer expliciet metrische gegevens, parameters, modellen of artefacten die u tijdens de modeltraining maakt.

Wanneer u aangepaste parameters, metrische gegevens of artefacten wilt bijhouden, kunt u logboekregistratiefuncties gebruiken, zoals:

  • mlflow.log_param(): registreert een parameter met één sleutelwaarde. Gebruik deze functie voor een invoerparameter die u wilt registreren.
  • mlflow.log_metric(): registreert één metrische sleutelwaarde. De waarde moet een getal zijn. Gebruik deze functie voor uitvoer die u wilt opslaan met de uitvoering.
  • mlflow.log_artifact(): Registreert een bestand. Gebruik deze functie voor elke plot die u wilt vastleggen, sla deze eerst op als afbeeldingsbestand.
  • mlflow.log_model(): Registreert een model. Gebruik deze functie om een MLflow-model te maken, dat mogelijk een aangepaste handtekening, omgeving en invoervoorbeelden bevat.

Tip

Meer informatie over het bijhouden van modellen met MLflow vindt u in de officiële MLflow-documentatie.

Als u de logboekregistratiefuncties in een notebook wilt gebruiken, start u een uitvoering met mlflow.start_run() en meldt u alle gewenste metrische gegevens:

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)

Wanneer u een model traint en volgt, wordt er een nieuwe experimentuitvoering gemaakt binnen een experiment. Wanneer u meerdere modellen traint die u wilt vergelijken, is het raadzaam deze te groeperen onder dezelfde experimentnaam.

Metrische gegevens ophalen met MLflow in een notebook

Als u experimentuitvoeringen wilt bekijken en modellen wilt vergelijken, kunt u de gebruikersinterface gebruiken of de MLflow-bibliotheek in een notebook gebruiken.

U kunt alle actieve experimenten in de werkruimte ophalen met behulp van MLFlow:

experiments = mlflow.search_experiments(max_results=2)
for exp in experiments:
    print(exp.name)

Als u een specifiek experiment wilt ophalen, kunt u het volgende uitvoeren:

exp = mlflow.get_experiment_by_name(experiment_name)
print(exp)

Tip

Bekijk de documentatie over het zoeken naar experimenten met MLflow

Uitvoeringen ophalen

Met MLflow kunt u zoeken naar uitvoeringen binnen elk experiment. U hebt de experiment-id of de naam van het experiment nodig.

Als u bijvoorbeeld de metrische gegevens van een specifieke uitvoering wilt ophalen:

mlflow.search_runs(exp.experiment_id)

Standaard worden experimenten aflopend start_timegerangschikt. Dit is het tijdstip waarop het experiment in de wachtrij is geplaatst in Microsoft Fabric. U kunt deze standaardinstelling echter wijzigen met behulp van de parameter order_by.

Als u bijvoorbeeld wilt sorteren op begintijd en alleen de laatste twee resultaten wilt weergeven:

mlflow.search_runs(exp.experiment_id, order_by=["start_time DESC"], max_results=2)

U kunt ook zoeken naar een uitvoering met een specifieke combinatie in de hyperparameters:

mlflow.search_runs(
    exp.experiment_id, filter_string="params.num_boost_round='100'", max_results=2
)

Tip

Bekijk de documentatie over het zoeken naar uitvoeringen met MLflow