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-invoegtoepassingazureml-mlflow
voor 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 MLflow-mogelijkheden voor tracering en logboekregistratie nodig hebben zonder de volledige suite met functies, inclusief implementaties, te importeren.Een Azure Machine Learning-werkruimte. Zie de zelfstudie Machine Learning-resources maken om een werkruimte te maken. Controleer de toegangsmachtigingen die u nodig hebt om uw MLflow-bewerkingen uit te voeren in uw werkruimte.
Als u externe tracering uitvoert (dat wil weten, houdt u experimenten bij 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://
.
Haal de tracerings-URI voor uw werkruimte op:
VAN TOEPASSING OP: Azure CLI ml-extensie v2 (huidige)
Meld u aan en configureer uw werkruimte:
az account set --subscription <subscription> az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
U kunt de tracerings-URI ophalen met behulp van de
az ml workspace
opdracht:az ml workspace show --query mlflow_tracking_uri
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:
- Omgeving: leest accountgegevens die zijn opgegeven via omgevingsvariabelen en gebruikt deze om te verifiëren.
- Beheerde identiteit: als de toepassing wordt geïmplementeerd op een Azure-host waarvoor Managed Identity is ingeschakeld, wordt hiermee geverifieerd.
- Azure CLI: Als een gebruiker zich aanmeldt via de Azure CLI-opdracht
az login
, wordt deze geverifieerd als die gebruiker. - Azure PowerShell: als een gebruiker zich aanmeldt via de opdracht van
Connect-AzAccount
Azure PowerShell, wordt deze geverifieerd als die gebruiker. - 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 er om referenties wordt gevraagd. Deze benadering is niet geschikt voor verificatie in omgevingen zonder toezicht, zoals trainingstaken. U wordt aangeraden een 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, raden we u aan deze omgevingsvariabelen te configureren bij de berekening. Als best practice kunt u ze 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 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 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_CLOUD
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
.
Volgende stappen
Nu uw omgeving is verbonden met uw werkruimte in Azure Machine Learning, kunt u ermee beginnen te werken.