Delen via


MLflow configureren voor Azure Machine Learning

In dit artikel wordt uitgelegd hoe u MLflow configureert om verbinding te maken met een Azure Machine Learning-werkruimte voor het bijhouden, registerbeheer en implementeren.

Azure Machine Learning-werkruimten zijn MLflow-compatibel, wat betekent dat ze kunnen fungeren als MLflow-servers zonder extra configuratie. Elke werkruimte heeft een MLflow-tracerings-URI die MLflow kan gebruiken om verbinding te maken met de werkruimte. Azure Machine Learning-werkruimten zijn al geconfigureerd voor gebruik met MLflow, dus er is geen extra configuratie vereist.

Als u echter buiten Azure Machine Learning werkt, moet u MLflow configureren om naar de werkruimte te verwijzen. Getroffen omgevingen omvatten uw lokale computer, Azure Synapse Analytics en Azure Databricks.

Belangrijk

Wanneer u de Azure-rekeninfrastructuur gebruikt, hoeft u de tracerings-URI niet te configureren. Deze wordt automatisch voor u geconfigureerd. Omgevingen met automatische configuratie omvatten Azure Machine Learning-notebooks, Jupyter-notebooks die worden gehost op Azure Machine Learning-rekeninstanties en taken die worden uitgevoerd op Azure Machine Learning-rekenclusters.

Vereisten

  • Het MLflow SDK-pakket mlflow en de Azure Machine Learning-invoegtoepassing azureml-mlflow voor MLflow. U kunt de volgende opdracht gebruiken om deze software te installeren:

    pip install mlflow azureml-mlflow
    

    Tip

    In plaats van mlflow, overweeg het gebruik mlflow-skinnyvan . Dit pakket is een lichtgewicht MLflow-pakket zonder SQL-opslag-, server-, UI- of data science-afhankelijkheden. Het wordt aanbevolen voor gebruikers die voornamelijk MLflow-mogelijkheden voor tracering en logboekregistratie nodig hebben, maar niet de volledige suite met functies willen importeren, inclusief implementaties.

  • Een Azure Machine Learning-werkruimte. Zie Resources maken die u nodig hebt om aan de slag te gaan om een werkruimte te maken.

  • Toegangsmachtigingen voor het uitvoeren van MLflow-bewerkingen in uw werkruimte. Zie MLflow-bewerkingen voor een lijst met bewerkingen en vereiste machtigingen.

De MLflow-tracerings-URI configureren

Als u externe tracering wilt uitvoeren of experimenten wilt bijhouden die buiten Azure Machine Learning worden uitgevoerd, configureert u MLflow zodat deze verwijst naar de tracerings-URI van uw Azure Machine Learning-werkruimte.

Als u MLflow wilt verbinden met een Azure Machine Learning-werkruimte, hebt u de tracerings-URI van de werkruimte nodig. Elke werkruimte heeft een eigen tracerings-URI, die begint met het protocol azureml://.

  1. Haal de tracerings-URI voor uw werkruimte op:

    VAN TOEPASSING OP: Azure CLI ml-extensie v2 (huidige)

    1. Meld u aan en configureer uw werkruimte:

      az account set --subscription <subscription-ID>
      az configure --defaults workspace=<workspace-name> group=<resource-group-name> location=<location> 
      
    2. Haal de tracerings-URI op met behulp van de az ml workspace opdracht:

      az ml workspace show --query mlflow_tracking_uri
      
  2. Configureer de tracerings-URI:

    Gebruik de set_tracking_uri() methode om de MLflow-tracerings-URI in te stellen op de tracerings-URI van uw werkruimte.

    import mlflow
    
    mlflow.set_tracking_uri(mlflow_tracking_uri)
    

    Tip

    Sommige scenario's omvatten het werken in een gedeelde omgeving, zoals een Azure Databricks-cluster of een Azure Synapse Analytics-cluster. In deze gevallen is het handig om de MLFLOW_TRACKING_URI omgevingsvariabele in te stellen op clusterniveau in plaats van voor elke sessie. Als u de variabele instelt op clusterniveau, wordt de MLflow-tracerings-URI automatisch geconfigureerd om naar Azure Machine Learning te verwijzen voor alle sessies in het cluster.

Verificatie configureren

Nadat u tracering hebt ingesteld, moet u ook de verificatiemethode voor de gekoppelde werkruimte configureren.

De Azure Machine Learning-invoegtoepassing voor MLflow voert standaard interactieve verificatie uit door de standaardbrowser te openen om om referenties te vragen. Maar de invoegtoepassing ondersteunt ook verschillende andere verificatiemechanismen. Het azure-identity pakket biedt deze ondersteuning. Dit pakket wordt geïnstalleerd als een afhankelijkheid van de azureml-mlflow invoegtoepassing.

Het verificatieproces probeert de volgende methoden, een na een, totdat het slaagt:

  1. Omgeving: accountgegevens die zijn opgegeven via omgevingsvariabelen, worden gelezen en gebruikt voor verificatie.
  2. Beheerde identiteit: als de toepassing wordt geïmplementeerd op een Azure-host waarvoor een beheerde identiteit is ingeschakeld, wordt de beheerde identiteit gebruikt voor verificatie.
  3. Azure CLI: Als u de Azure CLI-opdracht az login gebruikt om u aan te melden, worden uw referenties gebruikt voor verificatie.
  4. Azure PowerShell: als u de Azure PowerShell-opdracht Connect-AzAccount gebruikt om u aan te melden, worden uw referenties gebruikt voor verificatie.
  5. Interactieve browser: de gebruiker wordt interactief geverifieerd via de standaardbrowser.

