Správa registru modelů ve službě Azure Machine Learning pomocí MLflow
Azure Machine Learning podporuje MLflow pro správu modelů při připojení k pracovnímu prostoru. Tento přístup představuje pohodlný způsob, jak podporovat celý životní cyklus modelu pro uživatele, kteří jsou obeznámeni s klientem MLFlow.
Tento článek popisuje možnosti správy registru modelů pomocí MLflow a porovnání této metody s jinými možnostmi správy.
Požadavky
Nainstalujte balíček MLflow SDK
mlflow
a modul plug-in Azure Machine Learningazureml-mlflow
pro MLflow následujícím způsobem:pip install mlflow azureml-mlflow
Tip
Můžete použít
mlflow-skinny
balíček, což je jednoduchý balíček MLflow bez závislostí sql Storage, serveru, uživatelského rozhraní nebo datových věd. Tento balíček se doporučuje uživatelům, kteří primárně potřebují funkce sledování a protokolování MLflow bez importu celé sady funkcí, včetně nasazení.Vytvořte pracovní prostor Azure Machine Learning. Pokud chcete vytvořit pracovní prostor, přečtěte si téma Vytvoření prostředků, které potřebujete, abyste mohli začít. Zkontrolujte přístupová oprávnění , která potřebujete k provádění operací MLflow ve vašem pracovním prostoru.
Pokud chcete provádět vzdálené sledování nebo sledovat experimenty spuštěné mimo Azure Machine Learning, nakonfigurujte MLflow tak, aby odkazovali na identifikátor URI sledování pracovního prostoru Azure Machine Learning. Další informace o připojení MLflow k pracovnímu prostoru najdete v tématu Konfigurace MLflow pro Azure Machine Learning.
Postupy v tomto článku používají
client
objekt odkazující na klienta MLflow.Některé operace je možné spouštět přímo pomocí rozhraní API fluentu MLflow,
mlflow.<method>
. Jiné operace vyžadují, aby klient MLflow povolil komunikaci se službou Machine Learning v protokolu MLflow. Následující kód vytvoříMlflowClient
objekt:import mlflow client = mlflow.tracking.MlflowClient()
Omezení
Azure Machine Learning nepodporuje přejmenování modelů.
Machine Learning nepodporuje odstranění celého kontejneru modelu.
Správa modelů pomocí MLflow nepodporuje organizační registry.
Nasazení modelu z konkrétní fáze modelu se v současné době ve službě Machine Learning nepodporuje.
V Machine Learning se v současné době nepodporují operace napříč pracovními prostory.
Registrace nových modelů
Registr modelů nabízí pohodlný a centralizovaný způsob správy modelů v pracovním prostoru. Každý pracovní prostor má vlastní registr nezávislých modelů. Následující části ukazují dva způsoby registrace modelů v registru pomocí MLflow SDK.
Vytváření modelů z existujícího spuštění
Pokud máte model MLflow zaprotokolovaný uvnitř spuštění a chcete ho zaregistrovat v registru, použijte ID spuštění a cestu, kam se model protokoluje. Na tyto informace se můžete dotazovat podle pokynů v tématu Správa experimentů a spuštění pomocí MLflow.
mlflow.register_model(f"runs:/{run_id}/{artifact_path}", model_name)
Poznámka:
Modely je možné zaregistrovat pouze do registru ve stejném pracovním prostoru, ve kterém bylo spuštění sledováno. V Azure Machine Learning se v současné době nepodporují operace mezi pracovními prostory.
Tip
Zaregistrujte modely ze spuštění nebo pomocí mlflow.<flavor>.log_model
metody z běhu. Tento přístup zachovává rodokmen z úlohy, která prostředek vygenerovala.
Vytváření modelů z prostředků
Pokud máte složku s modelem MLModel MLflow, můžete ji zaregistrovat přímo. Model nemusí být vždy v kontextu spuštění. Pro tento přístup můžete pomocí schématu file://path/to/model
URI zaregistrovat modely MLflow uložené v místním systému souborů.
Následující kód vytvoří jednoduchý model pomocí scikit-learn
balíčku a uloží model ve formátu MLflow v místním úložišti:
from sklearn import linear_model
reg = linear_model.LinearRegression()
reg.fit([[0, 0], [1, 1], [2, 2]], [0, 1, 2])
mlflow.sklearn.save_model(reg, "./regressor")
Tip
Metoda save_model()
funguje stejným způsobem jako metoda log_model()
. log_model()
Zatímco metoda uloží model uvnitř aktivního spuštění, save_model()
metoda používá místní systém souborů k uložení modelu.
Následující kód zaregistruje model pomocí místní cesty:
import os
model_local_path = os.path.abspath("./regressor")
mlflow.register_model(f"file://{model_local_path}", "local-model-test")
Registry modelů dotazů
Sadu MLflow SDK můžete použít k dotazování a vyhledávání modelů registrovaných v registru. Následující části ukazují dva způsoby dotazování modelu.
Dotazování na všechny modely v registru
Všechny registrované modely v registru můžete dotazovat pomocí klienta MLflow.
Následující kód vytiskne názvy všech modelů v registru:
for model in client.search_registered_models():
print(f"{model.name}")
order_by
Pomocí metody uspořádejte výstup podle konkrétní vlastnosti, například name
, version
, creation_timestamp
nebo last_updated_timestamp
:
client.search_registered_models(order_by=["name ASC"])
Poznámka:
Pro verze MLflow starší než 2.0 použijte metodu MlflowClient.list_registered_models()
.
Získání konkrétních verzí modelu
Metoda search_registered_models()
načte objekt modelu, který obsahuje všechny verze modelu. Pokud chcete získat poslední zaregistrovanou verzi modelu pro daný model, můžete použít tuto metodu get_registered_model()
:
client.get_registered_model(model_name)
Pokud chcete získat konkrétní verzi modelu, použijte následující kód:
client.get_model_version(model_name, version=2)
Načtení modelů z registru
Modely můžete načíst přímo z registru a obnovit objekty protokolovaných modelů. Pro tuto úlohu použijte funkce mlflow.<flavor>.load_model()
nebo mlflow.pyfunc.load_model()
uveďte identifikátor URI modelu, který chcete načíst.
Tyto funkce můžete implementovat s následující syntaxí:
models:/<model-name>/latest
: Načtěte poslední verzi modelu.models:/<model-name>/<version-number>
: Načtěte konkrétní verzi modelu.models:/<model-name>/<stage-name>
: Načtěte pro model konkrétní verzi v dané fázi. Další informace najdete v tématu Práce s fázemi modelu.
Pokud chcete porozumět rozdílům mezi funkcemi mlflow.<flavor>.load_model()
a mlflow.pyfunc.load_model()
, přečtěte si pracovní postupy pro načítání modelů MLflow.
Práce s fázemi modelu
MLflow podporuje fáze pro model pro správu životního cyklu modelu. Verze modelu se může převést z jedné fáze do druhé. Fáze se přiřazují ke konkrétním verzím modelu. Model může mít více verzí v různých fázích.
Důležité
Ke fázím je možné přistupovat pouze pomocí sady SDK MLflow. V studio Azure Machine Learning nejsou viditelné. Fáze se nedají načíst pomocí sady Azure Machine Learning SDK, rozhraní příkazového řádku služby Azure Machine Learning nebo rozhraní REST API služby Azure Machine Learning. Nasazení z konkrétní fáze modelu se v současné době nepodporuje.
Fáze modelu dotazu
Následující kód pomocí klienta MLflow kontroluje všechny možné fáze modelu:
client.get_model_version_stages(model_name, version="latest")
Verze modelu pro každou fázi modelu můžete zobrazit načtením modelu z registru. Následující kód získá verzi modelu, která je aktuálně ve Staging
fázi:
client.get_latest_versions(model_name, stages=["Staging"])
V MLflow může být současně ve stejné fázi více verzí modelu. V předchozím příkladu vrátí metoda nejnovější (nejnovější) verzi ze všech verzí pro fázi.
Důležité
V sadě MLflow SDK rozlišují názvy fází malá a velká písmena.
Verze modelu přechodu
Převod verze modelu na konkrétní fázi je možné provést pomocí klienta MLflow:
client.transition_model_version_stage(model_name, version=3, stage="Staging")
Při přechodu verze modelu do konkrétní fáze, pokud už fáze obsahuje jiné verze modelu, stávající verze zůstanou beze změny. Toto chování platí ve výchozím nastavení.
Dalším přístupem je nastavení parametru archive_existing_versions=True
během přechodu. Tento přístup dává MLflow pokyn, aby do fáze Archived
přesunul všechny existující verze modelu:
client.transition_model_version_stage(
model_name, version=3, stage="Staging", archive_existing_versions=True
)
Načtení modelů z fází
Model můžete načíst v konkrétní fázi přímo z Pythonu load_model
pomocí funkce a následujícího formátu identifikátoru URI. Aby byla tato metoda úspěšná, musí být všechny knihovny a závislosti nainstalované ve vašem pracovním prostředí.
Načtěte model z Staging
fáze:
model = mlflow.pyfunc.load_model(f"models:/{model_name}/Staging")
Úprava a odstranění modelů
Registrované modely pro úpravy se podporují v MLflow i ve službě Azure Machine Learning, ale existují některé důležité rozdíly. Následující části popisují některé možnosti.
Poznámka:
Přejmenování modelů není ve službě Azure Machine Learning podporované, protože objekty modelů jsou neměnné.
Úprava popisu a značek modelu
Popis a značky modelu můžete upravit pomocí sady MLflow SDK:
client.update_model_version(model_name, version=1, description="My classifier description")
Pokud chcete upravit značky, použijte tyto set_model_version_tag
metody remove_model_version_tag
:
client.set_model_version_tag(model_name, version="1", key="type", value="classification")
Pokud chcete odebrat značku, použijte metodu delete_model_version_tag
:
client.delete_model_version_tag(model_name, version="1", key="type")
Odstranění verze modelu
Libovolnou verzi modelu v registru můžete odstranit pomocí klienta MLflow:
client.delete_model_version(model_name, version="2")
Poznámka:
Machine Learning nepodporuje odstranění celého kontejneru modelu. Chcete-li tuto úlohu dosáhnout, odstraňte všechny verze modelu pro daný model.
Kontrola podporovaných funkcí pro správu modelů
Klient MLflow zveřejňuje několik metod pro načítání a správu modelů. Následující tabulka uvádí metody aktuálně podporované v MLflow při připojení ke službě Azure Machine Learning. Tabulka také porovnává MLflow s dalšími možnostmi správy modelů ve službě Azure Machine Learning.
Popis funkce |
Pouze MLflow | Machine Learning s MLflow | Machine Learning CLI v2 | Machine Learning Studio |
---|---|---|---|---|
Registrace modelů ve formátu MLflow | ✓ | ✓ | ✓ | ✓ |
Registrace modelů ve formátu MLflow | ✓ | ✓ | ||
Registrace modelů z výstupů nebo artefaktů spuštění | ✓ | – 1 | – 2 | ✓ |
Registrace modelů z výstupů nebo artefaktů spuštění v jiném serveru nebo pracovním prostoru pro sledování | ✓ | – 5 | – 5 | |
Modely zaregistrované pro vyhledávání a seznam | ✓ | ✓ | ✓ | ✓ |
Načítání podrobností o verzích registrovaného modelu | ✓ | ✓ | ✓ | ✓ |
Upravit popis verzí zaregistrovaného modelu | ✓ | ✓ | ✓ | ✓ |
Úprava značek verzí zaregistrovaného modelu | ✓ | ✓ | ✓ | ✓ |
Přejmenování registrovaných modelů | ✓ | 3 | 3 | 3 |
Odstranění registrovaného modelu (kontejneru) | ✓ | 3 | 3 | 3 |
Odstranění verze registrovaného modelu | ✓ | ✓ | ✓ | ✓ |
Správa fází modelu MLflow | ✓ | ✓ | ||
Vyhledávání registrovaných modelů podle názvu | ✓ | ✓ | ✓ | – 4 |
Vyhledávání registrovaných modelů pomocí porovnávačů LIKE řetězců a ILIKE |
✓ | – 4 | ||
Vyhledávání registrovaných modelů podle značky | – 4 | |||
Podpora organizačních registrů | ✓ | ✓ |
Poznámky pod čarou tabulky:
- 1 Použijte identifikátory URI (Uniform Resource Identifier) s formátem
runs:/<ruin-id>/<path>
. - 2 Použijte identifikátory URI ve formátu
azureml://jobs/<job-id>/outputs/artifacts/<path>
. - 3 Zaregistrované modely jsou neměnné objekty ve službě Azure Machine Learning.
- 4 Použijte vyhledávací pole v studio Azure Machine Learning. Podporuje se částečné párování.
- 5 Pomocí registrů můžete přesouvat modely mezi různými pracovními prostory a zachovat rodokmen.