Ml- en deep learning-trainingsuitvoeringen bijhouden
Met het onderdeel voor het bijhouden van MLflow kunt u broneigenschappen, parameters, metrische gegevens, tags en artefacten vastleggen die betrekking hebben op het trainen van een machine learning- of deep learning-model. Als u aan de slag wilt gaan met MLflow, kunt u een van de snelstartzelfstudies voor MLflow proberen.
MLflow-tracering met experimenten en uitvoeringen
MLflow-tracering is gebaseerd op twee concepten, experimenten en uitvoeringen:
Notitie
Vanaf 27 maart 2024 legt MLflow een quotumlimiet op voor het aantal totale parameters, tags en metrische stappen voor alle bestaande en nieuwe uitvoeringen, en het aantal totale uitvoeringen voor alle bestaande en nieuwe experimenten, zie Resourcelimieten. Als u de uitvoeringen per experimentquotum bereikt, raadt Databricks u aan uitvoeringen te verwijderen die u niet meer nodig hebt met de API voor delete-runs in Python. Als u andere quotumlimieten bereikt, raadt Databricks aan om uw strategie voor logboekregistratie aan te passen om onder de limiet te blijven. Als u een verhoging van deze limiet nodig hebt, neemt u contact op met uw Databricks-accountteam met een korte uitleg van uw use-case, waarom de voorgestelde oplossingen voor risicobeperking niet werken en de nieuwe limiet die u aanvraagt.
Een MLflow-experiment is de primaire eenheid van de organisatie en het toegangsbeheer voor MLflow-uitvoeringen. Alle MLflow-uitvoeringen behoren tot een experiment. Met experimenten kunt u uitvoeringen visualiseren, zoeken en vergelijken, evenals uitvoeringartefacten en metagegevens downloaden voor analyse in andere hulpprogramma's.
Een MLflow-uitvoering komt overeen met één uitvoering van modelcode.
De MLflow Tracking-API registreert parameters, metrische gegevens, tags en artefacten van een modeluitvoering. De Tracking-API communiceert met een MLflow-traceringsserver. Wanneer u Databricks gebruikt, registreert een databricks-gehoste traceringsserver de gegevens. De gehoste MLflow-traceringsserver heeft Python-, Java- en R-API's.
Notitie
MLflow is geïnstalleerd op Databricks Runtime ML-clusters. Als u MLflow wilt gebruiken in een Databricks Runtime-cluster, moet u de mlflow
bibliotheek installeren. Zie Een bibliotheek installeren in een cluster voor instructies over het installeren van een bibliotheek in een cluster. De specifieke pakketten die moeten worden geïnstalleerd voor MLflow zijn:
- Voor Python selecteert u Bibliotheekbron pyPI en voert u
mlflow
het veld Pakket in. - Voor R selecteert u Bibliotheekbron CRAN en voert u
mlflow
het veld Pakket in. - Installeer deze twee pakketten voor Scala:
- Selecteer Bibliotheekbron Maven en voer
org.mlflow:mlflow-client:1.11.0
het veld Coördinaten in. - Selecteer Bibliotheekbron PyPI en voer
mlflow
het veld Pakket in.
- Selecteer Bibliotheekbron Maven en voer
Waar MLflow wordt uitgevoerd, worden geregistreerd
Alle MLflow-uitvoeringen worden geregistreerd bij het actieve experiment, dat op een van de volgende manieren kan worden ingesteld:
- Gebruik de opdracht mlflow.set_experiment().
- Gebruik de
experiment_id
parameter in de opdracht mlflow.start_run(). - Stel een van de MLflow-omgevingsvariabelen in MLFLOW_EXPERIMENT_NAME of MLFLOW_EXPERIMENT_ID.
Als er geen actief experiment is ingesteld, worden uitvoeringen vastgelegd in het notebookexperiment.
Als u de resultaten van uw experiment wilt vastleggen op een extern gehoste MLflow Tracking-server in een andere werkruimte dan de server waarin u uw experiment uitvoert, stelt u de tracerings-URI in om naar de externe werkruimte te verwijzen en mlflow.set_tracking_uri()
stelt u het pad in naar uw experiment in de externe werkruimte met behulp van mlflow.set_experiment()
.
mlflow.set_tracking_uri(<uri-of-remote-workspace>)
mlflow.set_experiment("path to experiment in remote workspace")
Als u experimenten lokaal uitvoert en experimentresultaten wilt vastleggen op de Databricks MLflow Tracking-server, geeft u uw Databricks-werkruimte-exemplaar () en het persoonlijke toegangstoken vanDATABRICKS_HOST
Databricks () opDATABRICKS_TOKEN
. Vervolgens kunt u de tracerings-URI instellen om naar de werkruimte mlflow.set_tracking_uri()
te verwijzen en het pad naar uw experiment instellen met behulp van mlflow.set_experiment()
. Zie Persoonlijke toegangstokenverificatie van Azure Databricks uitvoeren voor meer informatie over waar u waarden voor de DATABRICKS_HOST
en DATABRICKS_TOKEN
omgevingsvariabelen kunt vinden.
In het volgende codevoorbeeld ziet u hoe u deze waarden instelt:
os.environ["DATABRICKS_HOST"] = "https://dbc-1234567890123456.cloud.databricks.com" # set to your server URI
os.environ["DATABRICKS_TOKEN"] = "dapixxxxxxxxxxxxx"
mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/your-experiment")
Voorbeeldnotitieblok voor logboekregistratie
In dit notebook ziet u hoe u logboeken kunt vastleggen in een notebookexperiment en een werkruimteexperiment. Alleen MLflow-uitvoeringen die in een notebook zijn geïnitieerd, kunnen worden vastgelegd in het notebookexperiment. MLflow-uitvoeringen die worden gestart vanuit een notebook of vanuit de API's, kunnen worden vastgelegd in een werkruimte-experiment. Zie Notebook-experiment weergeven en Werkruimte-experiment weergeven voor meer informatie over het weergeven van vastgelegde uitvoeringen.
Notebook voor MLflow-uitvoeringen in logboek
U kunt MLflow Python-, Java- of Scala- en R-API's gebruiken om uitvoeringen te starten en gegevens vast te leggen. Zie de MLflow-voorbeeldnotebooks voor meer informatie.
Toegang tot de MLflow-traceringsserver van buiten Azure Databricks
U kunt ook schrijven naar en lezen van de traceringsserver van buiten Azure Databricks, bijvoorbeeld met behulp van de MLflow CLI. Zie Toegang tot de MLflow-traceringsserver van buiten Azure Databricks.
MLflow-uitvoeringen programmatisch analyseren
U kunt via een programma toegang krijgen tot gegevens die met MLflow worden uitgevoerd met behulp van de volgende twee DataFrame-API's:
- De MLflow Python-client search_runs-API retourneert een Pandas DataFrame.
- De gegevensbron van het MLflow-experiment retourneert een Apache Spark DataFrame.
In dit voorbeeld ziet u hoe u de MLflow Python-client gebruikt om een dashboard te bouwen waarmee wijzigingen in metrische evaluatiegegevens in de loop van de tijd worden gevisualiseerd, hoe het aantal uitvoeringen wordt bijgehouden dat door een specifieke gebruiker is gestart en het totale aantal uitvoeringen voor alle gebruikers meet:
Waarom metrische gegevens en uitvoer van modeltraining kunnen variëren
Veel van de algoritmen die in ML worden gebruikt, hebben een willekeurig element, zoals steekproeven of willekeurige initiële omstandigheden binnen het algoritme zelf. Wanneer u een model traint met behulp van een van deze algoritmen, zijn de resultaten mogelijk niet hetzelfde bij elke uitvoering, zelfs niet als u de uitvoering met dezelfde voorwaarden start. Veel bibliotheken bieden een seeding-mechanisme om de initiële voorwaarden voor deze stochastische elementen op te lossen. Er kunnen echter andere bronnen van variatie zijn die niet worden beheerd door zaden. Sommige algoritmen zijn gevoelig voor de volgorde van de gegevens en gedistribueerde ML-algoritmen kunnen ook worden beïnvloed door hoe de gegevens worden gepartitioneerd. Over het algemeen is deze variatie niet significant en niet belangrijk in het ontwikkelingsproces van het model.
Gebruik de PySpark-functies repartition en sortWithinPartitions om variatie te beheren die wordt veroorzaakt door verschillen in volgorde en partitionering.
Voorbeelden van MLflow-tracering
De volgende notebooks laten zien hoe u verschillende typen modellen traint en de trainingsgegevens in MLflow bijhoudt en hoe u traceringsgegevens opslaat in Delta Lake.