MLflow configureren voor Azure Machine Learning

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

Azure Machine Learning-werkruimten zijn compatibel met MLflow, wat betekent dat ze kunnen fungeren als een MLflow-server 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 , zodat er geen extra configuratie is vereist.

Als u echter buiten Azure Machine Learning werkt (zoals uw lokale machine, Azure Synapse Analytics of Azure Databricks), moet u MLflow zo configureren dat deze verwijst naar de werkruimte.

Belangrijk

Bij uitvoering op Azure Compute (Azure Machine Learning Notebooks, Jupyter-notebooks die worden gehost op Azure Machine Learning-rekeninstanties of taken die worden uitgevoerd op Azure Machine Learning-rekenclusters), hoeft u de tracerings-URI niet te configureren. Deze wordt automatisch voor u geconfigureerd.

Vereisten

U hebt de volgende vereisten nodig om deze zelfstudie te volgen:

  • Installeer het MLflow SDK-pakket mlflow en de Azure Machine Learning-invoegtoepassing voor MLflow azureml-mlflow.

    pip install mlflow azureml-mlflow
    

    Tip

    U kunt het mlflow-skinny pakket gebruiken. Dit is een lichtgewicht MLflow-pakket zonder SQL-opslag-, server-, UI- of data science-afhankelijkheden. mlflow-skinny wordt aanbevolen voor gebruikers die voornamelijk de mogelijkheden voor tracering en logboekregistratie van MLflow nodig hebben zonder de volledige suite met functies, waaronder implementaties, te importeren.

  • Een Azure Machine Learning-werkruimte. U kunt er een maken door de zelfstudie Machine Learning-resources maken te volgen.

  • Als u externe tracering uitvoert (dat wil gezegd, experimenten bijhouden die buiten Azure Machine Learning worden uitgevoerd), configureert u MLflow zodat deze verwijst naar de tracerings-URI van uw Azure Machine Learning-werkruimte. Zie MLflow configureren voor Azure Machine Learning voor meer informatie over het verbinden van MLflow met uw werkruimte.

MLflow-tracerings-URI configureren

Als u MLflow wilt verbinden met een Azure Machine Learning-werkruimte, hebt u de tracerings-URI voor de werkruimte nodig. Elke werkruimte heeft een eigen tracerings-URI en heeft 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>
      az configure --defaults workspace=<workspace> group=<resource-group> location=<location> 
      
    2. U kunt de tracerings-URI ophalen met behulp van de az ml workspace opdracht:

      az ml workspace show --query mlflow_tracking_uri
      
  2. De tracerings-URI configureren:

    Vervolgens wijst de methode set_tracking_uri() de MLflow-tracerings-URI naar die URI.

    import mlflow
    
    mlflow.set_tracking_uri(mlflow_tracking_uri)
    

    Tip

    Wanneer u werkt aan gedeelde omgevingen, zoals een Azure Databricks-cluster, Azure Synapse Analytics-cluster of vergelijkbaar, is het handig om de omgevingsvariabele MLFLOW_TRACKING_URI op clusterniveau in te stellen om de MLflow-tracerings-URI automatisch te configureren om te verwijzen naar Azure Machine Learning voor alle sessies die in het cluster worden uitgevoerd in plaats van dit per sessie te doen.

Verificatie configureren

Zodra het bijhouden is 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.

De Azure Machine Learning-invoegtoepassing voor MLflow ondersteunt verschillende verificatiemechanismen via het pakket azure-identity, dat is geïnstalleerd als een afhankelijkheid voor de invoegtoepassing azureml-mlflow. De volgende verificatiemethoden worden één voor één geprobeerd totdat een van deze methoden slaagt:

  1. Omgeving: leest accountgegevens die zijn opgegeven via omgevingsvariabelen en gebruikt deze om te verifiëren.
  2. Beheerde identiteit: als de toepassing wordt geïmplementeerd op een Azure-host waarvoor Managed Identity is ingeschakeld, wordt hiermee geverifieerd.
  3. Azure CLI: Als een gebruiker zich aanmeldt via de Azure CLI-opdracht az login , wordt deze geverifieerd als die gebruiker.
  4. Azure PowerShell: als een gebruiker zich aanmeldt via de opdracht van Connect-AzAccount Azure PowerShell, wordt deze geverifieerd als die gebruiker.
  5. Interactieve browser: Hiermee wordt een gebruiker interactief geverifieerd via de standaardbrowser.

Voor interactieve taken waarbij er een gebruiker is verbonden met de sessie, kunt u vertrouwen op interactieve verificatie en hoeft u dus geen verdere actie te ondernemen.

Waarschuwing

Met interactieve browserverificatie wordt de uitvoering van code geblokkeerd wanneer u om referenties wordt gevraagd. Het is geen geschikte optie voor verificatie in omgevingen zonder toezicht, zoals trainingstaken. U wordt aangeraden andere verificatiemodus te configureren.

Voor deze scenario's waarbij uitvoering zonder toezicht is vereist, moet u een service-principal configureren om te communiceren met Azure Machine Learning.

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 aan gedeelde omgevingen werkt, is het raadzaam om deze omgevingsvariabelen te configureren op de berekening. Als best practice kunt u ze waar mogelijk beheren als geheimen in een exemplaar van Azure Key Vault. In Azure Databricks kunt u bijvoorbeeld geheimen in omgevingsvariabelen als volgt gebruiken in de clusterconfiguratie: AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}} Zie Verwijzen naar een geheim in een omgevingsvariabele om dit te doen in Azure Databricks of raadpleeg vergelijkbare documentatie in uw platform.

Als u liever een certificaat gebruikt in plaats van een geheim, kunt u de omgevingsvariabelen AZURE_CLIENT_CERTIFICATE_PATH configureren voor het pad naar een PEM of PKCS12 certificaatbestand (inclusief persoonlijke sleutel) en AZURE_CLIENT_CERTIFICATE_PASSWORD met het wachtwoord van het certificaatbestand, indien van toepassing.

Autorisatie- en machtigingsniveaus configureren

Sommige standaardrollen, zoals AzureML Datawetenschapper of 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 voor meer informatie over het verlenen van toegang voor de service-principal die u hebt gemaakt of gebruikersaccount aan uw werkruimte.

Problemen met verificatie 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 u problemen of onverwachte verificatieprompts vindt 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 waar het bijhouden plaatsvindt.

Tip

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

Configureer uw experiment met behulp van de MLflow-opdracht mlflow.set_experiment().

experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(experiment_name)

Ondersteuning voor niet-openbare Azure Clouds

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 omgevingsvariabele AZUREML_CURRENT_CLOUDin 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.

Volgende stappen

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