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
- Pracovní prostor a cluster Azure Synapse Analytics
- Pracovní prostor služby Azure Machine Learning
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
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í
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-ID> az configure --defaults workspace=<workspace-name> group=<resource-group-name> location=<location>
Pomocí příkazu získejte identifikátor URI
az ml workspace
pro sledování:az ml workspace show --query mlflow_tracking_uri
Nakonfigurujte identifikátor URI sledování:
set_tracking_uri()
Pomocí metody nastavte identifikátor URI sledování MLflow na identifikátor URI sledování vašeho pracovního prostoru.import mlflow mlflow.set_tracking_uri(mlflow_tracking_uri)
Tip
Některé scénáře zahrnují práci ve sdíleném prostředí, jako je cluster Azure Databricks nebo cluster Azure Synapse Analytics. V těchto případech je vhodné nastavit
MLFLOW_TRACKING_URI
proměnnou prostředí na úrovni clusteru, a ne pro každou relaci. Nastavení proměnné na úrovni clusteru automaticky nakonfiguruje identifikátor URI pro sledování MLflow tak, aby ukazoval na Azure Machine Learning pro všechny relace v clusteru.
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
V případě interaktivních úloh, kde je uživatel připojený k relaci, můžete spoléhat na interaktivní ověřování. Nevyžaduje se žádná další akce.
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. V těchto prostředích doporučujeme nakonfigurovat jiný režim ověřování.
V případě scénářů, které vyžadují bezobslužné spuštění, je potřeba nakonfigurovat instanční objekt pro komunikaci se službou Azure Machine Learning. Informace o vytvoření instančního objektu najdete v tématu Konfigurace instančního objektu.
V následujícím kódu použijte ID tenanta, ID klienta a tajný klíč klienta instančního objektu:
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 ve sdílených prostředích doporučujeme nakonfigurovat tyto proměnné prostředí na úrovni výpočetních prostředků. Osvědčeným postupem je spravovat jako tajné kódy v instanci služby Azure Key Vault.
Například v konfiguraci clusteru Azure Databricks můžete tajné kódy použít v proměnných prostředí následujícím způsobem: 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 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:
Ú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.