Ml-modellek nyomon követése az MLflow és az Azure Machine Learning használatával
A KÖVETKEZŐKRE VONATKOZIK: Python SDK azureml v1
Ebből a cikkből megtudhatja, hogyan engedélyezheti az MLflow-nyomkövetést az Azure Machine Learning csatlakoztatásához az MLflow-kísérletek háttérrendszereként.
Az MLflow egy nyílt forráskódú kódtár a gépi tanulási kísérletek életciklusának kezeléséhez. Az MLflow Tracking az MLflow egyik összetevője, amely naplózza és nyomon követi a betanítási futtatási metrikákat és a modellösszetevőket, függetlenül a kísérlet környezetétől – helyileg a számítógépen, egy távoli számítási célon, egy virtuális gépen vagy egy Azure Databricks-fürtön.
Tekintse meg az MLflow és az Azure Machine Learning összes támogatott MLflow- és Azure Machine Learning-funkcióját, beleértve az MLflow Project támogatását (előzetes verzió) és a modell üzembe helyezését.
Tipp.
Ha nyomon szeretné követni az Azure Databricksben vagy az Azure Synapse Analyticsben futó kísérleteket, tekintse meg az Azure Databricks ML-kísérletek nyomon követését az MLflow és az Azure Machine Learning használatával, illetve az Azure Synapse Analytics ML-kísérletek nyomon követését az MLflow és az Azure Machine Learning használatával.
Feljegyzés
A dokumentumban szereplő információk elsősorban a modell betanítási folyamatát monitorozni kívánó adattudósok és fejlesztők számára szólnak. Ha Ön olyan rendszergazda, aki az Azure Machine Learningből származó erőforrás-használatot és eseményeket, például kvótákat, befejezett betanítási feladatokat vagy befejezett modelltelepítéseket szeretne figyelni, tekintse meg az Azure Machine Learning monitorozását.
Előfeltételek
Telepítse az
mlflow
csomagot.- Az MLflow Skinny egy egyszerű MLflow-csomag, amely nem rendelkezik SQL Storage-, kiszolgáló-, felhasználói felület- vagy adatelemzési függőségekkel. Ez azoknak a felhasználóknak ajánlott, akiknek elsősorban a nyomkövetési és naplózási képességekre van szükségük anélkül, hogy importálják az MLflow-funkciók teljes csomagját, beleértve az üzembe helyezéseket is.
Telepítse az
azureml-mlflow
csomagot.Azure Machine Learning-munkaterület létrehozása.
- Megtudhatja, hogy milyen hozzáférési engedélyekre van szüksége az MLflow-műveletek munkaterületen való végrehajtásához.
Telepítse és állítsa be az Azure Machine Learning CLI-t (v1), és győződjön meg arról, hogy telepíti az ml-bővítményt.
Fontos
A cikkben szereplő Azure CLI-parancsok némelyike az
azure-cli-ml
Azure Machine Learning bővítményét vagy v1-et használja. A v1-bővítmény támogatása 2025. szeptember 30-án megszűnik. Addig a dátumig telepítheti és használhatja a v1-bővítményt.Javasoljuk, hogy 2025. szeptember 30-a előtt váltsa át a
ml
(vagy v2) bővítményt. További információ a v2-es bővítményről: Azure ML CLI-bővítmény és Python SDK v2.Telepítse és állítsa be a Pythonhoz készült Azure Machine Learning SDK-t.
Futtatások nyomon követése a helyi gépről vagy távoli számításból
Az MLflow és az Azure Machine Learning használatával végzett nyomon követés lehetővé teszi, hogy a helyi gépen végrehajtott naplózott metrikákat és összetevőket az Azure Machine Learning-munkaterületen tárolja.
Nyomkövetési környezet beállítása
Az Azure Machine Learning-számításon nem futó futtatás nyomon követéséhez (mostantól helyi számításnak) kell a helyi számítást az Azure Machine Learning MLflow Tracking URI-jára mutatnia.
Feljegyzés
Az Azure Compute (Azure Notebooks, Jupyter Notebooks, Azure Compute Instances vagy Compute Clusters) futtatásakor nem kell konfigurálnia a nyomkövetési URI-t. Automatikusan konfigurálva van az Ön számára.
- Az Azure Machine Learning SDK használata
- Környezeti változó használata
- Az MLflow-követési URI létrehozása
A KÖVETKEZŐKRE VONATKOZIK: Python SDK azureml v1
Az Azure Machine Learning MLflow nyomkövetési URI-t az Azure Machine Learning SDK v1 for Python használatával szerezheti be. Győződjön meg arról, hogy a használt fürtben telepítve van a kódtár azureml-sdk
. Az alábbi minta lekéri a munkaterülethez társított egyedi MLFLow nyomkövetési URI-t. Ezután a metódus set_tracking_uri()
az MLflow-követési URI-t az adott URI-ra pontokat jelölő URI-ra mutatja.
A munkaterület konfigurációs fájljának használata:
from azureml.core import Workspace import mlflow ws = Workspace.from_config() mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())
Tipp.
A munkaterület konfigurációs fájlját a következővel töltheti le:
- Navigálás az Azure Machine Learning Studióba
- Kattintson a lap jobb felső sarkára –> Konfigurációs fájl letöltése.
- Mentse a fájlt
config.json
ugyanabban a könyvtárban, amelyen dolgozik.
Az előfizetés azonosítójának, az erőforráscsoport nevének és a munkaterület nevének használata:
from azureml.core import Workspace import mlflow #Enter details of your Azure Machine Learning workspace subscription_id = '<SUBSCRIPTION_ID>' resource_group = '<RESOURCE_GROUP>' workspace_name = '<AZUREML_WORKSPACE_NAME>' ws = Workspace.get(name=workspace_name, subscription_id=subscription_id, resource_group=resource_group) mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())
Kísérlet nevének beállítása
Az összes MLflow-futtatás naplózva lesz az aktív kísérletben. Alapértelmezés szerint a rendszer naplózza a futtatásokat egy, az Ön számára automatikusan létrehozott kísérletbe Default
. A használni kívánt kísérlet konfigurálásához használja az MLflow parancsot mlflow.set_experiment()
.
experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(experiment_name)
Tipp.
Amikor feladatokat küld el az Azure Machine Learning SDK-val, a kísérlet nevét a tulajdonság experiment_name
használatával állíthatja be a küldéskor. Nem kell konfigurálnia a betanítási szkripten.
Betanítási futtatás indítása
Az MLflow-kísérlet nevének megadása után elindíthatja a betanítási futtatásokat.start_run()
Ezután aktiválhatja log_metric()
az MLflow naplózási API-t, és megkezdheti a betanítási futtatási metrikák naplózását.
import os
from random import random
with mlflow.start_run() as mlflow_run:
mlflow.log_param("hello_param", "world")
mlflow.log_metric("hello_metric", random())
os.system(f"echo 'hello world' > helloworld.txt")
mlflow.log_artifact("helloworld.txt")
A metrikák, paraméterek és összetevők futás közbeni naplózásáról az MLflow-nézetben a metrikák naplózása és megtekintése nézetben tájékozódhat.
Az Azure Machine Learningben futó futtatások nyomon követése
A KÖVETKEZŐKRE VONATKOZIK: Python SDK azureml v1
A távoli futtatások (feladatok) segítségével robusztusabb és ismétlődőbb módon taníthatja be modelljeit. Emellett nagyobb teljesítményű számításokat is használhatnak, például Machine Learning Compute-fürtöket. A különböző számítási lehetőségek megismeréséhez tekintse meg a számítási célok használata modellbetanításhoz című témakört.
A futtatások elküldésekor az Azure Machine Learning automatikusan konfigurálja az MLflow-t, hogy működjön azzal a munkaterülettel, amelyen a futtatás fut. Ez azt jelenti, hogy nincs szükség az MLflow nyomkövetési URI konfigurálására. Ezen felül a kísérletek neve automatikusan megtörténik a kísérlet beküldésének részletei alapján.
Fontos
Amikor betanítási feladatokat küld az Azure Machine Learningbe, nem kell konfigurálnia az MLflow-követési URI-t a betanítási logikán, mivel az már konfigurálva van. A kísérlet nevét sem kell konfigurálnia a betanítási rutinban.
Betanítási rutin létrehozása
Először létre kell hoznia egy src
alkönyvtárat, és létre kell hoznia egy fájlt a betanítási kóddal egy train.py
src
alkönyvtárban lévő fájlban. Az összes betanítási kód az alkönyvtárba kerül, beleértve a src
train.py
.
A betanítási kód ebből az MLflow-példából származik az Azure Machine Learning-példa adattárában.
Másolja a kódot a fájlba:
# imports
import os
import mlflow
from random import random
# define functions
def main():
mlflow.log_param("hello_param", "world")
mlflow.log_metric("hello_metric", random())
os.system(f"echo 'hello world' > helloworld.txt")
mlflow.log_artifact("helloworld.txt")
# run functions
if __name__ == "__main__":
# run main function
main()
A kísérlet konfigurálása
A kísérlet Azure Machine Learningbe való elküldéséhez a Pythont kell használnia. Jegyzetfüzetben vagy Python-fájlban konfigurálja a számítási és betanítási futtató környezetet az Environment
osztálysal.
from azureml.core import Environment
from azureml.core.conda_dependencies import CondaDependencies
env = Environment(name="mlflow-env")
# Specify conda dependencies with scikit-learn and temporary pointers to mlflow extensions
cd = CondaDependencies.create(
conda_packages=["scikit-learn", "matplotlib"],
pip_packages=["azureml-mlflow", "pandas", "numpy"]
)
env.python.conda_dependencies = cd
Ezután hozza létre ScriptRunConfig
a távoli számítást számítási célként.
from azureml.core import ScriptRunConfig
src = ScriptRunConfig(source_directory="src",
script=training_script,
compute_target="<COMPUTE_NAME>",
environment=env)
Ezzel a számítási és betanítási futtatási konfigurációval küldje el a futtatásokat a Experiment.submit()
metódussal. Ez a metódus automatikusan beállítja az MLflow-követési URI-t, és irányítja a naplózást az MLflow-ból a munkaterületre.
from azureml.core import Experiment
from azureml.core import Workspace
ws = Workspace.from_config()
experiment_name = "experiment_with_mlflow"
exp = Experiment(workspace=ws, name=experiment_name)
run = exp.submit(src)
Metrikák és összetevők megtekintése a munkaterületen
Az MLflow naplózásából származó metrikákat és összetevőket a rendszer nyomon követi a munkaterületen. Ha bármikor meg szeretné tekinteni őket, lépjen a munkaterületre, és név szerint keresse meg a kísérletet a munkaterületen az Azure Machine Learning Studióban. Vagy futtassa az alábbi kódot.
Futtassa a metrikát az MLflow get_run() használatával.
from mlflow.tracking import MlflowClient
# Use MlFlow to retrieve the run that was just completed
client = MlflowClient()
run_id = mlflow_run.info.run_id
finished_mlflow_run = MlflowClient().get_run(run_id)
metrics = finished_mlflow_run.data.metrics
tags = finished_mlflow_run.data.tags
params = finished_mlflow_run.data.params
print(metrics,tags,params)
A futtatás összetevőinek megtekintéséhez használhatja a MlFlowClient.list_artifacts()
client.list_artifacts(run_id)
Ha le szeretne tölteni egy összetevőt az aktuális könyvtárba, használhatja a MLFlowClient.download_artifacts()
client.download_artifacts(run_id, "helloworld.txt", ".")
További információ arról, hogyan kérhetők le az adatok a kísérletekből és futtatásokból az Azure Machine Learningben az MLflow nézetben Kísérletek és futtatások kezelése MLflow használatával.
Összehasonlítás és lekérdezés
Hasonlítsa össze és kérdezi le az Összes MLflow-futtatás az Azure Machine Learning-munkaterületen az alábbi kóddal. További információ az MLflow-tal futtatott lekérdezések futtatásáról.
from mlflow.entities import ViewType
all_experiments = [exp.experiment_id for exp in MlflowClient().list_experiments()]
query = "metrics.hello_metric > 0"
runs = mlflow.search_runs(experiment_ids=all_experiments, filter_string=query, run_view_type=ViewType.ALL)
runs.head(10)
Automatikus naplózás
Az Azure Machine Learning és az MLFlow használatával a felhasználók automatikusan naplózhatják a metrikákat, a modellparamétereket és a modellösszetevőket a modellek betanításakor. Számos népszerű gépi tanulási kódtár támogatott.
Az automatikus naplózás engedélyezéséhez szúrja be a következő kódot a betanítási kód előtt:
mlflow.autolog()
További információ az automatikus naplózásról az MLflow használatával.
Modellek kezelése
A modellek regisztrálása és nyomon követése az Azure Machine Learning-modellregisztrációs adatbázissal, amely támogatja az MLflow-modell beállításjegyzékét. Az Azure Machine Learning-modellek az MLflow-modell sémájával vannak összhangban, így könnyen exportálhatók és importálhatók ezek a modellek különböző munkafolyamatokban. Az MLflow-hoz kapcsolódó metaadatokat, például a futtatási azonosítót is nyomon követi a regisztrált modell a nyomon követhetőség érdekében. A felhasználók betanítási futtatásokat küldhetnek, regisztrálhatnak és helyezhetnek üzembe MLflow-futtatásokból előállított modelleket.
Ha egy lépésben szeretné üzembe helyezni és regisztrálni az éles üzemre kész modellt, olvassa el az MLflow-modellek üzembe helyezését és regisztrálását.
Ha futtatásból szeretne regisztrálni és megtekinteni egy modellt, kövesse az alábbi lépéseket:
A futtatás befejezése után hívja meg a metódust
register_model()
.# the model folder produced from a run is registered. This includes the MLmodel file, model.pkl and the conda.yaml. model_path = "model" model_uri = 'runs:/{}/{}'.format(run_id, model_path) mlflow.register_model(model_uri,"registered_model_name")
A regisztrált modell megtekintése a munkaterületen az Azure Machine Learning Studióval.
A következő példában a regisztrált modell
my-model
MLflow-nyomkövetési metaadatai vannak címkézve.Az Összetevők lapra kattintva megtekintheti az MLflow-modell sémájához (conda.yaml, MLmodel, model.pkl) igazodó modellfájlokat.
Válassza az MLmodel lehetőséget a futtatás által létrehozott MLmodel-fájl megtekintéséhez.
Az erőforrások eltávolítása
Ha nem tervezi a naplózott metrikák és összetevők használatát a munkaterületen, az egyesével történő törlésük jelenleg nem érhető el. Ehelyett törölje a tárfiókot és a munkaterületet tartalmazó erőforráscsoportot, így nem kell fizetnie:
Az Azure Portalon válassza az Erőforráscsoportok lehetőséget a bal szélen.
Válassza ki a listában az Ön által létrehozott erőforráscsoportot.
Válassza az Erőforráscsoport törlése elemet.
Adja meg az erőforráscsoport nevét. Ezután válassza a Törlés elemet.
Példajegyzetfüzetek
Az Azure Machine Learning-jegyzetfüzetekkel rendelkező MLflow bemutatja és kibővíti a cikkben bemutatott fogalmakat. Lásd még a közösségvezérelt adattárat, az AzureML-Példákat.
Következő lépések
- Modellek üzembe helyezése az MLflow használatával.
- Az éles modellek monitorozása az adateltolódás érdekében.
- Azure Databricks-futtatások nyomon követése az MLflow használatával.
- A modellek kezelése.