Azure Synapse Analytics ML-experimenten bijhouden met MLflow en Azure Machine Learning
In dit artikel leert u hoe u MLflow kunt inschakelen om verbinding te maken met Azure Machine Learning terwijl u in een Azure Synapse Analytics-werkruimte werkt. U kunt deze configuratie gebruiken voor het bijhouden, modelbeheer en modelimplementatie.
MLflow is een opensource-bibliotheek voor het beheren van de levenscyclus van uw machine learning-experimenten. MLFlow Tracking is een onderdeel van MLflow waarmee metrische gegevens en modelartefacten voor de training worden bijgehouden en bijgehouden. Meer informatie over MLflow.
Zie ML-modellen trainen met MLflow Projects en Azure Machine Learning (preview) als u een MLflow-project hebt om te trainen met Azure Machine Learning.
Vereisten
Bibliotheken installeren
Bibliotheken installeren op uw toegewezen cluster in Azure Synapse Analytics:
Maak een
requirements.txt
bestand met de pakketten die uw experimenten nodig hebben, maar zorg ervoor dat het ook de volgende pakketten bevat:requirements.txt
mlflow azureml-mlflow azure-ai-ml
Navigeer naar azure Analytics Workspace Portal.
Navigeer naar het tabblad Beheren en selecteer Apache Spark-pools.
Klik op de drie puntjes naast de clusternaam en selecteer Pakketten.
Klik in de sectie Vereistenbestanden op Uploaden.
Upload het
requirements.txt
-bestand.Wacht tot het cluster opnieuw is opgestart.
Experimenten bijhouden met MLflow
Azure Synapse Analytics kan worden geconfigureerd om experimenten bij te houden met behulp van MLflow naar azure Machine Learning-werkruimte. Azure Machine Learning biedt een gecentraliseerde opslagplaats voor het beheren van de volledige levenscyclus van experimenten, modellen en implementaties. Het heeft ook het voordeel dat het eenvoudigere implementatiepad mogelijk maakt met behulp van Azure Machine Learning-implementatieopties.
Uw notebooks configureren voor het gebruik van MLflow die is verbonden met Azure Machine Learning
Als u Azure Machine Learning wilt gebruiken als uw gecentraliseerde opslagplaats voor experimenten, kunt u MLflow gebruiken. In elk notitieblok waaraan u werkt, moet u de tracerings-URI zo configureren dat deze verwijst naar de werkruimte die u gaat gebruiken. In het volgende voorbeeld ziet u hoe u dit kunt doen:
Tracerings-URI configureren
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 geconfigureerd, moet u ook configureren hoe de verificatie moet gebeuren met de gekoppelde werkruimte. De Azure Machine Learning-invoegtoepassing voor MLflow voert standaard interactieve verificatie uit door de standaardbrowser te openen om om referenties te vragen. Raadpleeg MLflow configureren voor Azure Machine Learning: verificatie configureren voor aanvullende manieren om verificatie voor MLflow in Azure Machine Learning-werkruimten te configureren.
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.
De namen van het experiment in Azure Machine Learning
Azure Machine Learning houdt standaard uitvoeringen bij in een standaardexperiment met de naam Default
. Het is meestal een goed idee om het experiment in te stellen waaraan u gaat werken. Gebruik de volgende syntaxis om de naam van het experiment in te stellen:
mlflow.set_experiment(experiment_name="experiment-name")
Parameters, metrische gegevens en artefacten bijhouden
U kunt vervolgens MLflow in Azure Synapse Analytics op dezelfde manier gebruiken als waar u gewend bent. Zie logboekgegevens en logboekbestanden voor meer informatie.
Modellen registreren in het register met MLflow
Modellen kunnen worden geregistreerd in de Azure Machine Learning-werkruimte, die een gecentraliseerde opslagplaats biedt voor het beheren van hun levenscyclus. In het volgende voorbeeld wordt een model geregistreerd dat is getraind met Spark MLLib en wordt het ook geregistreerd in het register.
mlflow.spark.log_model(model,
artifact_path = "model",
registered_model_name = "model_name")
Als er geen geregistreerd model met de naam bestaat, registreert de methode een nieuw model, maakt u versie 1 en retourneert u een ModelVersion MLflow-object.
Als er al een geregistreerd model met de naam bestaat, maakt de methode een nieuwe modelversie en retourneert het versieobject.
U kunt modellen beheren die zijn geregistreerd in Azure Machine Learning met behulp van MLflow. Bekijk modellenregisters beheren in Azure Machine Learning met MLflow voor meer informatie.
Modellen implementeren en gebruiken die zijn geregistreerd in Azure Machine Learning
Modellen die zijn geregistreerd in Azure Machine Learning Service met behulp van MLflow, kunnen worden gebruikt als:
Een Azure Machine Learning-eindpunt (realtime en batch): met deze implementatie kunt u gebruikmaken van azure Machine Learning-implementatiemogelijkheden voor zowel realtime als batchdeductie in Azure Container Instances (ACI), Azure Kubernetes (AKS) of onze beheerde eindpunten.
MLFlow-modelobjecten of Pandas UDF's, die kunnen worden gebruikt in Azure Synapse Analytics-notebooks in streaming- of batchpijplijnen.
Modellen implementeren in Azure Machine Learning-eindpunten
U kunt de azureml-mlflow
invoegtoepassing gebruiken om een model te implementeren in uw Azure Machine Learning-werkruimte. Controleer de pagina MLflow-modellen implementeren voor een volledig detail over het implementeren van modellen op de verschillende doelen.
Belangrijk
Modellen moeten worden geregistreerd in het Azure Machine Learning-register om ze te kunnen implementeren. Implementatie van niet-geregistreerde modellen wordt niet ondersteund in Azure Machine Learning.
Modellen implementeren voor batchgewijs scoren met behulp van UDF's
U kunt Azure Synapse Analytics-clusters kiezen voor batchgewijs scoren. Het MLFlow-model wordt geladen en gebruikt als Spark Pandas UDF om nieuwe gegevens te scoren.
from pyspark.sql.types import ArrayType, FloatType
model_uri = "runs:/"+last_run_id+ {model_path}
#Create a Spark UDF for the MLFlow model
pyfunc_udf = mlflow.pyfunc.spark_udf(spark, model_uri)
#Load Scoring Data into Spark Dataframe
scoreDf = spark.table({table_name}).where({required_conditions})
#Make Prediction
preds = (scoreDf
.withColumn('target_column_name', pyfunc_udf('Input_column1', 'Input_column2', ' Input_column3', …))
)
display(preds)
Resources opschonen
Als u uw Azure Synapse Analytics-werkruimte wilt behouden, maar de Azure Machine Learning-werkruimte niet meer nodig hebt, kunt u de Azure Machine Learning-werkruimte verwijderen. Als u niet van plan bent om de vastgelegde metrische gegevens en artefacten in uw werkruimte te gebruiken, is de mogelijkheid om ze afzonderlijk te verwijderen op dit moment niet beschikbaar. Verwijder in plaats daarvan de resourcegroep die het opslagaccount en de werkruimte bevat, zodat er geen kosten in rekening worden gebracht:
Selecteer Resourcegroepen links in Azure Portal.
Selecteer de resourcegroep die u eerder hebt gemaakt uit de lijst.
Selecteer Resourcegroep verwijderen.
Voer de naam van de resourcegroup in. Selecteer daarna Verwijderen.