Share via


A funkciókészlet materializálási fogalmai

A materializálás függvényértékeket számít ki a forrásadatokból. A kezdési és a befejezési időértékek egy funkcióablakot határoznak meg. A materializálási feladat ebben a funkcióablakban számítja ki a funkciókat. A materializált funkcióértékek ezután egy online vagy offline materializációs tárolóban lesznek tárolva. Az adatok materializálása után az összes funkció-lekérdezés felhasználhatja ezeket az értékeket a materializálási tárolóból.

A materializálás nélkül egy offline funkciókészlet-lekérdezés az átalakításokat menet közben alkalmazza a forrásra, hogy kiszámítsa a funkciókat, mielőtt a lekérdezés visszaadja az értékeket. Ez a folyamat jól működik a prototípus-készítés fázisában. A betanítási és következtetési műveletek esetében azonban éles környezetben a funkciókat a betanítás vagy következtetés előtt kell materializálni. A materializálás ebben a szakaszban nagyobb megbízhatóságot és rendelkezésre állást biztosít.

A funkciók materializálásának felfedezése

A Materialization-feladatok felhasználói felülete megjeleníti az adatok materializálási állapotát az offline és online materializálási tárolókban, valamint a materializálási feladatok listáját.

Screenshot showing the feature set materialization jobs user interface.

Funkcióablakban:

  • A felső idősordiagram azokat az adatintervallumokat jeleníti meg, amelyek a funkcióablakba esnek, és a materializálás állapota offline és online áruházak esetében is.
  • Az alsó feladatlista az összes olyan materializálási feladatot jeleníti meg, amely a kijelölt funkcióablakkal átfedésben lévő feldolgozási ablakokat tartalmazza.

Az adatok materializálásának állapota és az adatintervallum

Az adatintervallum egy olyan időablak, amelyben a szolgáltatáskészlet a funkcióértékeket az alábbi állapotok egyikére számítja ki:

  • Teljes (zöld) – sikeres adat-materializálás
  • Hiányos (piros) – egy vagy több megszakított vagy sikertelen materializálási feladat ehhez az adatintervallumhoz
  • Függőben (kék) – az adatintervallumhoz tartozó egy vagy több materializálási feladat folyamatban van
  • Nincs (szürke) – nincs materializálási feladat elküldve ehhez az adatintervallumhoz

Amikor a materializálási feladatok a szolgáltatáskészlethez futnak, adatintervallumokat hoznak létre vagy egyesítenek:

  • Ha két adatintervallum folyamatos az ütemterven, és ugyanazzal az adat-materializálási állapotmal rendelkeznek, egyetlen adatintervallummá válnak
  • Adatintervallumban, amikor a funkcióadatok egy része újra materializálódik, és ez a rész eltérő adatanyag-állapotot kap, az adatintervallum több adatintervallumra lesz felosztva

Amikor a felhasználók kiválasztanak egy funkcióablakot, több adatintervallumot is láthatnak abban az ablakban különböző adatanyag-megjelenítési állapotokkal. Előfordulhat, hogy több adatintervallum is megjelenik, amelyek nem láthatók az ütemtervben. A korábbi pillanatkép például 16 adatintervallumot tartalmaz az offline materializálási tárolóban lévő meghatározott funkcióablakhoz .

Egy szolgáltatáskészletnek bármikor legfeljebb 2000 adatintervalluma lehet. Ha egy szolgáltatáskészlet eléri ezt a korlátot, több materializálási feladat nem futtatható. A felhasználóknak ezután létre kell hozniuk egy új funkciókészlet-verziót, amelyen engedélyezve van a materializálás. Az új funkciókészlet verziójához az offline és az online áruházak funkcióit az alapoktól kezdve kell létrehozni.

A korlát elkerülése érdekében a felhasználóknak előre le kell futtatniuk a visszatöltési feladatokat, hogy kitöltsék az adatintervallumok közötti réseket . Ez egyesíti az adatintervallumokat, és csökkenti a teljes számot.

Adat-materializálási feladatok

Mielőtt futtatna egy adat-materializálási feladatot, engedélyezze az offline és/vagy az online adatelfedéseket a funkciókészlet szintjén.

from azure.ai.ml.entities import (
    MaterializationSettings,
    MaterializationComputeResource,
)

# Turn on both offline and online materialization on the "accounts" featureset.

