Koncepty materializace sady funkcí
Materializace vypočítá hodnoty funkcí ze zdrojových dat. Hodnoty počátečního a koncového času definují okno funkce. Úloha materializace vypočítá funkce v tomto okně funkce. Materializované hodnoty funkcí se pak ukládají do online nebo offline úložiště materializace. Po materializaci dat mohou všechny dotazy na funkce použít tyto hodnoty z úložiště materializace.
Bez materializace použije offline dotaz sady funkcí transformace na zdroj za běhu a vypočítá funkce před tím, než dotaz vrátí hodnoty. Tento proces funguje dobře ve fázi vytváření prototypů. U operací trénování a odvozování by se ale funkce v produkčním prostředí měly materializovat před trénováním nebo odvozováním. Materializace v této fázi poskytuje větší spolehlivost a dostupnost.
Zkoumání materializace funkcí
Uživatelské rozhraní úloh materializace zobrazuje stav materializace dat v offline a online úložištích materializace a seznam úloh materializace.
V okně funkce:
- Graf časových řad v horní části zobrazuje intervaly dat, které spadají do okna funkce se stavem materializace pro offline i online obchody.
- V seznamu úloh dole se zobrazí všechny úlohy materializace s okny zpracování, která se překrývají s vybraným oknem funkce.
Stav materializace dat a interval dat
Interval dat je časové okno, ve kterém sada funkcí materializuje hodnoty funkcí na jeden z těchto stavů:
- Dokončeno (zelená) – úspěšná materializace dat
- Neúplná (červená) – jedna nebo více zrušených nebo neúspěšných úloh materializace pro tento interval dat
- Čekající (modrá) – probíhá jedna nebo více úloh materializace pro tento interval dat.
- Žádná (šedá) – pro tento interval dat nebyla odeslána žádná úloha materializace
Při spouštění úloh materializace pro sadu funkcí vytvářejí nebo slučují intervaly dat:
- Když jsou na časové ose souvislé dva intervaly dat a mají stejný stav materializace dat, stanou se jedním intervalem dat.
- V datovém intervalu, když se část dat funkce znovu materializuje a tato část získá jiný stav materializace dat, tento interval dat se rozdělí do několika intervalů dat.
Když uživatelé vyberou okno funkce, můžou v tomto okně zobrazit více intervalů dat s různými stavy materializace dat. Může se zobrazit několik intervalů dat, které jsou na časové ose oddělené. Například předchozí snímek má 16 datových intervalů pro definované okno funkce v offline úložišti materializace.
V každém okamžiku může sada funkcí mít maximálně 2 000 datových intervalů. Jakmile sada funkcí dosáhne daného limitu, nebudou možné spustit žádné další úlohy materializace. Uživatelé pak musí vytvořit novou verzi sady funkcí s povolenou materializací. Pro novou verzi sady funkcí materializujte funkce v offline a online obchodech úplně od začátku.
Aby se zabránilo limitu, měli by uživatelé spouštět úlohy backfillu předem, aby vyplnili mezery v datových intervalech. Tím se sloučí intervaly dat a sníží se celkový počet.
Úlohy materializace dat
Před spuštěním úlohy materializace dat povolte offline nebo online materializace dat na úrovni sady funkcí.
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())
Úlohy materializace dat můžete odeslat jako:
- úloha backfill – ručně odeslaná dávková materializační úloha
- opakující se materializační úloha – úloha automatické materializace aktivovaná v naplánovaném intervalu.
Upozorňující
Data, která jsou už materializovaná v offline nebo online materializaci, už nebudou použitelná, pokud je na úrovni sady funkcí zakázaná offline nebo online materializace dat. Stav materializace dat v offline a/nebo online úložišti materializace bude resetovat na None
.
Úlohy backfillu můžete odesílat pomocí:
- Stav materializace dat
- ID úlohy zrušené nebo neúspěšné materializace
Obnovení dat podle stavu materializace dat
Uživatel může odeslat žádost o obnovení:
- Seznam hodnot stavu materializace dat – Neúplné, Dokončené nebo Žádné
- Okno funkce (volitelné)
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)
Po odeslání žádosti o obnovení se vytvoří nová úloha materializace pro každý interval dat, který má odpovídající stav materializace dat (Neúplné, Dokončeno nebo Žádné). Kromě toho musí příslušné intervaly dat spadat do definovaného okna funkce. Pokud je Pending
stav materializace dat pro interval dat, není pro tento interval odeslána žádná úloha materializace.
Počáteční i koncový čas okna funkce jsou v žádosti o obnovení volitelné:
- Pokud není zadaný čas spuštění okna funkce, je čas spuštění definován jako počáteční čas prvního intervalu dat, který nemá stav
None
materializace dat . - Pokud čas ukončení okna funkce není zadaný, koncový čas se definuje jako koncový čas posledního intervalu dat, který nemá stav
None
materializace dat .
Poznámka:
Pokud nebyly pro sadu funkcí odeslány žádné úlohy obnovení nebo opakované úlohy, musí být první úloha obnovení odeslána s počátečním a koncovým časem okna funkce.
Tento příklad obsahuje tyto aktuální hodnoty intervalu dat a materializace:
Počáteční čas | Koncový čas | Stav materializace dat |
---|---|---|
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 |
Tento požadavek na obnovení má tyto hodnoty:
- Materializace dat
data_status=[DataAvailabilityStatus.Complete, DataAvailabilityStatus.Incomplete]
- Začátek okna funkce =
2023-04-02T12:00:00.000
- Konec okna funkce =
2023-04-04T12:00:00.000
Vytvoří tyto úlohy materializace:
- Úloha 1: okno funkce procesu [
2023-04-02T12:00:00.000
,2023-04-03T04:00:00.000
) - Úloha 2: okno funkce procesu [
2023-04-04T04:00:00.000
,2023-04-04T12:00:00.000
)
Pokud se obě úlohy úspěšně dokončí, stane se nový interval dat a hodnoty stavu materializace:
Počáteční čas | Koncový čas | Stav materializace dat |
---|---|---|
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 |
Jeden nový interval dat je vytvořen dne 2023-04-02, protože polovina dne má nyní jiný materializační stav: Complete
. I když v polovině dne 2023-04-04-04 běžela nová úloha materializace, interval dat se nezmění (rozdělí), protože se nezměnil stav materializace.
Pokud uživatel vytvoří žádost o obnovení pouze s materializací data_status=[DataAvailabilityStatus.Complete, DataAvailabilityStatus.Incomplete]
dat bez nastavení počátečního a koncového času okna funkce, použije požadavek výchozí hodnotu těchto parametrů uvedených výše v této části a vytvoří tyto úlohy:
- Úloha 1: okno funkce procesu [
2023-04-02T04:00:00.000
,2023-04-03T04:00:00.000
) - Úloha 2: okno funkce procesu [
2023-04-04T04:00:00.000
,2023-04-05T04:00:00.000
)
Porovnejte okno funkce pro tyto nejnovější úlohy požadavků a úlohy požadavku zobrazené v předchozím příkladu.
Obnovení dat podle ID úlohy
Žádost o obnovení je také možné vytvořit s ID úlohy. Jedná se o pohodlný způsob, jak opakovat neúspěšnou nebo zrušenou úlohu materializace. Nejprve vyhledejte ID úlohy, kterou chcete zopakovat:
- Přejděte do uživatelského rozhraní materializačních úloh sady funkcí .
- Vyberte zobrazovaný název konkrétní úlohy, která má hodnotu Stavu selhání.
- Na stránce Přehled úlohy vyhledejte odpovídající hodnotu ID úlohy pod vlastností Název začíná
Featurestore-Materialization-
na .
poller = fs_client.feature_sets.begin_backfill(
name="transactions",
version=version,
job_id="<JOB_ID_OF_FAILED_MATERIALIZATION_JOB>",
)
print(poller.result().job_ids)
Úlohu backfillu můžete odeslat s ID úlohy, která selhala nebo zrušila materializaci. V tomto případě by měl být Incomplete
stav dat okna funkce pro původní neúspěšnou nebo zrušenou úlohu materializace . Pokud tato podmínka není splněná, výsledkem úlohy obnovení podle ID je chyba uživatele. Například neúspěšná úloha materializace může mít hodnotu čas 2023-04-01T04:00:00.000
spuštění okna funkce a hodnotu koncového času2023-04-09T04:00:00.000
. Úloha zpětného vyplňování odeslaná pomocí ID této neúspěšné úlohy bude úspěšná pouze v případě, že stav dat všude, v časovém rozsahu 2023-04-01T04:00:00.000
do 2023-04-09T04:00:00.000
, je Incomplete
.
Doprovodné materiály a osvědčené postupy
Nastavení správného a opakujícího source_delay
se plánu
Vlastnost source_delay
pro zdrojová data označuje zpoždění mezi časem pořízení dat připravených k využití v porovnání s časem události generování dat. Událost, která se stala v čase t
v tabulce zdrojových dat v době t + x
, kvůli latenci nadřazeného datového kanálu. Hodnota x
je zpoždění zdroje.
Pro správné nastavení představuje plán opakujících se materializačních úloh latenci. Rekurentní úloha vytváří funkce pro [schedule_trigger_time - source_delay - schedule_interval, schedule_trigger_time - source_delay)
časové období.
materialization_settings:
schedule:
type: recurrence
interval: 1
frequency: Day
start_time: "2023-04-15T04:00:00.000"
Tento příklad definuje každodenní úlohu, která se aktivuje na 4:00, počínaje 15. 4. 2023. V závislosti na source_delay
nastavení generuje úloha 1. 5. 2023 funkce v různých časových oknech:
source_delay=0
vytvoří hodnoty funkcí v okně.[2023-04-30T04:00:00.000, 2023-05-01T04:00:00.000)
source_delay=2hours
vytvoří hodnoty funkcí v okně.[2023-04-30T02:00:00.000, 2023-05-01T02:00:00.000)
source_delay=4hours
vytvoří hodnoty funkcí v okně.[2023-04-30T00:00:00.000, 2023-05-01T00:00:00.000)
Aktualizace úložiště materializace
Před aktualizací online nebo offline úložiště materializace funkcí by všechny sady funkcí v daném úložišti funkcí měly mít odpovídající offline nebo online materializaci zakázané. Operace aktualizace selže, protože UserError
pokud některé sady funkcí mají povolenou materializaci.
Stav materializace dat v offline nebo online úložišti materializace se resetuje, pokud je pro sadu funkcí zakázaná offline nebo online materializace. Reset vykreslí materializovaná data nepoužitelná. Pokud je v sadě funkcí povolená offline nebo online materializace, musí uživatelé znovu odeslat své úlohy materializace.
Online spuštění dat
Online data bootstrap je použitelná pouze v případě, že se úspěšně dokončily odeslané offline úlohy materializace. Pokud byla pro sadu funkcí původně povolena pouze offline materializace a online materializace je povolená později, pak:
Výchozí stav materializace dat v online úložišti je
None
Při odeslání online úlohy materializace se data se stavem
Complete
materializace v offline úložišti používají k výpočtu online funkcí. Tomu se říká spouštění online dat. Online spouštění dat šetří výpočetní náklady, protože opakovaně používá už vypočítané funkce uložené v offline úložišti materializace. Tato tabulka shrnuje hodnoty stavu offline a online dat v datových intervalech, které by vedlo k online spuštění dat:Počáteční čas Koncový čas Stav offline dat Stav online dat Online spuštění dat 2023-04-01T04:00:00.000
2023-04-02T04:00:00.000
None
None
No 2023-04-02T04:00:00.000
2023-04-03T04:00:00.000
Incomplete
None
Ne 2023-04-03T04:00:00.000
2023-04-04T04:00:00.000
Pending
None
Nebyla odeslána žádná úloha materializace. 2023-04-04T04:00:00.000
2023-04-05T04:00:00.000
Complete
None
Ano
Řešení chyb a úprav zdrojových dat
Některé scénáře upravují zdrojová data z důvodu chyby nebo jiných důvodů po materializaci dat. V těchto případech může aktualizace dat funkcí v určitém okně funkce v několika intervalech dat vyřešit chybná nebo zastaralá data funkcí. Odešlete žádost o materializaci pro chybné nebo zastaralé řešení dat o funkcích v okně funkce, pro stavy None
dat , Complete
a Incomplete
.
Žádost o materializaci pro aktualizaci dat funkce byste měli odeslat pouze v případě, že okno funkce neobsahuje žádný interval dat se stavem Pending
dat.
Vyplnění mezer
V úložišti materializace můžou materializovaná data obsahovat mezery, protože:
- Úloha materializace nebyla nikdy odeslána pro okno funkce.
- úlohy materializace odeslané pro okno funkce selhaly nebo byly zrušeny.
V takovém případě odešlete v okně data_status=[DataAvailabilityStatus.NONE,DataAvailabilityStatus.Incomplete]
funkce žádost o materializaci, aby se vyplnily mezery. Jeden požadavek materializace vyplní všechny mezery v okně funkce.