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-invoegtoepassingazureml-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 gebruikmlflow-skinny
van . 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://
.
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-ID> az configure --defaults workspace=<workspace-name> group=<resource-group-name> location=<location>
Haal de tracerings-URI op met behulp van de
az ml workspace
opdracht:az ml workspace show --query mlflow_tracking_uri
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:
- Omgeving: accountgegevens die zijn opgegeven via omgevingsvariabelen, worden gelezen en gebruikt voor verificatie.
- 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.
- Azure CLI: Als u de Azure CLI-opdracht
az login
gebruikt om u aan te melden, worden uw referenties gebruikt voor verificatie. - Azure PowerShell: als u de Azure PowerShell-opdracht
Connect-AzAccount
gebruikt om u aan te melden, worden uw referenties gebruikt voor verificatie. - 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
.
Gerelateerde inhoud
Nu uw omgeving is verbonden met uw werkruimte in Azure Machine Learning, kunt u ermee beginnen te werken.