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
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.
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.
Konfigurálja a munkamenetet:
- Válassza a Munkamenet konfigurálása lehetőséget a felső állapotsoron.
- Válassza a Python-csomagok lapot.
- Válassza a Conda-fájl feltöltése lehetőséget.
- Válassza ki a fájlt a
azureml-examples/sdk/python/featurestore-sample/project/env/online.yml
helyi gépről. - 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.
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")
Á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")
A parancssori felület beállítása.
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 )
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, )
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
megadottRecurrenceTrigger
é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:
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.
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:
Válassza ki
inference_step
a kártyánoutputs
.Másolja ki a
Data
mező értékét. Úgy néz ki, mintazureml_995abbc2-3171-461e-8214-c3c5d17ede83_output_data_data_with_prediction:1
.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.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 adottname
meg értékeketoutputs
inference_step
, a rendszer létrehozott egy nem követett adategységet, amelynek a neve és1
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
- További információ a funkciótár fogalmairól és az kezelt funkciótár legfelső szintű entitásairól.
- Ismerje meg a kezelt funkciótár identitás- és hozzáférés-vezérlését.
- Tekintse meg a kezelt funkciótár hibaelhárítási útmutatójában.
- Tekintse meg a YAML-referenciát.