Konfigurera MLflow för Azure Machine Learning

Den här artikeln beskriver hur du kan konfigurera MLflow för att ansluta till en Azure Machine Learning-arbetsyta för spårning, register och distribution.

Azure Machine Learning-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 Machine Learning-arbetsytor är redan konfigurerade för att fungera med MLflow , så ingen extra konfiguration krävs.

Men om du arbetar utanför Azure Machine Learning (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 Azure Compute (Azure Machine Learning Notebooks, Jupyter Notebooks som finns på Azure Machine Learning-beräkningsinstanser eller jobb som körs i Azure Machine Learning-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 Machine Learning-plugin-programmet för MLflow azureml-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 MLflows spårnings- och loggningsfunktioner utan att importera hela sviten med funktioner, inklusive distributioner.

  • En Azure Machine Learning-arbetsyta. Du kan skapa en genom att följa självstudien Skapa maskininlärningsresurser.

  • Om du utför fjärrspårning (d.v.s. spårningsexperiment som körs utanför Azure Machine Learning) konfigurerar du MLflow så att det pekar på spårnings-URI:n för din Azure Machine Learning-arbetsyta. Mer information om hur du ansluter MLflow till din arbetsyta finns i Konfigurera MLflow för Azure Machine Learning.

Konfigurera URI för MLflow-spårning

Om du vill ansluta MLflow till en Azure Machine Learning-arbetsyta behöver du spårnings-URI:n för arbetsytan. Varje arbetsyta har en egen spårnings-URI och har protokollet azureml://.

  1. Hämta spårnings-URI:n för din arbetsyta:

    GÄLLER FÖR:Azure CLI ml extension v2 (aktuell)

    1. Logga in och konfigurera din arbetsyta:

      az account set --subscription <subscription>
      az configure --defaults workspace=<workspace> group=<resource-group> location=<location> 
      
    2. Du kan hämta spårnings-URI:n med kommandot az ml workspace :

      az ml workspace show --query mlflow_tracking_uri
      
  2. 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 ställa in miljövariabeln MLFLOW_TRACKING_URI på klusternivå för att automatiskt konfigurera MLflow-spårnings-URI:n så att den pekar på Azure Machine Learning 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 Machine Learning-plugin-programmet för MLflow interaktiv autentisering genom att öppna standardwebbläsaren för att fråga efter autentiseringsuppgifter.

Azure Machine Learning-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:

  1. Miljö: Läser kontoinformation som anges via miljövariabler och använder den för att autentisera.
  2. Hanterad identitet: Om programmet distribueras till en Azure-värd med hanterad identitet aktiverat autentiseras det med det.
  3. Azure CLI: Om en användare loggar in via Azure CLI-kommandot az login autentiseras den som den användaren.
  4. Azure PowerShell: Om en användare loggar in via Azure PowerShells kommando autentiseras Connect-AzAccount den som den användaren.
  5. 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 du frågar efter autentiseringsuppgifter. Det är inte ett lämpligt alternativ för autentisering i obevakade miljöer som träningsjobb. Vi rekommenderar att du konfigurerar 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 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>"

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 när det är möjligt. 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>}}. Se Referens till en hemlighet i en miljövariabel för hur du gör det i Azure Databricks eller se liknande dokumentation på 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 Dataforskare eller Deltagare har redan konfigurerats för att utföra MLflow-åtgärder på en Azure Machine Learning-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 Machine Learning 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 Machine Learning 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 Machine Learning-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 Machine Learning kan du börja arbeta med den.