Konfigurera MLflow för Azure Machine Learning
Den här artikeln beskriver hur du kan konfigurera MLflow för att ansluta till en Azure Mašinsko učenje-arbetsyta för spårning, register och distribution.
Azure Mašinsko učenje arbetsytor är MLflow-kompatibla, vilket innebär att de kan fungera som en MLflow-server utan någon extra konfiguration. Varje arbetsyta har en MLflow-spårnings-URI som MLflow kan använda för att ansluta till arbetsytan. Azure Mašinsko učenje arbetsytor har redan konfigurerats för att fungera med MLflow, så ingen extra konfiguration krävs.
Men om du arbetar utanför Azure Mašinsko učenje (till exempel din lokala dator, Azure Synapse Analytics eller Azure Databricks) måste du konfigurera MLflow så att det pekar på arbetsytan.
Viktigt!
När du kör på Azure Compute (Azure Mašinsko učenje Notebooks, Jupyter Notebooks som finns på Azure Mašinsko učenje beräkningsinstanser eller jobb som körs i Azure Mašinsko učenje beräkningskluster) behöver du inte konfigurera spårnings-URI:n. Den konfigureras automatiskt åt dig.
Förutsättningar
Du behöver följande förutsättningar för att följa den här självstudien:
Installera MLflow SDK-paketet
mlflow
och Azure Mašinsko učenje-plugin-programmetazureml-mlflow
för MLflow:pip install mlflow azureml-mlflow
Dricks
Du kan använda
mlflow-skinny
paketet, som är ett enkelt MLflow-paket utan SQL-lagring, server, användargränssnitt eller datavetenskapsberoenden.mlflow-skinny
rekommenderas för användare som främst behöver funktionerna för MLflow-spårning och loggning utan att importera hela sviten med funktioner, inklusive distributioner.En Azure Machine Learning-arbetsyta. Information om hur du skapar en arbetsyta finns i självstudien Skapa maskininlärningsresurser. Granska de åtkomstbehörigheter du behöver för att utföra dina MLflow-åtgärder på din arbetsyta.
Om du utför fjärrspårning (d.v.s. spåra experiment som körs utanför Azure Mašinsko učenje) konfigurerar du MLflow så att det pekar på spårnings-URI:n för din Azure Mašinsko učenje-arbetsyta. Mer information om hur du ansluter MLflow till din arbetsyta finns i Konfigurera MLflow för Azure Mašinsko učenje.
Konfigurera URI för MLflow-spårning
Om du vill ansluta MLflow till en Azure Mašinsko učenje-arbetsyta behöver du spårnings-URI:n för arbetsytan. Varje arbetsyta har en egen spårnings-URI och har protokollet azureml://
.
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> az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Du kan hämta spårnings-URI:n med kommandot
az ml workspace
:az ml workspace show --query mlflow_tracking_uri
Konfigurera spårnings-URI:n:
Sedan pekar metoden
set_tracking_uri()
MLflow-spårnings-URI:n till den URI:n.import mlflow mlflow.set_tracking_uri(mlflow_tracking_uri)
Dricks
När du arbetar med delade miljöer, till exempel ett Azure Databricks-kluster, Azure Synapse Analytics-kluster eller liknande, är det användbart att ange miljövariabeln
MLFLOW_TRACKING_URI
på klusternivå för att automatiskt konfigurera MLflow-spårnings-URI:n så att den pekar på Azure Mašinsko učenje för alla sessioner som körs i klustret i stället för att göra det per session.
Konfigurera autentisering
När spårningen har angetts måste du också konfigurera autentiseringsmetoden för den associerade arbetsytan. Som standard utför Azure Mašinsko učenje-plugin-programmet för MLflow interaktiv autentisering genom att öppna standardwebbläsaren för att fråga efter autentiseringsuppgifter.
Azure Mašinsko učenje-plugin-programmet för MLflow stöder flera autentiseringsmekanismer via paketet azure-identity
, som installeras som ett beroende för plugin-programmet azureml-mlflow
. Följande autentiseringsmetoder provas en efter en tills en av dem lyckas:
- Miljö: Läser kontoinformation som anges via miljövariabler och använder den för att autentisera.
- Hanterad identitet: Om programmet distribueras till en Azure-värd med hanterad identitet aktiverat autentiseras det med det.
- Azure CLI: Om en användare loggar in via Azure CLI-kommandot
az login
autentiseras den som den användaren. - Azure PowerShell: Om en användare loggar in via Azure PowerShells kommando autentiseras
Connect-AzAccount
den som den användaren. - Interaktiv webbläsare: Autentiserar en användare interaktivt via standardwebbläsaren.
För interaktiva jobb där en användare är ansluten till sessionen kan du förlita dig på interaktiv autentisering och därför krävs ingen ytterligare åtgärd.
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.
För de scenarier där obevakad körning krävs måste du konfigurera ett huvudnamn för tjänsten för att kommunicera med Azure Mašinsko učenje.
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 med delade miljöer rekommenderar vi att du konfigurerar dessa miljövariabler vid beräkningen. Vi rekommenderar att du hanterar dem som hemligheter i en instans av Azure Key Vault.
I Azure Databricks kan du till exempel använda hemligheter i miljövariabler enligt följande i klusterkonfigurationen: AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}}
. Mer information om hur du implementerar den här metoden i Azure Databricks finns i Referens till en hemlighet i en miljövariabel eller i dokumentationen för din plattform.
Om du hellre vill använda ett certifikat i stället för en hemlighet kan du konfigurera miljövariablerna AZURE_CLIENT_CERTIFICATE_PATH
till sökvägen till en PEM
eller PKCS12
certifikatfilen (inklusive privat nyckel) och AZURE_CLIENT_CERTIFICATE_PASSWORD
med lösenordet för certifikatfilen, om det finns några.
Konfigurera auktoriserings- och behörighetsnivåer
Vissa standardroller som AzureML Data Scientist eller Deltagare är redan konfigurerade för att utföra MLflow-åtgärder på en Azure Mašinsko učenje-arbetsyta. Om du använder en anpassad roll behöver du följande behörigheter:
Så här använder du MLflow-spårning:
Microsoft.MachineLearningServices/workspaces/experiments/*
Microsoft.MachineLearningServices/workspaces/jobs/*
Så här använder du MLflow-modellregistret:
Microsoft.MachineLearningServices/workspaces/models/*/*
Information om hur du beviljar åtkomst för tjänstens huvudnamn som du skapade eller användarkontot till din arbetsyta finns i Bevilja åtkomst.
Felsöka autentisering
MLflow försöker autentisera till Azure Mašinsko učenje vid den första åtgärden som interagerar med tjänsten, till exempel mlflow.set_experiment()
eller mlflow.start_run()
. Om du hittar problem eller oväntade autentiseringsprompter under processen kan du öka loggningsnivån för att få mer information om felet:
import logging
logging.getLogger("azure").setLevel(logging.DEBUG)
Ange experimentnamn (valfritt)
Alla MLflow-körningar loggas till det aktiva experimentet. Som standard loggas körningar till ett experiment med namnet Default
som skapas automatiskt åt dig. Du kan konfigurera experimentet där spårning sker.
Dricks
När du skickar jobb med Azure Mašinsko učenje CLI v2 kan du ange experimentnamnet med hjälp av egenskapen experiment_name
i YAML-definitionen för jobbet. Du behöver inte konfigurera det i träningsskriptet. Mer information finns i YAML: visningsnamn, experimentnamn, beskrivning och taggar .
Konfigurera experimentet med hjälp av MLflow-kommandot mlflow.set_experiment()
.
experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(experiment_name)
Stöd för icke-offentliga Azure-moln
Azure Mašinsko učenje-plugin-programmet för MLflow konfigureras som standard för att fungera med det globala Azure-molnet. Du kan dock konfigurera det Azure-moln som du använder genom att ange miljövariabeln AZUREML_CURRENT_CLOUD
.
import os
os.environ["AZUREML_CURRENT_CLOUD"] = "AzureChinaCloud"
Du kan identifiera molnet du använder med följande Azure CLI-kommando:
az cloud list
Det aktuella molnet har värdet IsActive
inställt på True
.
Nästa steg
Nu när din miljö är ansluten till din arbetsyta i Azure Mašinsko učenje kan du börja arbeta med den.