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.

  • Trainingsuitvoeringen organiseren met MLflow-experimenten

  • Trainingscode beheren met MLflow-uitvoeringen

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.

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:

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

Notebook downloaden

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:

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.