Share via


Azure Synapse Analytics ML-kísérletek nyomon követése az MLflow és az Azure Machine Tanulás

Ebből a cikkből megtudhatja, hogyan engedélyezheti az MLflow számára az Azure Machine-Tanulás való csatlakozást az Azure Synapse Analytics-munkaterületen végzett munka során. Ezt a konfigurációt követési, modellfelügyeleti és modelltelepítési célokra használhatja.

Az MLflow egy nyílt forráskódú kódtár a gépi tanulási kísérletek életciklusának kezelésére. Az MLFlow Tracking az MLflow egyik összetevője, amely naplózza és nyomon követi a betanítási futtatási metrikákat és a modellösszetevőket. További információ az MLflow-ról.

Ha MLflow-projekttel rendelkezik az Azure Machine Tanulás való betanítása érdekében, olvassa el az ML-modellek betanítása MLflow-projektekkel és az Azure Machine Tanulás (előzetes verzió) című témakört.

Előfeltételek

Kódtárak telepítése

Kódtárak telepítése dedikált fürtre az Azure Synapse Analyticsben:

  1. Hozzon létre egy requirements.txt fájlt a kísérletekhez szükséges csomagokkal, de győződjön meg arról, hogy a következő csomagokat is tartalmazza:

    requirements.txt

    mlflow
    azureml-mlflow
    azure-ai-ml
    
  2. Lépjen az Azure Analytics-munkaterület portálra.

  3. Lépjen a Kezelés lapra, és válassza az Apache Spark-készletek lehetőséget.

  4. Kattintson a fürt neve melletti három pontra, és válassza a Csomagok lehetőséget.

    install mlflow packages in Azure Synapse Analytics

  5. A Követelmények fájlok szakaszban kattintson a Feltöltés gombra.

  6. Töltse fel a requirements.txt fájlt.

  7. Várja meg, amíg a fürt újraindul.

Kísérletek nyomon követése az MLflow használatával

Az Azure Synapse Analytics konfigurálható a kísérletek nyomon követésére az MLflow használatával az Azure Machine Tanulás-munkaterületen. Az Azure Machine Tanulás egy központosított adattárat biztosít a kísérletek, modellek és üzemelő példányok teljes életciklusának kezeléséhez. Emellett azzal az előnnyel is rendelkezik, hogy egyszerűbb üzembe helyezést tesz lehetővé az Azure Machine Tanulás üzembe helyezési lehetőségekkel.

A jegyzetfüzetek konfigurálása az Azure Machine-Tanulás csatlakoztatott MLflow használatára

Az Azure Machine Tanulás a kísérletek központi adattáraként való használatához használhatja az MLflow-t. Minden jegyzetfüzeten, amelyen dolgozik, konfigurálnia kell a nyomkövetési URI-t, hogy a használni kívánt munkaterületre mutasson. Az alábbi példa bemutatja, hogyan végezhető el:

Nyomkövetési URI konfigurálása

  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 konfigurálása után azt is konfigurálnia kell, hogy a hitelesítés hogyan történjen a társított munkaterületen. Alapértelmezés szerint az MLflow Azure Machine Tanulás beépülő modulja interaktív hitelesítést végez az alapértelmezett böngésző megnyitásával, hogy hitelesítő adatokat kérjen. Tekintse meg az MLflow konfigurálását az Azure Machine-Tanulás: Hitelesítés konfigurálása az MLflow hitelesítésének további módjaihoz az Azure Machine Tanulás-munkaterületeken.

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.

A kísérlet nevei az Azure Machine Tanulás

Az Azure Machine Tanulás alapértelmezés szerint egy úgynevezett alapértelmezett kísérletben Defaultfut. Általában érdemes beállítani azt a kísérletet, amelyen dolgozni fog. A kísérlet nevének beállításához használja az alábbi szintaxist:

mlflow.set_experiment(experiment_name="experiment-name")

Paraméterek, metrikák és összetevők nyomon követése

Az MLflow az Azure Synapse Analyticsben ugyanúgy használható, mint korábban. További részletekért lásd: Log & view metrics and log files.