accounts_fset_config = fs_client._featuresets.get(name="accounts", version="1")

accounts_fset_config.materialization_settings = MaterializationSettings(
    offline_enabled=True,
    online_enabled=True,
    resource=MaterializationComputeResource(instance_type="standard_e8s_v3"),
    spark_configuration={
        "spark.driver.cores": 4,
        "spark.driver.memory": "36g",
        "spark.executor.cores": 4,
        "spark.executor.memory": "36g",
        "spark.executor.instances": 2,
    },
    schedule=None,
)

fs_poller = fs_client.feature_sets.begin_create_or_update(accounts_fset_config)
print(fs_poller.result())

Az adatanyag-materializálási feladatokat a következőként küldheti el:

Figyelmeztetés

Az offline és/vagy online materializációban már materializált adatok már nem lesznek használhatók, ha az offline és/vagy online adat-materializálás le van tiltva a funkciókészlet szintjén. Az offline és/vagy online materializálási tároló adatanyag-állapota vissza lesz állítva a következőre None: .

A visszatöltési feladatokat a következővel küldheti el:

  • Az adatok materializálásának állapota
  • Megszakított vagy sikertelen materializálási feladat feladatazonosítója

Adattovábbítás adatanyag-feltöltési állapot szerint

A felhasználó a következőkkel küldhet visszatöltési kérelmet:

  • Az adatanyagosítás állapotértékeinek listája – Hiányos, Befejezett vagy Nincs
  • Funkcióablak (nem kötelező)
from datetime import datetime
from azure.ai.ml.entities import DataAvailabilityStatus

st = datetime(2022, 1, 1, 0, 0, 0, 0)
et = datetime(2023, 6, 30, 0, 0, 0, 0)

poller = fs_client.feature_sets.begin_backfill(
    name="transactions",
    version="1",
    feature_window_start_time=st,
    feature_window_end_time=et,
    data_status=[DataAvailabilityStatus.NONE],
)
print(poller.result().job_ids)

A visszatöltési kérelem elküldése után minden adatintervallumhoz létrejön egy új materializálási feladat, amely egyező adatanyag-állapotú (Hiányos, Befejezett vagy Nincs). Emellett a vonatkozó adatintervallumoknak a megadott funkcióablakban kell lenniük. Ha az adatelfedés állapota adatintervallumra van Pending adva, az adott időközhöz nem küld el materializálási feladatot.

A funkcióablak kezdési és befejezési ideje egyaránt választható a háttérbetöltési kérelemben:

  • Ha a funkcióablak kezdési ideje nincs megadva, a kezdési időpont az első olyan adatintervallum kezdő időpontjaként van definiálva, amely nem rendelkezik adatanyag-állapotmal None.
  • Ha a funkcióablak befejezési ideje nincs megadva, a befejezési idő annak az utolsó adatintervallumnak a befejezési idejeként van definiálva, amely nem rendelkezik adat-materializálási állapotmal None.

Megjegyzés:

Ha egy funkciókészlethez nem érkezett visszatöltési vagy ismétlődő feladat, az első backfill feladatot egy funkcióablak kezdési és befejezési időpontjával kell elküldeni.

Ez a példa az aktuális adatintervallumot és materializálási állapotértékeket tartalmaz:

Kezdési idő Befejezési idő Az adatok materializálásának állapota
2023-04-01T04:00:00.000 2023-04-02T04:00:00.000 None
2023-04-02T04:00:00.000 2023-04-03T04:00:00.000 Incomplete
2023-04-03T04:00:00.000 2023-04-04T04:00:00.000 None
2023-04-04T04:00:00.000 2023-04-05T04:00:00.000 Complete
2023-04-05T04:00:00.000 2023-04-06T04:00:00.000 None

A háttérbetöltési kérelem a következő értékeket tartalmaz:

  • Adatok materializálása data_status=[DataAvailabilityStatus.Complete, DataAvailabilityStatus.Incomplete]
  • Funkcióablak kezdete = 2023-04-02T12:00:00.000
  • Funkcióablak vége = 2023-04-04T12:00:00.000

A következő materializálási feladatokat hozza létre:

  • 1. feladat: folyamatfunkció ablaka [2023-04-02T12:00:00.000, 2023-04-03T04:00:00.000)
  • 2. feladat: folyamatfunkció ablaka [2023-04-04T04:00:00.000, 2023-04-04T12:00:00.000)

