Share via


Modellregisztrációs adatbázisok kezelése az Azure Machine Tanulás MLflow használatával

Az Azure Machine Tanulás támogatja az MLflow-t a modellkezeléshez, amikor egy munkaterülethez csatlakozik. Ez a megközelítés kényelmes módot jelent a modell teljes életciklusának támogatására az MLFlow-ügyfelet ismerő felhasználók számára. Az alábbi cikk ismerteti a különböző képességeket, és azt, hogy hogyan hasonlít össze más lehetőségekkel.

Előfeltételek

  • Telepítse az MLflow SDK-csomagot mlflow és az Azure Machine Tanulás beépülő modult az MLflow-hozazureml-mlflow.

    pip install mlflow azureml-mlflow
    

    Tipp.

    Használhatja a mlflow-skinny csomagot, amely egy egyszerű MLflow-csomag SQL Storage, kiszolgáló, felhasználói felület vagy adatelemzési függőségek nélkül. mlflow-skinny Azoknak a felhasználóknak ajánlott, akiknek elsősorban az MLflow nyomkövetési és naplózási képességeire van szükségük anélkül, hogy importálni kellene a teljes szolgáltatáscsomagot, beleértve az üzembe helyezéseket is.

  • Egy Azure Machine Learning-munkaterület. Létrehozhat egyet a Gépi tanulási erőforrások létrehozása oktatóanyagot követve.

  • Ha távoli nyomkövetést végez (vagyis az Azure Machine Tanulás kívül futó nyomkövetési kísérleteket), az MLflow konfigurálása az Azure Machine Tanulás-munkaterület nyomon követésére mutató URI-jára mutat. További információ az MLflow munkaterülethez való csatlakoztatásáról: MLflow konfigurálása az Azure Machine Tanulás.

  • Figyelje meg, hogy a szervezeti nyilvántartások nem támogatottak az MLflow-alapú modellkezeléshez.

  • Előfordulhat, hogy egyes műveletek közvetlenül az MLflow fluent API (mlflow.<method>) használatával hajthatók végre. Előfordulhat azonban, hogy másoknak MLflow-ügyfelet kell létrehozniuk, amely lehetővé teszi az Azure Machine Tanulás az MLflow protokollban való kommunikációt. Az alábbiak szerint hozhat létre objektumot MlflowClient . Ez az oktatóanyag az objektummal client hivatkozik az ilyen MLflow-ügyfélre.

    import mlflow
    
    client = mlflow.tracking.MlflowClient()
    

Új modellek regisztrálása a beállításjegyzékben

A modellregisztrációs adatbázis kényelmes és központosított módot kínál a munkaterület modelljeinek kezelésére. Minden munkaterület saját független modellregisztrációs adatbázisával rendelkezik. Az alábbi szakasz bemutatja, hogyan regisztrálhat modelleket a beállításjegyzékben az MLflow SDK használatával.

Modellek létrehozása meglévő futtatásból

Ha MLflow-modell van naplózva egy futtatáson belül, és regisztrálni szeretné azt egy beállításjegyzékben, használja a futtatási azonosítót és a modell naplózott elérési útját. A kísérletek és futtatások MLflow-nal való kezelése című témakörben megtudhatja, hogyan kérdezheti le ezeket az információkat, ha nem rendelkezik azokkal.

mlflow.register_model(f"runs:/{run_id}/{artifact_path}", model_name)

Feljegyzés

A modellek csak abban a munkaterületen regisztrálhatók a beállításjegyzékben, ahol a futtatás nyomon lett követve. A munkaterületek közötti műveleteket az Azure Machine Tanulás jelenleg nem támogatja.

Tipp.

Javasoljuk, hogy a futtatásokból származó modelleket regisztrálja, vagy használja a metódust mlflow.<flavor>.log_model a futtatáson belülről, mivel az megtartja az objektumot létrehozó feladattól való lefutást.

Modellek létrehozása eszközökből

Ha rendelkezik MLModel MLflow-modellel rendelkező mappával, akkor közvetlenül regisztrálhatja. Nincs szükség arra, hogy a modell mindig a futtatás kontextusában legyen. Ehhez az URI-sémával file://path/to/model regisztrálhatja a helyi fájlrendszerben tárolt MLflow-modelleket. Hozzunk létre egy egyszerű modellt, Scikit-Learn és mentsük MLflow formátumban a helyi tárolóban:

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")

