Dela via


Konfigurera MLflow för Azure Machine Learning

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

Azure Machine Learning-arbetsytor är MLflow-kompatibla, vilket innebär att de kan fungera som MLflow-servrar 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 har redan konfigurerats för att fungera med MLflow, så ingen extra konfiguration krävs.

Men om du arbetar utanför Azure Machine Learning måste du konfigurera MLflow så att det pekar på arbetsytan. Berörda miljöer omfattar din lokala dator, Azure Synapse Analytics och Azure Databricks.

Viktigt!

När du använder Azure-beräkningsinfrastruktur behöver du inte konfigurera spårnings-URI:n. Den konfigureras automatiskt åt dig. Miljöer med automatisk konfiguration inkluderar Azure Machine Learning-notebook-filer, Jupyter-notebook-filer som finns på Azure Machine Learning-beräkningsinstanser och jobb som körs i Azure Machine Learning-beräkningskluster.

Förutsättningar

  • MLflow SDK-paketet mlflow och Azure Machine Learning-plugin-programmet azureml-mlflow för MLflow. Du kan använda följande kommando för att installera den här programvaran:

    pip install mlflow azureml-mlflow
    

    Dricks

    I stället mlflowför kan du överväga att använda mlflow-skinny. Det här paketet är ett enkelt MLflow-paket utan SQL-lagring, server, användargränssnitt eller beroenden för datavetenskap. Det rekommenderas för användare som främst behöver MLflow-spårnings- och loggningsfunktioner men inte vill importera hela sviten med funktioner, inklusive distributioner.

  • En Azure Machine Learning-arbetsyta. Information om hur du skapar en arbetsyta finns i Skapa resurser som du behöver för att komma igång.

  • Åtkomstbehörigheter för att utföra MLflow-åtgärder på din arbetsyta. En lista över åtgärder och nödvändiga behörigheter finns i MLflow-åtgärder.

Konfigurera URI för MLflow-spårning

Om du vill utföra fjärrspårning eller spåra experiment 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.

Om du vill ansluta MLflow till en Azure Machine Learning-arbetsyta behöver du arbetsytans spårnings-URI. Varje arbetsyta har en egen spårnings-URI, som börjar med 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-ID>
      az configure --defaults workspace=<workspace-name> group=<resource-group-name> location=<location> 
      
    2. Hämta spårnings-URI:n med hjälp az ml workspace av kommandot :

      az ml workspace show --query mlflow_tracking_uri
      
  2. 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 du har konfigurerat spårning 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. Men plugin-programmet stöder också flera andra autentiseringsmekanismer. Paketet azure-identity tillhandahåller det här stödet. Det här paketet installeras som ett beroende av plugin-programmet azureml-mlflow .

Autentiseringsprocessen försöker med följande metoder, en efter en, tills den ena lyckas:

  1. Miljö: Kontoinformation som anges via miljövariabler läse och används för autentisering.
  2. Hanterad identitet: Om programmet distribueras till en Azure-värd med en aktiverad hanterad identitet används den hanterade identiteten för autentisering.
  3. Azure CLI: Om du använder Azure CLI-kommandot az login för att logga in används dina autentiseringsuppgifter för autentisering.
  4. Azure PowerShell: Om du använder Azure PowerShell-kommandot Connect-AzAccount för att logga in används dina autentiseringsuppgifter för autentisering.
  5. Interaktiv webbläsare: Användaren autentiseras 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. 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.

Om du hellre använder ett certifikat än en hemlighet kan du konfigurera följande miljövariabler:

  • Ange AZURE_CLIENT_CERTIFICATE_PATH sökvägen till en fil som innehåller certifikatet och det privata nyckelparet i PEM-format (Privacy Enhanced Mail) eller Public-Key Cryptography Standards 12 (PKCS #12).
  • Ange AZURE_CLIENT_CERTIFICATE_PASSWORD som lösenord för certifikatfilen om den använder ett lösenord.

Konfigurera auktoriserings- och behörighetsnivåer

Vissa standardroller som AzureML Dataforskare och 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 till din arbetsyta till ett huvudnamn för tjänsten som du skapar eller till ditt användarkonto finns i Bevilja åtkomst.

Felsök autentiseringsproblem

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 får problem eller oväntade autentiseringsanvisningarna 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 som används för spårning.

Dricks

När du använder Azure Machine Learning CLI v2 för att skicka jobb kan du ange experimentnamnet med hjälp experiment_name av egenskapen 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.

Använd MLflow-kommandot mlflow.set_experiment() för att konfigurera experimentet.

experiment_name = "experiment_with_mlflow"
mlflow.set_experiment(experiment_name)

Konfigurera stöd för ett icke-offentligt 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 AZUREML_CURRENT_CLOUD miljövariabeln:

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.

Nu när din miljö är ansluten till din arbetsyta i Azure Machine Learning kan du börja arbeta med den.