Voor interactieve taken waarbij er een gebruiker is verbonden met de sessie, kunt u vertrouwen op interactieve verificatie. Er is geen verdere actie vereist.

Waarschuwing

Met interactieve browserverificatie wordt de uitvoering van code geblokkeerd wanneer er om referenties wordt gevraagd. Deze benadering is niet geschikt voor verificatie in omgevingen zonder toezicht, zoals trainingstaken. U wordt aangeraden een andere verificatiemodus in deze omgevingen te configureren.

Voor scenario's waarvoor uitvoering zonder toezicht is vereist, moet u een service-principal configureren om te communiceren met Azure Machine Learning. Zie Een service-principal configureren voor informatie over het maken van een service-principal.

Gebruik de tenant-id, client-id en het clientgeheim van uw service-principal in de volgende code:

import os

os.environ["AZURE_TENANT_ID"] = "<Azure-tenant-ID>"
os.environ["AZURE_CLIENT_ID"] = "<Azure-client-ID>"
os.environ["AZURE_CLIENT_SECRET"] = "<Azure-client-secret>"

Tip

Wanneer u in gedeelde omgevingen werkt, raden we u aan deze omgevingsvariabelen op rekenniveau te configureren. Als best practice kunt u ze beheren als geheimen in een exemplaar van Azure Key Vault.

In een Azure Databricks-clusterconfiguratie kunt u bijvoorbeeld geheimen in omgevingsvariabelen op de volgende manier gebruiken: AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}}. Zie Referentie voor een geheim in een omgevingsvariabele of raadpleeg de documentatie voor uw platform voor meer informatie over het implementeren van deze benadering in Azure Databricks.

Als u liever een certificaat dan een geheim gebruikt, kunt u de volgende omgevingsvariabelen configureren:

  • Stel AZURE_CLIENT_CERTIFICATE_PATH in op het pad van een bestand dat het certificaat en het persoonlijke sleutelpaar bevat in de PEM-indeling (Privacy Enhanced Mail) of Public Key Cryptography Standards 12 (PKCS #12).
  • Stel AZURE_CLIENT_CERTIFICATE_PASSWORD dit in op het wachtwoord van het certificaatbestand als er een wachtwoord wordt gebruikt.

Autorisatie- en machtigingsniveaus configureren

Sommige standaardrollen, zoals AzureML-Datawetenschapper en Inzender, zijn al geconfigureerd voor het uitvoeren van MLflow-bewerkingen in een Azure Machine Learning-werkruimte. Als u een aangepaste rol gebruikt, hebt u de volgende machtigingen nodig:

  • MLflow-tracering gebruiken:

    • Microsoft.MachineLearningServices/workspaces/experiments/*
    • Microsoft.MachineLearningServices/workspaces/jobs/*
  • Het MLflow-modelregister gebruiken:

    • Microsoft.MachineLearningServices/workspaces/models/*/*

Zie Toegang verlenen als u wilt zien hoe u toegang tot uw werkruimte verleent aan een service-principal die u maakt of aan uw gebruikersaccount.

Verificatieproblemen oplossen

MLflow probeert te verifiëren bij Azure Machine Learning tijdens de eerste bewerking die communiceert met de service, zoals mlflow.set_experiment() of mlflow.start_run(). Als er problemen optreden of onverwachte verificatieprompts tijdens het proces, kunt u het logboekregistratieniveau verhogen voor meer informatie over de fout:

import logging

logging.getLogger("azure").setLevel(logging.DEBUG)

Experimentnaam instellen (optioneel)

Alle MLflow-uitvoeringen worden geregistreerd bij het actieve experiment. Standaard worden uitvoeringen geregistreerd bij een experiment met de naam Default dat automatisch voor u wordt gemaakt. U kunt het experiment configureren dat wordt gebruikt voor het bijhouden.

Tip

Wanneer u de Azure Machine Learning CLI v2 gebruikt om taken te verzenden, kunt u de naam van het experiment instellen met behulp van de experiment_name eigenschap in de YAML-definitie van de taak. U hoeft deze niet te configureren in uw trainingsscript. Zie YAML: weergavenaam, experimentnaam, beschrijving en tags voor meer informatie.

Gebruik de opdracht MLflow mlflow.set_experiment() om uw experiment te configureren.

experiment_name = "experiment_with_mlflow"
mlflow.set_experiment(experiment_name)

Ondersteuning configureren voor een niet-openbare Azure-cloud

De Azure Machine Learning-invoegtoepassing voor MLflow is standaard geconfigureerd voor gebruik met de wereldwijde Azure-cloud. U kunt echter de Azure-cloud configureren die u gebruikt door de AZUREML_CURRENT_CLOUD omgevingsvariabele in te stellen:

import os

os.environ["AZUREML_CURRENT_CLOUD"] = "AzureChinaCloud"

U kunt de cloud identificeren die u gebruikt met de volgende Azure CLI-opdracht:

az cloud list

De huidige cloud heeft de waarde IsActive ingesteld op True.

Nu uw omgeving is verbonden met uw werkruimte in Azure Machine Learning, kunt u ermee beginnen te werken.