Sdílet prostřednictvím


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 MLflow SDK a modul plug-in Azure Machine Learning azureml-mlflow pro MLflow:

    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. mlflow-skinny 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í.

  • Pracovní prostor služby Azure Machine Learning. Pokud chcete vytvořit pracovní prostor, přečtěte si kurz Vytvoření prostředků strojového učení. Zkontrolujte přístupová oprávnění, která potřebujete k provádění operací MLflow ve vašem pracovním prostoru.

  • Pokud provádíte vzdálené sledování (to znamená sledování experimentů spuštěných mimo Azure Machine Learning), nakonfigurujte MLflow tak, aby ukazoval 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_timestampnebo 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 Archivedpř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:

Azure Machine Learning nepodporuje přejmenování modelů, 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.