Modellen trainen en volgen met MLflow en experimenten
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 mlflow
te 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_time
gerangschikt. 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