Spåra ML-experiment i Azure Synapse Analytics med MLflow och Azure Machine Learning
I den här artikeln lär du dig hur du aktiverar MLflow för att ansluta till Azure Machine Learning när du arbetar på en Azure Synapse Analytics-arbetsyta. Du kan använda den här konfigurationen för spårning, modellhantering och modelldistribution.
MLflow är ett bibliotek med öppen källkod för att hantera livscykeln för dina maskininlärningsexperiment. MLFlow Tracking är en komponent i MLflow som loggar och spårar dina träningskörningsmått och modellartefakter. Läs mer om MLflow.
Om du har ett MLflow-projekt att träna med Azure Machine Learning kan du läsa Träna ML-modeller med MLflow Projects och Azure Machine Learning (förhandsversion).
Förutsättningar
Installera bibliotek
Så här installerar du bibliotek i ditt dedikerade kluster i Azure Synapse Analytics:
Skapa en
requirements.txt
fil med de paket som experimenten kräver, men se till att den även innehåller följande paket:requirements.txt
mlflow azureml-mlflow azure-ai-ml
Gå till Azure Analytics-arbetsyteportalen.
Gå till fliken Hantera och välj Apache Spark-pooler.
Klicka på de tre punkterna bredvid klusternamnet och välj Paket.
I avsnittet Kravfiler klickar du på Ladda upp.
Ladda upp
requirements.txt
-filen.Vänta tills klustret startas om.
Spåra experiment med MLflow
Azure Synapse Analytics kan konfigureras för att spåra experiment med MLflow till Azure Machine Learning-arbetsytan. Azure Machine Learning tillhandahåller en central lagringsplats för att hantera hela livscykeln för experiment, modeller och distributioner. Det har också fördelen att aktivera enklare distributionsväg med hjälp av Distributionsalternativ för Azure Machine Learning.
Konfigurera dina notebook-filer för att använda MLflow som är anslutet till Azure Machine Learning
Om du vill använda Azure Machine Learning som centraliserad lagringsplats för experiment kan du använda MLflow. I varje notebook-fil där du arbetar med måste du konfigurera spårnings-URI:n så att den pekar på den arbetsyta som du ska använda. I följande exempel visas hur det kan göras:
Konfigurera spårnings-URI
Hämta spårnings-URI:n för din arbetsyta:
GÄLLER FÖR: Azure CLI ml-tillägget v2 (aktuellt)
Logga in och konfigurera din arbetsyta:
az account set --subscription <subscription-ID> az configure --defaults workspace=<workspace-name> group=<resource-group-name> location=<location>
Hämta spårnings-URI:n med hjälp
az ml workspace
av kommandot :az ml workspace show --query mlflow_tracking_uri
Konfigurera spårnings-URI:n:
set_tracking_uri()
Använd metoden för att ange URI:n för MLflow-spårning till spårnings-URI:n för din arbetsyta.import mlflow mlflow.set_tracking_uri(mlflow_tracking_uri)
Dricks
Vissa scenarier handlar om att arbeta i en delad miljö som ett Azure Databricks-kluster eller ett Azure Synapse Analytics-kluster. I dessa fall är det användbart att ange
MLFLOW_TRACKING_URI
miljövariabeln på klusternivå i stället för för för varje session. Om du ställer in variabeln på klusternivå konfigureras automatiskt MLflow-spårnings-URI:n så att den pekar på Azure Machine Learning för alla sessioner i klustret.
Konfigurera autentisering
När spårningen har konfigurerats måste du också konfigurera hur autentiseringen ska ske på den associerade arbetsytan. Som standard utför Azure Machine Learning-plugin-programmet för MLflow interaktiv autentisering genom att öppna standardwebbläsaren för att fråga efter autentiseringsuppgifter. Se Konfigurera MLflow för Azure Machine Learning: Konfigurera autentisering till ytterligare sätt att konfigurera autentisering för MLflow på Azure Machine Learning-arbetsytor.
För interaktiva jobb där en användare är ansluten till sessionen kan du förlita dig på interaktiv autentisering. Ingen ytterligare åtgärd krävs.
Varning
Interaktiv webbläsarautentisering blockerar kodkörning när den frågar efter autentiseringsuppgifter. Den här metoden är inte lämplig för autentisering i obevakade miljöer som träningsjobb. Vi rekommenderar att du konfigurerar ett annat autentiseringsläge i dessa miljöer.
För scenarier som kräver obevakad körning måste du konfigurera ett huvudnamn för tjänsten för att kommunicera med Azure Machine Learning. Information om hur du skapar ett huvudnamn för tjänsten finns i Konfigurera ett huvudnamn för tjänsten.
Använd klientorganisations-ID, klient-ID och klienthemlighet för tjänstens huvudnamn i följande kod:
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>"
Dricks
När du arbetar i delade miljöer rekommenderar vi att du konfigurerar dessa miljövariabler på beräkningsnivå. Vi rekommenderar att du hanterar dem som hemligheter i en instans av Azure Key Vault.
I en Azure Databricks-klusterkonfiguration kan du till exempel använda hemligheter i miljövariabler på följande sätt: AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}}
. Mer information om hur du implementerar den här metoden i Azure Databricks finns i Referera till en hemlighet i en miljövariabel eller i dokumentationen för din plattform.
Experimentets namn i Azure Machine Learning
Som standard spårar Azure Machine Learning körningar i ett standardexperiment med namnet Default
. Det är vanligtvis en bra idé att ställa in experimentet som du kommer att arbeta med. Använd följande syntax för att ange experimentets namn:
mlflow.set_experiment(experiment_name="experiment-name")
Spåra parametrar, mått och artefakter
Du kan använda MLflow i Azure Synapse Analytics på samma sätt som du är van vid. Mer information finns i Logga och visa mått och loggfiler.
Registrera modeller i registret med MLflow
Modeller kan registreras på Azure Machine Learning-arbetsytan, som erbjuder en central lagringsplats för att hantera deras livscykel. I följande exempel loggas en modell som tränats med Spark MLLib och registrerar den även i registret.
mlflow.spark.log_model(model,
artifact_path = "model",
registered_model_name = "model_name")
Om det inte finns någon registrerad modell med namnet registrerar metoden en ny modell, skapar version 1 och returnerar ett ModelVersion MLflow-objekt.
Om det redan finns en registrerad modell med namnet skapar metoden en ny modellversion och returnerar versionsobjektet.
Du kan hantera modeller som registrerats i Azure Machine Learning med hjälp av MLflow. Mer information finns i Hantera modellregister i Azure Machine Learning med MLflow .
Distribuera och använda modeller som registrerats i Azure Machine Learning
Modeller som registrerats i Azure Machine Learning Service med MLflow kan användas som:
En Azure Machine Learning-slutpunkt (realtid och batch): Med den här distributionen kan du använda Azure Machine Learning-distributionsfunktioner för både realtids- och batchinferens i Azure Container Instances (ACI), Azure Kubernetes (AKS) eller våra hanterade slutpunkter.
MLFlow-modellobjekt eller Pandas UDF:er, som kan användas i Azure Synapse Analytics-notebook-filer i strömnings- eller batchpipelines.
Distribuera modeller till Azure Machine Learning-slutpunkter
Du kan använda plugin-programmet azureml-mlflow
för att distribuera en modell till din Azure Machine Learning-arbetsyta. Kontrollera hur du distribuerar MLflow-modeller för en fullständig information om hur du distribuerar modeller till de olika målen.
Viktigt!
Modeller måste registreras i Azure Machine Learning-registret för att kunna distribuera dem. Distribution av oregistrerade modeller stöds inte i Azure Machine Learning.
Distribuera modeller för batchbedömning med hjälp av UDF:er
Du kan välja Azure Synapse Analytics-kluster för batchbedömning. MLFlow-modellen läses in och används som Spark Pandas UDF för att poängsätta nya data.
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)
Rensa resurser
Om du vill behålla din Azure Synapse Analytics-arbetsyta, men inte längre behöver Azure Machine Learning-arbetsytan, kan du ta bort Azure Machine Learning-arbetsytan. Om du inte planerar att använda de loggade måtten och artefakterna på din arbetsyta är möjligheten att ta bort dem individuellt inte tillgänglig just nu. Ta i stället bort resursgruppen som innehåller lagringskontot och arbetsytan, så att du inte debiteras några avgifter:
I Azure-portalen väljer du Resursgrupper längst till vänster.
Välj den resursgrupp i listan som du har skapat.
Välj Ta bort resursgrupp.
Ange resursgruppsnamnet. Välj sedan ta bort.