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


3. oktatóanyag: Ismétlődő materializálás engedélyezése és kötegelt következtetés futtatása

Ez az oktatóanyag-sorozat bemutatja, hogyan integrálhatók zökkenőmentesen a funkciók a gépi tanulási életciklus minden fázisában: prototípus-tervezés, betanítás és üzembe helyezés.

Az első oktatóanyag bemutatta, hogyan hozhat létre egyéni átalakításokkal egy funkciókészlet-specifikációt, majd hogyan hozhat létre betanítási adatokat, hogyan engedélyezheti a materializálást, és hogyan végezheti el a visszatöltést. A második oktatóanyag bemutatta, hogyan engedélyezheti a materializálást, és hogyan végezhet el egy visszatöltést. Azt is bemutatta, hogyan kísérletezhet a funkciókkal a modell teljesítményének javítása érdekében.

Ez az oktatóanyag a következőket ismerteti:

  • A funkciókészlet ismétlődő materializálásának transactions engedélyezése.
  • Futtasson egy kötegelt következtetési folyamatot a regisztrált modellen.

Előfeltételek

Mielőtt folytatná ezt az oktatóanyagot, mindenképpen végezze el az első és a második oktatóanyagot a sorozatban.

Beállítás

  1. Konfigurálja az Azure Machine Learning Spark-jegyzetfüzetet.

    Az oktatóanyag futtatásához létrehozhat egy új jegyzetfüzetet, és lépésről lépésre végrehajthatja az utasításokat. A meglévő 3 nevű jegyzetfüzetet is megnyithatja és futtathatja. Engedélyezze az ismétlődő materializálást, és futtassa a kötegelt következtetést. A jegyzetfüzetet és a sorozat összes jegyzetfüzetét a featurestore_sample/notebookok könyvtárában találja. Választhat sdk_only vagy sdk_and_cli. Tartsa nyitva ezt az oktatóanyagot, és tekintse meg a dokumentáció hivatkozásait és további magyarázatait.

    1. A felső navigációs számítás legördülő listájában válassza a Kiszolgáló nélküli Spark Compute lehetőséget az Azure Machine Learning Kiszolgáló nélküli Spark alatt.

    2. Konfigurálja a munkamenetet:

      1. Válassza a Munkamenet konfigurálása lehetőséget a felső állapotsoron.
      2. Válassza a Python-csomagok lapot.
      3. Válassza a Conda-fájl feltöltése lehetőséget.
      4. Válassza ki a fájlt a azureml-examples/sdk/python/featurestore-sample/project/env/online.yml helyi gépről.
      5. Ha szeretné, növelje a munkamenet időtúllépési idejét (üresjárati idő), hogy elkerülje a gyakori előfeltétel-újrafuttatásokat.
  2. Indítsa el a Spark-munkamenetet.

    # run this cell to start the spark session (any code block will start the session ). This can take around 10 mins.
    print("start spark session")
  3. Állítsa be a minták gyökérkönyvtárát.

    import os
    
    # please update the dir to ./Users/<your_user_alias> (or any custom directory you uploaded the samples to).
    # You can find the name from the directory structure in the left nav
    root_dir = "./Users/<your_user_alias>/featurestore_sample"
    
    if os.path.isdir(root_dir):
        print("The folder exists.")
    else:
        print("The folder does not exist. Please create or fix the path")
  4. A parancssori felület beállítása.

    Nem alkalmazható.


  1. Inicializálja a projekt-munkaterület CRUD (létrehozás, olvasás, frissítés és törlés) ügyfélprogramját.

    Az oktatóanyag-jegyzetfüzet erről az aktuális munkaterületről fut.

    ### Initialize the MLClient of this project workspace
    import os
    from azure.ai.ml import MLClient
    from azure.ai.ml.identity import AzureMLOnBehalfOfCredential
    
    project_ws_sub_id = os.environ["AZUREML_ARM_SUBSCRIPTION"]
    project_ws_rg = os.environ["AZUREML_ARM_RESOURCEGROUP"]
    project_ws_name = os.environ["AZUREML_ARM_WORKSPACE_NAME"]
    
    # connect to the project workspace
    ws_client = MLClient(
        AzureMLOnBehalfOfCredential(), project_ws_sub_id, project_ws_rg, project_ws_name
    )
  2. Inicializálja a funkciótároló változóit.

    Ügyeljen arra, hogy frissítse az featurestore_name értéket, hogy tükrözze az első oktatóanyagban létrehozott értéket.

    from azure.ai.ml import MLClient
    from azure.ai.ml.identity import AzureMLOnBehalfOfCredential
    
    # feature store
    featurestore_name = (
        "<FEATURESTORE_NAME>"  # use the same name from part #1 of the tutorial
    )
    featurestore_subscription_id = os.environ["AZUREML_ARM_SUBSCRIPTION"]
    featurestore_resource_group_name = os.environ["AZUREML_ARM_RESOURCEGROUP"]
    
    # feature store ml client
    fs_client = MLClient(
        AzureMLOnBehalfOfCredential(),
        featurestore_subscription_id,
        featurestore_resource_group_name,
        featurestore_name,
    )
  3. Inicializálja a szolgáltatástároló SDK-ügyfelet.

    # feature store client
    from azureml.featurestore import FeatureStoreClient
    from azure.ai.ml.identity import AzureMLOnBehalfOfCredential
    
    featurestore = FeatureStoreClient(
        credential=AzureMLOnBehalfOfCredential(),
        subscription_id=featurestore_subscription_id,
        resource_group_name=featurestore_resource_group_name,
        name=featurestore_name,
    )

