Sledování experimentů Azure Synapse Analytics ML pomocí MLflow a Azure Machine Učení

V tomto článku se dozvíte, jak povolit MLflow připojení ke službě Azure Machine Učení 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í s využitím služby Azure Machine Učení, přečtěte si téma Trénování modelů ML pomocí projektů MLflow a Učení Azure Machine Učení (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.

    install mlflow packages in 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

Službu Azure Synapse Analytics je možné nakonfigurovat tak, aby sledovala experimenty pomocí MLflow do pracovního prostoru Azure Machine Učení. Azure Machine Učení poskytuje centralizované úložiště pro správu celého životního cyklu experimentů, modelů a nasazení. Má také výhodu povolení snadnější cesty k nasazení pomocí možností nasazení azure machine Učení.

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

Pokud chcete použít Azure Machine Učení 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 tak, aby automaticky nakonfiguroval identifikátor URI pro sledování MLflow tak, aby odkazoval na azure Machine Učení pro všechny relace spuštěné v clusteru, a ne pro jednotlivé relace.

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 Učení pro MLflow ve výchozím nastavení provede interaktivní ověřování otevřením výchozího prohlížeče, aby se zobrazila výzva k zadání přihlašovacích údajů. Informace o konfiguraci MLflow pro azure machine Učení: Konfigurace ověřování pro další způsoby konfigurace ověřování pro MLflow v pracovních prostorech Azure Machine Učení.

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í prohlížeče zablokuje provádění kódu při zobrazení výzvy k zadání přihlašovacích údajů. Není to vhodná možnost 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 případě, že se vyžaduje bezobslužné spuštění, budete muset nakonfigurovat instanční objekt pro komunikaci se službou Azure Machine Učení.

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 je vhodné nakonfigurovat tyto proměnné prostředí na výpočetních prostředcích. Osvědčeným postupem je spravovat jako tajné kódy v instanci služby Azure Key Vault, kdykoli je to možné. 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>}} Informace o tom, jak to udělat v Azure Databricks, najdete v tématu Referenční informace o tajném kódu v proměnné prostředí nebo se podívejte na podobnou dokumentaci ve vaší platformě.

Názvy experimentů ve službě Azure Machine Učení

Ve výchozím nastavení azure Machine Učení 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 Učení, 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é v Azure Machine Učení můžete spravovat pomocí MLflow. Další podrobnosti najdete v článku Správa registrů modelů ve službě Azure Machine Učení pomocí MLflow.

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

Modely zaregistrované ve službě Azure Machine Učení Service pomocí MLflow je možné využívat takto:

  • Koncový bod služby Azure Machine Učení (v reálném čase a dávka): Toto nasazení umožňuje využít možnosti nasazení služby Azure Machine Učení 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 Učení

Modul plug-in můžete využít azureml-mlflow k nasazení modelu do pracovního prostoru Azure Machine Učení. 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 Učení. Nasazení neregistrovaných modelů se ve službě Azure Machine Učení nepodporuje.

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ž nepotřebujete pracovní prostor Azure Machine Učení, můžete pracovní prostor Azure Machine Učení 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ů.

    Delete in the 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