Utbildning
Utbildningsväg
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Den här webbläsaren stöds inte längre.
Uppgradera till Microsoft Edge och dra nytta av de senaste funktionerna och säkerhetsuppdateringarna, samt teknisk support.
Materialisering beräknar funktionsvärden från källdata. Start- och sluttidsvärden definierar ett funktionsfönster. Ett materialiseringsjobb beräknar funktioner i det här funktionsfönstret. Materialiserade funktionsvärden lagras sedan i ett materialiseringslager online eller offline. Efter datamaterialisering kan alla funktionsfrågor sedan använda dessa värden från materialiseringslagret.
Utan materialisering tillämpar en funktionsuppsättning offlinefråga transformeringarna på källan i farten för att beräkna funktionerna innan frågan returnerar värdena. Den här processen fungerar bra i prototypfasen. För utbildnings- och slutsatsdragningsåtgärder i en produktionsmiljö bör dock funktioner materialiseras före träning eller slutsatsdragning. Materialisering i det skedet ger bättre tillförlitlighet och tillgänglighet.
Användargränssnittet för materialiseringsjobb visar datamaterialiseringsstatus i materialiseringslager offline och online samt en lista över materialiseringsjobb.
I ett funktionsfönster:
Ett dataintervall är ett tidsfönster där funktionsuppsättningen materialiserar sina funktionsvärden till någon av dessa statusar:
När materialiseringsjobb körs för funktionsuppsättningen skapar eller sammanfogar de dataintervall:
När en användare väljer ett funktionsfönster kan flera dataintervall, med olika datamaterialiseringsstatusar, visas i det fönstret. Dessutom kan flera dataintervall, som är uppdelade på tidslinjen, också visas. Den tidigare ögonblicksbilden har till exempel 16 dataintervall för det definierade funktionsfönstret i materialiseringsarkivet offline.
Vid en viss tidpunkt kan en funktionsuppsättning ha högst 2 000 dataintervall. När en funktionsuppsättning når den gränsen kan inga fler materialiseringsjobb köras. Användarna måste sedan skapa en ny funktionsuppsättningsversion med materialisering aktiverad. För den nya versionen av funktionsuppsättningen materialiserar du funktionerna i offline- och onlinebutikerna från grunden.
För att undvika gränsen bör användarna köra återfyllnadsjobb i förväg för att fylla luckorna i dataintervallen. Detta sammanfogar dataintervallen och minskar det totala antalet.
Innan du kör ett datamaterialiseringsjobb aktiverar du datamaterialiseringarna offline och/eller online på funktionsuppsättningsnivå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())
Du kan skicka datamaterialiseringsjobben som:
Varning
Data som redan materialiserats i materialiseringen offline och/eller online kan inte längre användas om datamaterialisering offline och/eller online inaktiveras på funktionsuppsättningsnivå. Datamaterialiseringsstatusen i materialiseringsarkivet offline och/eller online återställs till None
.
Du kan skicka återfyllnadsjobb genom att:
Användare kan skicka en begäran om återfyllnad med:
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)
När en begäran om återfyllnad har skickats skapas ett nytt materialiseringsjobb för varje dataintervall som har matchande datamaterialiseringsstatus (Ofullständig, Slutförd eller Ingen). Dessutom måste relevanta dataintervall ligga inom det definierade funktionsfönstret. Om datamaterialiseringsstatusen är Pending
för ett dataintervall skickas inget materialiseringsjobb för det intervallet.
Både starttid och sluttid för funktionsfönstret är valfria i begäran om återfyllnad:
None
.None
.Anteckning
Om inga återfyllnads- eller återkommande jobb har skickats för en funktionsuppsättning måste det första återfyllnadsjobbet skickas med starttid och sluttid för funktionsfönstret .
Det här exemplet har dessa aktuella värden för dataintervall och materialiseringsstatus:
Starttid | Sluttid | Status för datamaterialisering |
---|---|---|
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 |
Den här begäran om återfyllnad har följande värden:
data_status=[DataAvailabilityStatus.Complete, DataAvailabilityStatus.Incomplete]
2023-04-02T12:00:00.000
2023-04-04T12:00:00.000
Det skapar dessa materialiseringsjobb:
2023-04-02T12:00:00.000
, 2023-04-03T04:00:00.000
)2023-04-04T04:00:00.000
, 2023-04-04T12:00:00.000
)Om båda jobben har slutförts blir de nya värdena för dataintervall och materialiseringsstatus:
Starttid | Sluttid | Status för datamaterialisering |
---|---|---|
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 |
Ett nytt dataintervall skapas dag 2023-04-02, eftersom hälften av den dagen nu har en annan materialiseringsstatus: Complete
. Även om ett nytt materialiseringsjobb kördes under halva dagen 2023-04-04 ändras inte dataintervallet (delas) eftersom materialiseringsstatusen inte ändrades.
Om användaren gör en återfyllnadsbegäran med endast datamaterialisering data_status=[DataAvailabilityStatus.Complete, DataAvailabilityStatus.Incomplete]
, utan att ange start- och sluttid för funktionsfönstret, använder begäran standardvärdet för de parametrar som nämns tidigare i det här avsnittet och skapar följande jobb:
2023-04-02T04:00:00.000
, 2023-04-03T04:00:00.000
)2023-04-04T04:00:00.000
, 2023-04-05T04:00:00.000
)Jämför funktionsfönstret för de senaste jobben för begäran och de begärandejobb som visas i föregående exempel.
En begäran om återfyllnad kan också skapas med ett jobb-ID. Det här är ett praktiskt sätt att försöka igen med ett misslyckat eller avbrutet materialiseringsjobb. Leta först reda på jobb-ID:t för jobbet som ska försöka igen:
Featurestore-Materialization-
.
poller = fs_client.feature_sets.begin_backfill(
name="transactions",
version=version,
job_id="<JOB_ID_OF_FAILED_MATERIALIZATION_JOB>",
)
print(poller.result().job_ids)
Du kan skicka ett återfyllnadsjobb med jobb-ID:t för ett misslyckat eller avbrutet materialiseringsjobb. I det här fallet ska funktionsfönstrets datastatus för det ursprungliga misslyckade eller avbrutna materialiseringsjobbet vara Incomplete
. Om det här villkoret inte uppfylls resulterar återfyllnadsjobbet efter ID i ett användarfel. Ett misslyckat materialiseringsjobb kan till exempel ha ett starttidsvärde 2023-04-01T04:00:00.000
för funktionsfönstret och ett sluttidsvärde2023-04-09T04:00:00.000
. Ett återfyllnadsjobb som skickas med ID:t för det här misslyckade jobbet lyckas bara om datastatusen överallt, i tidsintervallet 2023-04-01T04:00:00.000
till 2023-04-09T04:00:00.000
, är Incomplete
.
Egenskapen source_delay
för källdata anger fördröjningen mellan anskaffningstiden för förbrukningsklara data jämfört med händelsetiden för datagenerering. En händelse som inträffade vid tidpunkten t
hamnar i källdatatabellen vid den tidpunkten t + x
på grund av den överordnade datapipelinens svarstid. Värdet x
är källfördröjningen.
För korrekt konfiguration står det återkommande materialiseringsjobbschemat för svarstid. Det återkommande jobbet genererar funktioner för tidsfönstret [schedule_trigger_time - source_delay - schedule_interval, schedule_trigger_time - source_delay)
.
materialization_settings:
schedule:
type: recurrence
interval: 1
frequency: Day
start_time: "2023-04-15T04:00:00.000"
I det här exemplet definieras ett dagligt jobb som utlöses kl. 04.00, med början den 15.00.2023. Beroende på inställningen source_delay
genererar jobbkörningen för 2023-05-1-2023 funktioner i olika tidsfönster:
source_delay=0
skapar funktionsvärden i fönstret [2023-04-30T04:00:00.000, 2023-05-01T04:00:00.000)
source_delay=2hours
skapar funktionsvärden i fönstret [2023-04-30T02:00:00.000, 2023-05-01T02:00:00.000)
source_delay=4hours
skapar funktionsvärden i fönstret [2023-04-30T00:00:00.000, 2023-05-01T00:00:00.000)
Innan du uppdaterar en onlinefunktionsbutik eller ett materialiseringslager offline bör alla funktionsuppsättningar i funktionsarkivet ha motsvarande materialisering offline och/eller online inaktiverad. Uppdateringsåtgärden misslyckas som UserError
om vissa funktionsuppsättningar har materialisering aktiverat.
Materialiseringsstatusen för data i materialiseringsarkivet offline och/eller online återställs om offline- och/eller onlinematerialisering inaktiveras på en funktionsuppsättning. Återställningen återger materialiserade data som inte går att använda. Om offline- och/eller onlinematerialisering på funktionsuppsättningen aktiveras senare måste användarna skicka sina materialiseringsjobb på nytt.
Onlinedata bootstrap är endast tillämpligt om inskickade offline materialiseringsjobb har slutförts. Om endast offlinematerialisering ursprungligen aktiverades för en funktionsuppsättning, och onlinematerialisering aktiveras senare, så:
Standardstatusen för datamaterialisering för data i onlinelagret är None
När ett onlinematerialiseringsjobb skickas används data med Complete
materialiseringsstatus i offlinearkivet för att beräkna onlinefunktioner. Detta kallas för onlinedatastövlar. Online-datastövlar sparar beräkningskostnaden eftersom den återanvänder redan beräknade funktioner som sparats i materialiseringsarkivet offline Den här tabellen sammanfattar värdena för offline- och onlinedatastatus i dataintervall som skulle resultera i onlinedatastövlar:
Starttid | Sluttid | Status för offlinedata | Onlinedatastatus | Onlinedata bootstrap |
---|---|---|---|---|
2023-04-01T04:00:00.000 |
2023-04-02T04:00:00.000 |
None |
None |
Nej |
2023-04-02T04:00:00.000 |
2023-04-03T04:00:00.000 |
Incomplete |
None |
Nej |
2023-04-03T04:00:00.000 |
2023-04-04T04:00:00.000 |
Pending |
None |
Inget materialiseringsjobb har skickats |
2023-04-04T04:00:00.000 |
2023-04-05T04:00:00.000 |
Complete |
None |
Ja |
Vissa scenarier ändrar källdata på grund av ett fel eller andra orsaker efter datamaterialiseringen. I dessa fall kan en funktionsdatauppdatering, för ett specifikt funktionsfönster över flera dataintervall, lösa felaktiga eller inaktuella funktionsdata. Skicka materialiseringsbegäran för felaktig eller inaktuell funktionsdatamatchning i funktionsfönstret, för datastatusarna None
, Complete
och Incomplete
.
Du bör skicka en materialiseringsbegäran för en funktionsdatauppdatering endast när funktionsfönstret inte innehåller något dataintervall med Pending
datastatus.
I materialiseringslagret kan materialiserade data ha luckor eftersom:
I det här fallet skickar du en materialiseringsbegäran i funktionsfönstret för data_status=[DataAvailabilityStatus.NONE,DataAvailabilityStatus.Incomplete]
att fylla luckorna. En enda materialiseringsbegäran fyller alla luckor i funktionsfönstret.
Utbildning
Utbildningsväg
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Dokumentation
Begrepp för transformering av funktionsuppsättningsspecifikationer - Azure Machine Learning
Funktionsuppsättningens specifikation, omvandlingar och metodtips.
Specifikationen för funktionshämtning och hur du använder den för tränings- och slutsatsdragningsuppgifter.
Hantera åtkomst till hanterad funktionsbutik - Azure Machine Learning
Lär dig hur du får åtkomst till en Azure Machine Learning-hanterad funktionsbutik med rollbaserad åtkomstkontroll i Azure (Azure RBAC).