Megosztás a következőn keresztül:


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

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.

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.

  1. 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:

    1. Navigálás az Azure Machine Learning Studióba
    2. Kattintson a lap jobb felső sarkára –> Konfigurációs fájl letöltése.
    3. Mentse a fájlt config.json ugyanabban a könyvtárban, amelyen dolgozik.
  2. 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:

  1. 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")
    
  2. 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.

    register-mlflow-model

  3. Az Összetevők lapra kattintva megtekintheti az MLflow-modell sémájához (conda.yaml, MLmodel, model.pkl) igazodó modellfájlokat.

    modell-séma

  4. Válassza az MLmodel lehetőséget a futtatás által létrehozott MLmodel-fájl megtekintéséhez.

    MLmodel-séma

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:

  1. Az Azure Portalon válassza az Erőforráscsoportok lehetőséget a bal szélen.

    Törlés az Azure Portalon

  2. Válassza ki a listában az Ön által létrehozott erőforráscsoportot.

  3. Válassza az Erőforráscsoport törlése elemet.

  4. 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