Az MLflow konfigurálása az Azure Machine Learninghez

Ez a cikk bemutatja, hogyan konfigurálhatja az MLflow-t egy Azure Machine Tanulás-munkaterülethez való csatlakozásra nyomon követés, nyilvántartások és üzembe helyezés céljából.

Az Azure Machine Tanulás munkaterületek MLflow-kompatibilisek, ami azt jelenti, hogy további konfiguráció nélkül MLflow-kiszolgálóként is működhetnek. Minden munkaterület rendelkezik egy MLflow-követési URI-val, amellyel az MLflow csatlakozhat a munkaterülethez. Az Azure Machine Tanulás-munkaterületek már konfigurálva vannak az MLflow használatához, így nincs szükség további konfigurációra.

Ha azonban az Azure Machine Tanulás (például a helyi gép, az Azure Synapse Analytics vagy az Azure Databricks) kívül dolgozik, az MLflow-t úgy kell konfigurálnia, hogy a munkaterületre mutasson.

Fontos

Az Azure Compute (Azure Machine Tanulás Notebooks, Az Azure Machine Tanulás számítási példányokon vagy az Azure Machine Tanulás számítási fürtökön futó feladatok) futtatásakor nem kell konfigurálnia a nyomkövetési URI-t. Automatikusan konfigurálva van az Ön számára.

Előfeltételek

Az oktatóanyag követéséhez a következő előfeltételekre van szüksége:

  • Telepítse az MLflow SDK-csomagot mlflow és az Azure Machine Tanulás beépülő modult az MLflow-hozazureml-mlflow.

    pip install mlflow azureml-mlflow
    

    Tipp.

    Használhatja a mlflow-skinny csomagot, amely egy egyszerű MLflow-csomag SQL Storage, kiszolgáló, felhasználói felület vagy adatelemzési függőségek nélkül. mlflow-skinny Azoknak a felhasználóknak ajánlott, akiknek elsősorban az MLflow nyomkövetési és naplózási képességeire van szükségük anélkül, hogy importálni kellene a teljes szolgáltatáscsomagot, beleértve az üzembe helyezéseket is.

  • Egy Azure Machine Learning-munkaterület. Létrehozhat egyet a Gépi tanulási erőforrások létrehozása oktatóanyagot követve.

  • Ha távoli nyomkövetést végez (vagyis az Azure Machine Tanulás kívül futó nyomkövetési kísérleteket), az MLflow konfigurálása az Azure Machine Tanulás-munkaterület nyomon követésére mutató URI-jára mutat. További információ az MLflow munkaterülethez való csatlakoztatásáról: MLflow konfigurálása az Azure Machine Tanulás.

MLflow tracking URI konfigurálása

Az MLflow Azure Machine Tanulás-munkaterülethez való csatlakoztatásához szüksége van a munkaterület nyomkövetési URI-ra. Minden munkaterület saját nyomkövetési URI-val rendelkezik, és rendelkezik a protokollval azureml://.

  1. Kérje le a munkaterület nyomkövetési URI-ját:

    ÉRVÉNYES:Azure CLI ml-bővítmény 2-es verzió (aktuális)

    1. Jelentkezzen be és konfigurálja a munkaterületet:

      az account set --subscription <subscription>
      az configure --defaults workspace=<workspace> group=<resource-group> location=<location> 
      
    2. A nyomkövetési URI-t a következő paranccsal szerezheti az ml workspace be:

      az ml workspace show --query mlflow_tracking_uri
      
  2. A nyomkövetési URI konfigurálása:

    Ezután a metódus set_tracking_uri() az MLflow-követési URI-t az adott URI-ra pontokat jelölő URI-ra mutatja.

    import mlflow
    
    mlflow.set_tracking_uri(mlflow_tracking_uri)
    

    Tipp.

    Megosztott környezeteken, például Azure Databricks-fürtön, Azure Synapse Analytics-fürtön vagy hasonlókon végzett munka során hasznos, ha a környezeti változót MLFLOW_TRACKING_URI a fürt szintjén úgy állítja be, hogy automatikusan konfigurálja az MLflow-követési URI-t úgy, hogy a fürtben futó összes munkamenethez az Azure Machine Tanulás mutasson, és ne munkamenetenkénti alapon végezze el.

Hitelesítés konfigurálása

A nyomkövetés beállítása után konfigurálnia kell a társított munkaterület hitelesítési módszerét is. Alapértelmezés szerint az MLflow Azure Machine Tanulás beépülő modulja interaktív hitelesítést hajt végre az alapértelmezett böngésző megnyitásával, hogy hitelesítő adatokat kérjen.

Az MLflow Azure Machine Tanulás beépülő modulja számos hitelesítési mechanizmust támogat a csomagon azure-identitykeresztül, amely a beépülő modul azureml-mlflowfüggőségeként van telepítve. A következő hitelesítési módszereket egyenként próbálja ki a rendszer, amíg az egyik sikeres nem lesz:

  1. Környezet: Beolvassa a környezeti változókon keresztül megadott fiókadatokat, és hitelesítésre használja.
  2. Felügyelt identitás: Ha az alkalmazás olyan Azure-gazdagépen van üzembe helyezve, amelyen engedélyezve van a felügyelt identitás, azzal hitelesíti magát.
  3. Azure CLI: Ha egy felhasználó az Azure CLI-paranccsal az login jelentkezik be, a felhasználóként hitelesíti magát.
  4. Azure PowerShell: Ha egy felhasználó az Azure PowerShell parancsán Connect-AzAccount keresztül jelentkezik be, a felhasználóként hitelesíti magát.
  5. Interaktív böngésző: Interaktívan hitelesíti a felhasználót az alapértelmezett böngészőn keresztül.

