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-programmet azureml-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://.

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

    GÄLLER FÖR: Azure CLI ml-tillägget v2 (aktuellt)

    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 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:

  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 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.