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
- Pracovní prostor a cluster Azure Synapse Analytics
- Pracovní prostor azure machine Učení.
Instalace knihoven
Instalace knihoven ve vyhrazeném clusteru ve službě Azure Synapse Analytics:
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
Přejděte na portál pracovního prostoru Azure Analytics.
Přejděte na kartu Spravovat a vyberte Fondy Apache Sparku.
Klikněte na tři tečky vedle názvu clusteru a vyberte Balíčky.
V části Soubory požadavků klikněte na Nahrát.
Nahrajte soubor
requirements.txt
.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í
Získejte identifikátor URI sledování pro váš pracovní prostor:
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)
Přihlaste se a nakonfigurujte pracovní prostor:
az account set --subscription <subscription> az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Identifikátor URI sledování můžete získat pomocí
az ml workspace
příkazu:az ml workspace show --query mlflow_tracking_uri
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:
Úplně nalevo na webu Azure Portal vyberte Skupiny prostředků.
V seznamu vyberte skupinu prostředků, kterou jste vytvořili.
Vyberte Odstranit skupinu prostředků.
Zadejte název skupiny prostředků. Poté vyberte Odstranit.