Sdílet prostřednictvím


Sledování experimentů Azure Synapse Analytics ML pomocí MLflow a Azure Machine Learning

V tomto článku se dozvíte, jak povolit MLflow připojení ke službě Azure Machine Learning při práci v pracovním prostoru Azure Synapse Analytics. Tuto konfiguraci můžete využít ke sledování, správě modelů a nasazení modelu.

MLflow je opensourcová knihovna pro správu životního cyklu experimentů strojového učení. MLFlow Tracking je komponenta MLflow, která protokoluje a sleduje metriky trénování a artefakty modelu. Přečtěte si další informace o MLflow.

Pokud máte projekt MLflow pro trénování pomocí Azure Machine Learning, přečtěte si téma Trénování modelů ML pomocí projektů MLflow a Azure Machine Learning (Preview)

Požadavky

Instalace knihoven

Instalace knihoven ve vyhrazeném clusteru ve službě Azure Synapse Analytics:

  1. Vytvořte requirements.txt soubor s balíčky, které experimenty vyžadují, ale ujistěte se, že obsahuje i následující balíčky:

    requirements.txt

    mlflow
    azureml-mlflow
    azure-ai-ml
    
  2. Přejděte na portál pracovního prostoru Azure Analytics.

  3. Přejděte na kartu Spravovat a vyberte Fondy Apache Sparku.

  4. Klikněte na tři tečky vedle názvu clusteru a vyberte Balíčky.

    Instalace balíčků mlflow ve službě Azure Synapse Analytics

  5. V části Soubory požadavků klikněte na Nahrát.

  6. Nahrajte soubor requirements.txt.

  7. Počkejte, než se cluster restartuje.

Sledování experimentů s využitím MLflow

Azure Synapse Analytics je možné nakonfigurovat tak, aby sledoval experimenty pomocí MLflow do pracovního prostoru Azure Machine Learning. Azure Machine Learning poskytuje centralizované úložiště pro správu celého životního cyklu experimentů, modelů a nasazení. Má také výhodu, že umožňuje snadnější cestu k nasazení pomocí možností nasazení služby Azure Machine Learning.

Konfigurace poznámkových bloků pro použití MLflow připojeného ke službě Azure Machine Learning

Pokud chcete azure Machine Learning použít jako centralizované úložiště pro experimenty, můžete využít MLflow. V každém poznámkovém bloku, na kterém pracujete, musíte nakonfigurovat identifikátor URI sledování tak, aby odkazoval na pracovní prostor, který budete používat. Následující příklad ukazuje, jak se dá provést:

Konfigurace identifikátoru URI sledování

  1. Získejte identifikátor URI sledování pro váš pracovní prostor:

    PLATÍ PRO: Rozšíření Azure CLI ml v2 (aktuální)

    1. Přihlaste se a nakonfigurujte pracovní prostor:

      az account set --subscription <subscription>
      az configure --defaults workspace=<workspace> group=<resource-group> location=<location> 
      
    2. Identifikátor URI sledování můžete získat pomocí az ml workspace příkazu:

      az ml workspace show --query mlflow_tracking_uri
      
  2. Konfigurace identifikátoru URI sledování:

    Pak metoda set_tracking_uri() odkazuje identifikátor URI sledování MLflow na tento identifikátor URI.

    import mlflow
    
    mlflow.set_tracking_uri(mlflow_tracking_uri)
    

    Tip

    Při práci na sdílených prostředích, jako je cluster Azure Databricks, cluster Azure Synapse Analytics nebo podobný, je užitečné nastavit proměnnou MLFLOW_TRACKING_URI prostředí na úrovni clusteru, aby automaticky nakonfiguroval identifikátor URI pro sledování MLflow tak, aby odkazoval na Azure Machine Learning pro všechny relace spuštěné v clusteru, a ne na základě jednotlivých relací.

Konfigurace ověřování

Jakmile je sledování nakonfigurované, budete také muset nakonfigurovat, jak se ověřování musí stát s přidruženým pracovním prostorem. Modul plug-in Azure Machine Learning pro MLflow ve výchozím nastavení provede interaktivní ověřování otevřením výchozího prohlížeče a zobrazí výzvu k zadání přihlašovacích údajů. Informace o konfiguraci MLflow pro Azure Machine Learning: Konfigurace ověřování pro další způsoby konfigurace ověřování pro MLflow v pracovních prostorech Azure Machine Learning

U interaktivních úloh, kde je uživatel připojený k relaci, můžete spoléhat na interaktivní ověřování, a proto není potřeba provádět žádnou další akci.

Upozorňující

Interaktivní ověřování v prohlížeči blokuje provádění kódu při zobrazení výzvy k zadání přihlašovacích údajů. Tento přístup není vhodný pro ověřování v bezobslužných prostředích, jako jsou trénovací úlohy. Doporučujeme nakonfigurovat jiný režim ověřování.