Modellek regisztrálása a beállításjegyzékben az MLflow használatával

A modellek regisztrálhatók az Azure Machine Tanulás-munkaterületen, amely egy központi adattárat kínál az életciklusuk kezeléséhez. Az alábbi példa naplózza a Spark MLLib-vel betanított modellt, és regisztrálja azt a beállításjegyzékben is.

mlflow.spark.log_model(model, 
                       artifact_path = "model", 
                       registered_model_name = "model_name")  
  • Ha a névvel rendelkező regisztrált modell nem létezik, a metódus regisztrál egy új modellt, létrehozza az 1. verziót, és visszaad egy ModelVersion MLflow objektumot.

  • Ha már létezik regisztrált modell a névvel, a metódus létrehoz egy új modellverziót, és visszaadja a verzióobjektumot.

Az Azure Machine Tanulás az MLflow használatával kezelheti a modelleket. További részletekért tekintse meg az Azure Machine Tanulás modellregisztrációs adatbázisainak kezelését az MLflow használatával.

Az Azure Machine-Tanulás regisztrált modellek üzembe helyezése és felhasználása

Az Azure Machine Tanulás Service-ben MLflow használatával regisztrált modellek a következőképpen használhatók:

  • Azure Machine-Tanulás végpont (valós idejű és köteg): Ez az üzembe helyezés lehetővé teszi az Azure Machine Tanulás üzembe helyezési képességeit az Azure Container Instances (ACI), az Azure Kubernetes (AKS) vagy a felügyelt végpontok valós idejű és kötegelt következtetéséhez.

  • MLFlow-modellobjektumok vagy Pandas UDF-ek, amelyek streamelési vagy kötegelt folyamatokban használhatók az Azure Synapse Analytics-jegyzetfüzetekben.

Modellek üzembe helyezése az Azure Machine Tanulás-végpontokon

A azureml-mlflow beépülő modul használatával üzembe helyezhet egy modellt az Azure Machine Tanulás-munkaterületen. Az MLflow-modellek üzembe helyezésének lapján részletes információkat talál arról, hogyan helyezhet üzembe modelleket a különböző célokra.

Fontos

A modelleket regisztrálni kell az Azure Machine Tanulás beállításjegyzékében az üzembe helyezésükhöz. A nem regisztrált modellek üzembe helyezése nem támogatott az Azure Machine Tanulás.

Modellek üzembe helyezése kötegelt pontozáshoz UDF-ek használatával

A kötegelt pontozáshoz Azure Synapse Analytics-fürtöket választhat. A rendszer betölti az MLFlow-modellt, és Spark Pandas UDF-ként használja az új adatok pontozásához.

from pyspark.sql.types import ArrayType, FloatType 

model_uri = "runs:/"+last_run_id+ {model_path} 

#Create a Spark UDF for the MLFlow model 
pyfunc_udf = mlflow.pyfunc.spark_udf(spark, model_uri) 

#Load Scoring Data into Spark Dataframe 
scoreDf = spark.table({table_name}).where({required_conditions}) 

#Make Prediction 
preds = (scoreDf 
           .withColumn('target_column_name', pyfunc_udf('Input_column1', 'Input_column2', ' Input_column3', …)) 
        ) 

display(preds) 

Clean up resources

Ha meg szeretné tartani az Azure Synapse Analytics-munkaterületet, de már nincs szüksége az Azure Machine Tanulás-munkaterületre, törölheti az Azure Machine Tanulás munkaterületet. Ha nem tervezi használni a naplózott metrikákat és összetevőket a munkaterületen, az egyesével történő törlés lehetősége jelenleg nem érhető el. Ehelyett törölje a tárfiókot és a munkaterületet tartalmazó erőforráscsoportot, így nem kell fizetnie:

  1. Az Azure Portalon válassza az Erőforráscsoportok lehetőséget a bal szélen.

    Delete in the Azure portal

  2. Válassza ki a listában az Ön által létrehozott erőforráscsoportot.

  3. Válassza az Erőforráscsoport törlése elemet.

  4. Adja meg az erőforráscsoport nevét. Ezután válassza a Törlés elemet.

További lépések