Ha mindkét feladat sikeresen befejeződött, az új adatintervallum és a materializálási állapotértékek a következővé válnak:

Kezdési idő Befejezési idő Az adatok materializálásának állapota
2023-04-01T04:00:00.000 2023-04-02T04:00:00.000 None
2023-04-02T04:00:00.000 2023-04-02T12:00:00.000 Incomplete
2023-04-02T12:00:00.000 2023-04-03T04:00:00.000 Complete
2023-04-03T04:00:00.000 2023-04-04T04:00:00.000 None
2023-04-04T04:00:00.000 2023-04-05T04:00:00.000 Complete
2023-04-05T04:00:00.000 2023-04-06T04:00:00.000 None

Egy új adatintervallum jön létre a 2023.04.02. napon, mert ennek a napnak a fele már más materializálási állapotú: Complete. Bár a 2023-04-04 nap felében egy új materializálási feladat futott, az adatintervallum nem változik (felosztás), mert a materializálás állapota nem változott.

Ha a felhasználó csak az adatok materializálásával data_status=[DataAvailabilityStatus.Complete, DataAvailabilityStatus.Incomplete]készít visszatöltési kérelmet , a funkcióablak kezdő és záró időpontja nélkül, a kérés a jelen szakaszban említett paraméterek alapértelmezett értékét használja, és létrehozza az alábbi feladatokat:

  • 1. feladat: folyamatfunkció ablaka [2023-04-02T04:00:00.000, 2023-04-03T04:00:00.000)
  • 2. feladat: folyamatfunkció ablaka [2023-04-04T04:00:00.000, 2023-04-05T04:00:00.000)

Hasonlítsa össze a legújabb kérelemfeladatok funkcióablakát és az előző példában látható kérési feladatokat.

Adat-visszatöltés feladatazonosító szerint

Feladatazonosítóval is létre lehet hozni egy visszatöltési kérelmet. Ez egy kényelmes módszer egy sikertelen vagy megszakított materializálási feladat újrapróbálkozására. Először keresse meg az újrapróbálkozandó feladat feladatazonosítóját:

  • Lépjen a Funkciókészlet Materialization-feladatok felhasználói felületére
  • Válassza ki egy adott feladat megjelenítendő nevét, amely nem sikerült állapotértékettartalmaz
  • A feladat áttekintési lapján keresse meg a megfelelő feladatazonosító-értéket a Név tulajdonság alatt, amely a következővel Featurestore-Materialization-kezdődik: .

poller = fs_client.feature_sets.begin_backfill(
    name="transactions",
    version=version,
    job_id="<JOB_ID_OF_FAILED_MATERIALIZATION_JOB>",
)
print(poller.result().job_ids)

Egy sikertelen vagy megszakított materializálási feladat feladatazonosítójával beküldhet egy feladat-kitöltési feladatot. Ebben az esetben az eredeti sikertelen vagy megszakított materializálási feladat funkcióablak-adatállapotának kell lennie Incomplete. Ha ez a feltétel nem teljesül, a visszatöltési feladat azonosító szerint felhasználói hibát eredményez. Előfordulhat például, hogy egy sikertelen materializálási feladat rendelkezik egy funkcióablak kezdési időpontjával 2023-04-01T04:00:00.000 és egy befejezési idővel 2023-04-09T04:00:00.000 . A sikertelen feladat azonosítójával elküldött visszatöltési feladat csak akkor sikeres, ha az adatok állapota mindenhol a célidőtartományban 2023-04-01T04:00:00.0002023-04-09T04:00:00.000a következő Incomplete: .

Útmutatás és ajánlott eljárások

Megfelelő source_delay és ismétlődő ütemezés beállítása

A source_delay forrásadatok tulajdonsága a fogyasztásra kész adatok beszerzési ideje és az adatlétrehozás eseményideje közötti késést jelzi. Az adott időpontban t történt esemény a forrásadattáblába t + xkerül, az adatfolyam késése miatt. Az x érték a forrás késleltetése.

Illustration that shows the source_delay concept.

A megfelelő beállítás érdekében az ismétlődő materializálási feladatütemezés késést eredményez. Az ismétlődő feladat az időablak funkcióit [schedule_trigger_time - source_delay - schedule_interval, schedule_trigger_time - source_delay) állítja elő.