V těchto scénářích, ve kterých se vyžaduje bezobslužné spuštění, musíte nakonfigurovat instanční objekt pro komunikaci se službou 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>"

Tip

Při práci na sdílených prostředích doporučujeme nakonfigurovat tyto proměnné prostředí ve výpočetním prostředí. Osvědčeným postupem je spravovat jako tajné kódy v instanci služby Azure Key Vault.

V Azure Databricks můžete například použít tajné kódy v proměnných prostředí následujícím způsobem v konfiguraci clusteru: AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}} Další informace o implementaci tohoto přístupu v Azure Databricks najdete v tématu Odkazování na tajný kód v proměnné prostředí nebo v dokumentaci pro vaši platformu.

Názvy experimentů ve službě Azure Machine Learning

Azure Machine Learning ve výchozím nastavení sleduje spuštění ve výchozím experimentu s názvem Default. Obvykle je vhodné nastavit experiment, na který budete pracovat. K nastavení názvu experimentu použijte následující syntaxi:

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

Sledování parametrů, metrik a artefaktů

Pak můžete MLflow použít ve službě Azure Synapse Analytics stejným způsobem, jako jste zvyklí. Podrobnosti najdete v tématu Protokol a zobrazení metrik a souborů protokolů.

Registrace modelů v registru pomocí MLflow

Modely je možné zaregistrovat v pracovním prostoru Azure Machine Learning, který nabízí centralizované úložiště pro správu jejich životního cyklu. Následující příklad zaznamená model natrénovaný pomocí knihovny Spark MLLib a zaregistruje ho také v registru.

mlflow.spark.log_model(model, 
                       artifact_path = "model", 
                       registered_model_name = "model_name")  
  • Pokud zaregistrovaný model s názvem neexistuje, metoda zaregistruje nový model, vytvoří verzi 1 a vrátí objekt ModelVersion MLflow.

  • Pokud zaregistrovaný model s názvem již existuje, metoda vytvoří novou verzi modelu a vrátí objekt verze.

Modely zaregistrované ve službě Azure Machine Learning můžete spravovat pomocí MLflow. Další podrobnosti najdete v článku Správa registrů modelů ve službě Azure Machine Learning pomocí MLflow .

Nasazení a využívání modelů zaregistrovaných ve službě Azure Machine Learning

Modely zaregistrované ve službě Azure Machine Learning Service pomocí MLflow je možné využívat jako:

  • Koncový bod služby Azure Machine Learning (v reálném čase a dávka): Toto nasazení umožňuje využívat možnosti nasazení služby Azure Machine Learning pro odvozování v reálném čase i dávkové odvozování ve službě Azure Container Instances (ACI), Azure Kubernetes (AKS) nebo našich spravovaných koncových bodů.

  • Objekty modelu MLFlow nebo uživatelem definované soubory Pandas, které je možné použít v poznámkových blocích Azure Synapse Analytics ve streamovaných nebo dávkových kanálech.

Nasazení modelů do koncových bodů služby Azure Machine Learning

Modul plug-in můžete využít azureml-mlflow k nasazení modelu do pracovního prostoru Azure Machine Learning. Podívejte se , jak nasadit stránku modelů MLflow, kde najdete podrobné informace o tom, jak nasadit modely do různých cílů.

Důležité

Aby bylo možné je nasadit, musí být modely zaregistrované v registru služby Azure Machine Learning. Azure Machine Learning nepodporuje nasazení neregistrovaných modelů.

Nasazení modelů pro dávkové bodování pomocí funkcí definovaných uživatelem

Pro dávkové vyhodnocování můžete zvolit clustery Azure Synapse Analytics. Model MLFlow se načte a použije se jako UDF Spark Pandas k určení skóre nových dat.

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) 

Vyčištění prostředků

Pokud chcete zachovat pracovní prostor Azure Synapse Analytics, ale už ho nepotřebujete, můžete pracovní prostor Azure Machine Learning odstranit. Pokud nemáte v úmyslu používat protokolované metriky a artefakty ve vašem pracovním prostoru, možnost je odstranit jednotlivě, není v tuto chvíli dostupná. Místo toho odstraňte skupinu prostředků, která obsahuje účet úložiště a pracovní prostor, takže vám nebudou účtovány žádné poplatky:

  1. Úplně nalevo na webu Azure Portal vyberte Skupiny prostředků.

    Odstranění na webu Azure Portal

  2. V seznamu vyberte skupinu prostředků, kterou jste vytvořili.

  3. Vyberte Odstranit skupinu prostředků.

  4. Zadejte název skupiny prostředků. Poté vyberte Odstranit.

Další kroky