Az olyan interaktív feladatok esetében, ahol egy felhasználó csatlakozik a munkamenethez, interaktív hitelesítésre támaszkodhat, ezért nincs szükség további műveletekre.

Figyelmeztetés

Az interaktív böngészőhitelesítés letiltja a kódvégrehajtást, amikor hitelesítő adatokat kér. Ez nem alkalmas hitelesítésre felügyelet nélküli környezetekben, például betanítási feladatokban. Javasoljuk, hogy más hitelesítési módot is konfiguráljon.

Azokban az esetekben, amikor felügyelet nélküli végrehajtásra van szükség, konfigurálnia kell egy szolgáltatásnevet az Azure Machine Tanulás való kommunikációhoz.

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

Tipp.

A megosztott környezeteken való munka során célszerű ezeket a környezeti változókat a számításnál konfigurálni. Ajánlott eljárásként titkos kulcsként kezelni őket az Azure Key Vault egy példányában, amikor csak lehetséges. Az Azure Databricksben például a fürtkonfigurációban az alábbiak szerint használhat titkos kulcsokat a környezeti változókban: AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}}. Az Azure Databricksben való műveletet egy környezeti változóban található titkos kódra hivatkozva, vagy a platform hasonló dokumentációjában találja.

Ha inkább titkos kulcs helyett tanúsítványt szeretne használni, konfigurálhatja a környezeti változókat AZURE_CLIENT_CERTIFICATE_PATH egy vagy PKCS12 egy PEM tanúsítványfájl elérési útjára (beleértve a titkos kulcsot is), és AZURE_CLIENT_CERTIFICATE_PASSWORD ha van ilyen, a tanúsítványfájl jelszavával.

Engedélyezési és engedélyszintek konfigurálása

Egyes alapértelmezett szerepkörök, például az AzureML adattudós vagy a Közreműködő már konfigurálva vannak MLflow-műveletek végrehajtására egy Azure Machine Tanulás-munkaterületen. Egyéni szerepkör használata esetén a következő engedélyekre van szüksége:

  • MLflow-nyomkövetés használata:

    • Microsoft.MachineLearningServices/workspaces/experiments/*
    • Microsoft.MachineLearningServices/workspaces/jobs/*
  • Az MLflow-modell beállításjegyzékének használata:

    • Microsoft.MachineLearningServices/workspaces/models/*/*

Ha tudni szeretné, hogyan adhat hozzáférést a létrehozott szolgáltatásnévhez vagy felhasználói fiókhoz a munkaterülethez, olvassa el a Hozzáférés engedélyezése című témakört.

Hitelesítés hibaelhárítása

Az MLflow megpróbál hitelesítést végezni az Azure Machine Tanulás a szolgáltatással interakcióba lépő első műveleten, például mlflow.set_experiment() vagy mlflow.start_run(). Ha problémákat vagy váratlan hitelesítési kéréseket talál a folyamat során, növelheti a naplózási szintet, hogy további részleteket kapjon a hibáról:

import logging

logging.getLogger("azure").setLevel(logging.DEBUG)

Kísérlet nevének beállítása (nem kötelező)

Az összes MLflow-futtatás naplózva lesz az aktív kísérletben. Alapértelmezés szerint a rendszer naplózza a futtatásokat egy, az Ön számára automatikusan létrehozott kísérletbe Default . Konfigurálhatja azt a kísérletet, amelyben a nyomon követés történik.

Tipp.

Amikor feladatokat küld az Azure Machine Tanulás CLI 2-es verziójával, a feladat YAML-definíciójának tulajdonságával experiment_name állíthatja be a kísérlet nevét. Nem kell konfigurálnia a betanítási szkripten. A részletekért tekintse meg a YAML-t: megjelenítendő név, kísérlet neve, leírása és címkéi .

Konfigurálja a kísérletet az MLflow paranccsal mlflow.set_experiment().

experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(experiment_name)

Nem nyilvános Azure Clouds-támogatás

Az MLflow Azure Machine Tanulás beépülő modulja alapértelmezés szerint úgy van konfigurálva, hogy a globális Azure-felhővel működjön. A környezeti változó AZUREML_CURRENT_CLOUDbeállításával azonban konfigurálhatja a használt Azure-felhőt.

import os

os.environ["AZUREML_CURRENT_CLOUD"] = "AzureChinaCloud"

A használt felhőt a következő Azure CLI-paranccsal azonosíthatja:

az cloud list

Az aktuális felhőben az érték IsActive a következőre Truevan állítva: .

Következő lépések

Most, hogy a környezete csatlakozik a munkaterülethez az Azure Machine Tanulás, megkezdheti a munkát.