Tipp.

A metódus save_model() ugyanúgy működik, mint log_model()a . Miközben log_model() a modellt aktív futtatásra menti, save_model() a helyi fájlrendszert használja a modell mentéséhez.

Most már regisztrálhatja a modellt a helyi útvonalon:

import os

model_local_path = os.path.abspath("./regressor")
mlflow.register_model(f"file://{model_local_path}", "local-model-test")

Modellregisztrációs adatbázisok lekérdezése

Az MLflow SDK-val lekérdezheti és megkeresheti a beállításjegyzékben regisztrált modelleket. Az alábbi szakasz több módszert is ismertet ennek elérésére.

Az összes modell lekérdezése a beállításjegyzékben

Az MLflow-ügyféllel lekérdezheti a beállításjegyzékben szereplő összes regisztrált modellt. Az alábbi minta a modell összes nevét nyomtatja ki:

for model in client.search_registered_models():
    print(f"{model.name}")

Egy order_by adott tulajdonság( például name, version, creation_timestampés last_updated_timestamp:

client.search_registered_models(order_by=["name ASC"])

Feljegyzés

MLflow 2.0-s tanácsadás: A Mlflow (<2.0) régebbi verzióiban használja inkább a metódust MlflowClient.list_registered_models() .

A modell adott verzióinak lekérése

A search_registered_models() parancs lekéri a modellobjektumot, amely az összes modellverziót tartalmazza. Ha azonban egy adott modell utolsó regisztrált modellverzióját szeretné lekérni, a következőt használhatja get_registered_model:

client.get_registered_model(model_name)

Ha a modell egy adott verziójára van szüksége, a következőt jelezheti:

client.get_model_version(model_name, version=2)

Modellek betöltése a beállításjegyzékből

A modelleket közvetlenül a beállításjegyzékből töltheti be a naplózott modellobjektumok visszaállításához. Használja a függvényeket mlflow.<flavor>.load_model() , vagy mlflow.pyfunc.load_model() adja meg a betöltendő modell URI-ját a következő szintaxissal:

  • models:/<model-name>/latesta modell utolsó verziójának betöltéséhez.
  • models:/<model-name>/<version-number>, hogy betöltse a modell egy adott verzióját.
  • models:/<model-name>/<stage-name>, ha egy adott verziót szeretne betölteni egy adott fázisban egy modellhez. Részletekért tekintse meg a modell szakaszait .

Tipp.

Az MLflow-modellek betöltésére szolgáló munkafolyamatok megtekintése a kettő közötti mlflow.<flavor>.load_model()mlflow.pyfunc.load_model()különbség megismeréséhez.

Modellszakaszok

Az MLflow támogatja a modell szakaszait a modell életciklusának kezeléséhez. A modell verziója áttérhet az egyik fázisról a másikra. A szakaszok a modell verziójához vannak rendelve (modellek helyett), ami azt jelenti, hogy egy adott modell több verzióval is rendelkezhet a különböző szakaszokban.

Fontos

A szakaszok csak az MLflow SDK használatával érhetők el. Nem jelennek meg az Azure ML Studio portálon , és nem kérhetők le sem az Azure ML SDK, sem az Azure ML CLI vagy az Azure ML REST API használatával. Az üzembe helyezés egy adott modell fázisából való létrehozása jelenleg nem támogatott.

Modellszakaszok lekérdezése

Az MLflow-ügyfél használatával ellenőrizheti a modell összes lehetséges fázisát:

client.get_model_version_stages(model_name, version="latest")

Az egyes fázisok modellverzióját a modell beállításjegyzékből való lekérésével tekintheti meg. Az alábbi példa beolvasja a modell aktuális verzióját a fázisban Staging.

client.get_latest_versions(model_name, stages=["Staging"])

Feljegyzés

A Mlflow-ban egyszerre több verzió is lehet ugyanabban a fázisban, azonban ez a módszer a legújabb verziót (nagyobb verziót) adja vissza az összes közül.

Figyelmeztetés

A szakasznevek megkülönböztetik a kis- és nagybetűket.

Modellek áttűnése

A modell verziójának egy adott fázisra való áttűnése az MLflow-ügyféllel végezhető el.

client.transition_model_version_stage(model_name, version=3, stage="Staging")

Alapértelmezés szerint, ha az adott szakaszban létezik egy meglévő modellverzió, az ott marad. Ezért a rendszer nem cseréli le, mivel egyszerre több modell verziója is ugyanabban a fázisban lehet. Másik lehetőségként azt is jelezheti archive_existing_versions=True , hogy az MLflow a meglévő modell verzióját a fázisba Archivedhelyezi át.

client.transition_model_version_stage(
    model_name, version=3, stage="Staging", archive_existing_versions=True
)

Modellek betöltése szakaszokból

A modell egy adott fázisban közvetlenül a Pythonból tölthető be a load_model függvény és az alábbi URI formátum használatával. Figyelje meg, hogy ahhoz, hogy ez a módszer sikeres legyen, minden kódtárnak és függőségnek telepítve kell lennie a környezetben, ahol éppen dolgozik.

model = mlflow.pyfunc.load_model(f"models:/{model_name}/Staging")

Modellek szerkesztése és törlése

A regisztrált modellek szerkesztése a Mlflow-ban és az Azure ML-ben is támogatott. Van azonban néhány különbség, amit fontos megfigyelni:

Figyelmeztetés

A modellek átnevezése nem támogatott az Azure Machine Tanulás, mivel a modellobjektumok nem módosíthatók.

Modellek szerkesztése

A modell leírását és címkéjét a Mlflow használatával szerkesztheti:

client.update_model_version(model_name, version=1, description="My classifier description")

A címkék szerkesztéséhez a következő módszert set_model_version_tagremove_model_version_tagkell használnia:

client.set_model_version_tag(model_name, version="1", key="type", value="classification")

Címke eltávolítása:

client.delete_model_version_tag(model_name, version="1", key="type")

Modell verziójának törlése

A beállításjegyzék bármely modellverziója törölhető az MLflow-ügyféllel, ahogyan az az alábbi példában is látható:

client.delete_model_version(model_name, version="2")

Feljegyzés

Az Azure Machine Tanulás nem támogatja a teljes modelltároló törlését. Ugyanez eléréséhez törölnie kell az összes modellverziót egy adott modellből.

Támogatási mátrix a modellek MLflow-nal való kezeléséhez

Az MLflow-ügyfél számos módszert tesz elérhetővé a modellek lekéréséhez és kezeléséhez. Az alábbi táblázat azt mutatja be, hogy az MLflow jelenleg mely metódusokat támogatja az Azure ML-hez való csatlakozáskor. Összehasonlítja az Azure ML más modellkezelési képességeivel is.

Szolgáltatás MLflow Azure ML és MLflow Azure ML CLIv2 Azure ML Studio
Modellek regisztrálása MLflow formátumban
Nem MLflow formátumú modellek regisztrálása
Modellek regisztrálása futtatási kimenetekből/összetevőkből ✓1 ✓2
Modellek regisztrálása futtatott kimenetekből/összetevőkből egy másik követőkiszolgálón/munkaterületen ✓5 ✓5
Regisztrált modellek keresése/listázása
A regisztrált modell verzióinak adatainak lekérése
A regisztrált modell verzióleírásának szerkesztése
Regisztrált modell verziócímkék szerkesztése
Regisztrált modellek átnevezése 3 3 3
Regisztrált modell (tároló) törlése 3 3 3
Regisztrált modell verziójának törlése
MLflow-modell szakaszainak kezelése
Regisztrált modellek keresése név szerint ✓4
Regisztrált modellek keresése sztring-összehasonlítókkal LIKE és ILIKE ✓4
Regisztrált modellek keresése címkék szerint ✓4
Szervezeti nyilvántartások támogatása

Feljegyzés

  • 1 Az URI-k használata formátummal runs:/<ruin-id>/<path>.
  • 2 Az URI-k használata formátummal azureml://jobs/<job-id>/outputs/artifacts/<path>.
  • 3 A regisztrált modellek nem módosítható objektumok az Azure ML-ben.
  • 4 Keresőmező használata az Azure ML Studióban. Részleges egyezés támogatott.
  • 5 A regisztrációs adatbázisok használatával különböző munkaterületeken helyezheti át a modelleket, miközben megtartja a vonalvezetést.

Következő lépések