Ismétlődő materializálás engedélyezése a tranzakciós szolgáltatáskészleten

A második oktatóanyagban engedélyezte a materializálást, és végrehajtotta a funkciókészleten a visszatöltést transactions . A backfill egy igény szerinti egyszeri művelet, amely kiszámítja és elhelyezi a funkcióértékeket a materializálási tárolóban.

A modell éles környezetben való következtetésének kezeléséhez érdemes lehet ismétlődő materializálási feladatokat beállítani a materializálási tároló naprakészen tartásához. Ezek a feladatok felhasználó által meghatározott ütemezések szerint futnak. Az ismétlődő feladatütemezés a következő módon működik:

  • Az intervallum- és gyakoriságértékek egy ablakot határoznak meg. A következő értékek például háromórás időszakot határoznak meg:

    • interval = 3
    • frequency = Hour
  • Az első ablak a start_time megadott RecurrenceTriggerértéknél kezdődik, és így tovább.

  • Az első ismétlődő feladatot a következő ablak elején küldi el a frissítési idő után.

  • A későbbi ismétlődő feladatok az első feladat után minden ablakban el lesznek küldve.

A korábbi oktatóanyagokban leírtak szerint az adatok materializálása (backfill or recurrent materialization) után a funkciólekérés alapértelmezés szerint a materializált adatokat használja.

from datetime import datetime
from azure.ai.ml.entities import RecurrenceTrigger

transactions_fset_config = fs_client.feature_sets.get(name="transactions", version="1")

# create a schedule that runs the materialization job every 3 hours
transactions_fset_config.materialization_settings.schedule = RecurrenceTrigger(
    interval=3, frequency="Hour", start_time=datetime(2023, 4, 15, 0, 4, 10, 0)
)

fs_poller = fs_client.feature_sets.begin_create_or_update(transactions_fset_config)

print(fs_poller.result())

(Nem kötelező) A szolgáltatáskészlet-objektum YAML-fájljának mentése

A frissített beállítások használatával mentheti a YAML-fájlt.

## uncomment and run
# transactions_fset_config.dump(root_dir + "/featurestore/featuresets/transactions/featureset_asset_offline_enabled_with_schedule.yaml")

A kötegelt következtetési folyamat futtatása

A kötegkövetkeztetés lépései a következők:

  1. Ugyanazt a beépített funkciólekérési összetevőt használja a betanítási folyamatban használt funkciók lekéréséhez (a harmadik oktatóanyagban). A folyamat betanításához egy funkciólekérési specifikációt adott meg összetevő-bemenetként. Kötegkövetkeztetés esetén a regisztrált modellt adja át bemenetként. Az összetevő a funkciólekérési specifikációt keresi a modellösszetevőben.

    Emellett a betanításhoz a megfigyelési adatoknál volt a célváltozó. A kötegelt következtetés megfigyelési adatai azonban nem rendelkeznek a célváltozóval. A funkciólekérési lépés összekapcsolja a megfigyelési adatokat a funkciókkal, és a kötegelt következtetéshez adja ki az adatokat.

  2. A folyamat az előző lépés kötegelt következtetési adatait használja, következtetést futtat a modellen, és kimenetként hozzáfűzi az előrejelzett értéket.

    Feljegyzés

    Ebben a példában kötegelt következtetéshez használ egy feladatot. Kötegelt végpontokat is használhat az Azure Machine Learningben.

    from azure.ai.ml import load_job  # will be used later
    
    # set the batch inference  pipeline path
    batch_inference_pipeline_path = (
        root_dir + "/project/fraud_model/pipelines/batch_inference_pipeline.yaml"
    )
    batch_inference_pipeline_definition = load_job(source=batch_inference_pipeline_path)
    
    # run the training pipeline
    batch_inference_pipeline_job = ws_client.jobs.create_or_update(
        batch_inference_pipeline_definition
    )
    
    # stream the run logs
    ws_client.jobs.stream(batch_inference_pipeline_job.name)

A kimeneti adatok vizsgálata kötegelt következtetéshez

Folyamatnézetben:

  1. Válassza ki inference_step a kártyán outputs .

  2. Másolja ki a Data mező értékét. Úgy néz ki, mint azureml_995abbc2-3171-461e-8214-c3c5d17ede83_output_data_data_with_prediction:1.

  3. Illessze be a Data mező értékét a következő cellába külön név- és verzióértékekkel. Az utolsó karakter a verzió, amelyet kettőspont (:kettőspont) előz meg.

  4. Jegyezze fel azt az predict_is_fraud oszlopot, amelyet a kötegkövető folyamat generált.

    A kötegkövetési folyamat (/project/fraud_mode/pipelines/batch_inference_pipeline.yaml) kimeneteiben, mivel nem adott meg vagy version nem adott name meg értékeket outputs inference_step, a rendszer létrehozott egy nem követett adategységet, amelynek a neve és 1 verzióértéke GUID. Ebben a cellában az adatútvonalat az objektumból származtathatja, majd megjeleníti.

    inf_data_output = ws_client.data.get(
        name="azureml_1c106662-aa5e-4354-b5f9-57c1b0fdb3a7_output_data_data_with_prediction",
        version="1",
    )
    inf_output_df = spark.read.parquet(inf_data_output.path + "data/*.parquet")
    display(inf_output_df.head(5))

A fölöslegessé vált elemek eltávolítása

A sorozat ötödik oktatóanyaga az erőforrások törlését ismerteti.

Következő lépések