materialization_settings:
  schedule:
    type: recurrence
    interval: 1
    frequency: Day
    start_time: "2023-04-15T04:00:00.000"

Ez a példa egy napi feladatot határoz meg, amely 2023. 04. 15-én 04:00-kor aktiválódik. A beállítástól függően source_delay a 2023.05.01-i feladatfuttatás különböző időablakokban hoz létre funkciókat:

  • source_delay=0 funkcióértékeket hoz létre az ablakban [2023-04-30T04:00:00.000, 2023-05-01T04:00:00.000)
  • source_delay=2hours funkcióértékeket hoz létre az ablakban [2023-04-30T02:00:00.000, 2023-05-01T02:00:00.000)
  • source_delay=4hours funkcióértékeket hoz létre az ablakban [2023-04-30T00:00:00.000, 2023-05-01T00:00:00.000)

Materialization Store frissítése

A funkciótár online vagy offline materializációs tárolójának frissítése előtt az adott funkciótároló összes funkciókészletének le kell tiltani a megfelelő offline és/vagy online materializációt. A frissítési művelet meghiúsul, ha UserErroregyes funkciókészletek materializálása engedélyezve van.

Az offline és/vagy online materializálási tárolóban lévő adatok materializálási állapota alaphelyzetbe áll, ha az offline és/vagy az online materializáció le van tiltva egy funkciókészleten. Az alaphelyzetbe állítás a materializált adatokat használhatatlanná teszi. Ha a funkciókészlet offline és/vagy online materializálása később engedélyezve van, a felhasználóknak újra el kell küldeniük a materializálási feladatokat.

Online adat bootstrap

Az online adatindítás csak akkor alkalmazható, ha az elküldött offline materializálási feladatok sikeresen befejeződtek. Ha kezdetben csak az offline materializálás lett engedélyezve egy szolgáltatáskészlethez, és az online materializálás később engedélyezve van, akkor:

  • Az online áruházban lévő adatok alapértelmezett adatelfedési állapota a következő: None

  • Online materializálási feladat elküldésekor a rendszer az offline áruházban materializálási állapotú Complete adatokat használ az online funkciók kiszámításához. Ezt online adatindításnak nevezzük. Az online adatindítás számítási költséget takarít meg, mert újra felhasználja az offline materialization tárolóban mentett, már kiszámított funkciókat. Ez a táblázat az offline és online adatállapot-értékeket összegzi olyan adatintervallumokban, amelyek online adatindítást eredményeznek:

    Kezdési idő Befejezési idő Offline adatok állapota Online adatok állapota Online adat bootstrap
    2023-04-01T04:00:00.000 2023-04-02T04:00:00.000 None None Nem
    2023-04-02T04:00:00.000 2023-04-03T04:00:00.000 Incomplete None Nem
    2023-04-03T04:00:00.000 2023-04-04T04:00:00.000 Pending None Nincs beküldve materializálási feladat
    2023-04-04T04:00:00.000 2023-04-05T04:00:00.000 Complete None Igen

A forrásadatok hibáinak és módosításainak kezelése

Egyes forgatókönyvek hiba vagy más ok miatt módosítják a forrásadatokat az adatok materializálása után. Ezekben az esetekben a funkcióadatok frissítése egy adott funkcióablakban több adatintervallumon keresztül megoldhatja a hibás vagy elavult funkcióadatokat. Küldje el a materializálási kérelmet hibás vagy elavult funkcióadatok feloldására a funkcióablakban, az adatállapotok NoneCompleteIncompleteés a .

Csak akkor küldjön materializálási kérelmet egy szolgáltatásadat-frissítéshez, ha a funkcióablak nem tartalmaz adatállapotú adatintervallumot Pending .

A rések kitöltése

A materializálási tárolóban a materializált adatoknak lehetnek rései, mert:

  • a materializálási feladat soha nem lett elküldve a funkcióablakhoz
  • A funkcióablakhoz beküldött materializálási feladatok sikertelenek, vagy megszakadtak

Ebben az esetben küldjön egy materializálási kérelmet a funkcióablakban a rések kitöltéséhez data_status=[DataAvailabilityStatus.NONE,DataAvailabilityStatus.Incomplete] . Egyetlen materializálási kérelem kitölti a funkcióablakban lévő összes rést.

További lépések