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.
- Megtekintheti, hogy milyen hozzáférési engedélyekre van szüksége az MLflow-műveletek munkaterületen való végrehajtásához.
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 objektumotMlflowClient
. Ez az oktatóanyag az objektummalclient
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>/latest
a 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 Archived
helyezi á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_tag
remove_model_version_tag
kell 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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: