Begrepp
I det här avsnittet beskrivs begrepp som hjälper dig att använda funktionstabeller i Databricks.
Funktionsarkiv
Ett funktionslager är en centraliserad lagringsplats som gör det möjligt för dataexperter att hitta och dela funktioner och även ser till att samma kod som används för att beräkna funktionsvärdena används för modellträning och slutsatsdragning. Implementeringen av ett funktionslager i Databricks beror på om din arbetsyta är aktiverad för Unity Catalog eller inte. I arbetsytor som är aktiverade för Unity Catalog fungerar alla Delta-tabeller som en funktionstabell och Unity Catalog fungerar som ett funktionsarkiv – inget separat steg krävs för att registrera en tabell som en funktionstabell. Arbetsytor som inte är aktiverade för Unity Catalog har åtkomst till arbetsytans funktionsarkiv.
Maskininlärning använder befintliga data för att skapa en modell för att förutsäga framtida resultat. I nästan alla fall kräver rådata förbearbetning och transformering innan de kan användas för att skapa en modell. Den här processen kallas funktionsteknik och utdata från den här processen kallas funktioner – byggstenarna i modellen.
Att utveckla funktioner är komplext och tidskrävande. En ytterligare komplikation är att för maskininlärning måste funktionsberäkningar göras för modellträning och sedan igen när modellen används för att göra förutsägelser. Dessa implementeringar kanske inte utförs av samma team eller med samma kodmiljö, vilket kan leda till fördröjningar och fel. Dessutom har olika team i en organisation ofta liknande funktionsbehov men kanske inte är medvetna om det arbete som andra team har gjort. Ett funktionsarkiv är utformat för att lösa dessa problem.
Funktionstabeller
Funktioner ordnas som funktionstabeller. Varje tabell måste ha en primärnyckel och backas upp av en Delta-tabell och ytterligare metadata. Metadata i funktionstabellen spårar de datakällor som en tabell genererades från och de anteckningsböcker och jobb som skapade eller skrev till tabellen.
Med Databricks Runtime 13.3 LTS och senare kan du använda alla Delta-tabeller i Unity Catalog med en primärnyckel som funktionstabell om arbetsytan är aktiverad för Unity Catalog. Se Arbeta med funktionstabeller. Funktionstabeller som lagras i det lokala funktionsarkivet för arbetsytor kallas "Funktionstabeller för arbetsyta". Se Arbeta med funktionstabeller i funktionsarkivet för arbetsytor.
Funktioner i en funktionstabell beräknas och uppdateras vanligtvis med hjälp av en vanlig beräkningsfunktion.
Du kan publicera en funktionstabell till en onlinebutik för modellinferens i realtid.
FeatureLookup
Många olika modeller kan använda funktioner från en viss funktionstabell, och alla modeller behöver inte alla funktioner. Om du vill träna en modell med hjälp av funktioner skapar du en FeatureLookup
för varje funktionstabell. FeatureLookup
Anger vilka funktioner som ska användas från tabellen och definierar även de nycklar som ska användas för att koppla funktionstabellen till etikettdata som skickas till create_training_set
.
Diagrammet visar hur en FeatureLookup
fungerar. I det här exemplet vill du träna en modell med hjälp av funktioner från två funktionstabeller och customer_features
product_features
. Du skapar en FeatureLookup
för varje funktionstabell, anger namnet på tabellen, de funktioner (kolumner) som ska väljas från tabellen och uppslagsnyckeln som ska användas när anslutningsfunktionerna för att skapa en träningsdatauppsättning.
Sedan anropar create_training_set
du , som också visas i diagrammet. Det här API-anropet anger dataramen som innehåller rådata (label_df
), att FeatureLookups
använda och label
, en kolumn som innehåller grundsanningen. Träningsdata måste innehålla kolumner som motsvarar var och en av de primära nycklarna i funktionstabellerna. Data i funktionstabellerna är anslutna till indataramen enligt dessa nycklar. Resultatet visas i diagrammet som "Träningsdatauppsättning".
FeatureFunction
En funktion kan bero på information som endast är tillgänglig vid tidpunkten för slutsatsdragningen. Du kan ange en FeatureFunction
som kombinerar realtidsindata med funktionsvärden för att beräkna aktuella funktionsvärden. Ett exempel visas i diagrammet. Mer information finns i Beräkningsfunktioner på begäran med hjälp av användardefinierade Python-funktioner.
Träningsuppsättning
En träningsuppsättning består av en lista över funktioner och en DataFrame som innehåller rådata, etiketter och primära nycklar för att söka efter funktioner. Du skapar träningsuppsättningen genom att ange funktioner som ska extraheras från Funktionsarkiv och tillhandahålla träningsuppsättningen som indata under modellträningen.
Se Skapa en träningsdatauppsättning för ett exempel på hur du skapar och använder en träningsuppsättning.
När du tränar och loggar en modell med funktionsteknik i Unity Catalog kan du visa modellens ursprung i Katalogutforskaren. Tabeller och funktioner som användes för att skapa modellen spåras och visas automatiskt. Se Funktionsstyrning och ursprung.
Funktionstabeller för tidsserier (punkt-i-tid-sökningar)
De data som används för att träna en modell har ofta inbyggda tidsberoenden. När du skapar modellen måste du endast överväga funktionsvärden fram till tidpunkten för det observerade målvärdet. Om du tränar på funktioner baserat på data som mäts efter tidsstämpeln för målvärdet kan modellens prestanda bli lidande.
Funktionstabeller för tidsserier innehåller en tidsstämpelkolumn som säkerställer att varje rad i träningsdatauppsättningen representerar de senaste kända funktionsvärdena från och med radens tidsstämpel. Du bör använda tidsseriefunktionstabeller när funktionsvärden ändras över tid, till exempel med tidsseriedata, händelsebaserade data eller tidsaggregerade data.
När du skapar en funktionstabell för tidsserier anger du tidsrelaterade kolumner i dina primära nycklar som tidseriekolumner med argumentet timeseries_columns
(för Funktionsutveckling i Unity Catalog) eller timestamp_keys
argumentet (för Arbetsytans funktionslager). Detta möjliggör sökning till tidpunkt när du använder create_training_set
eller score_batch
. Systemet utför en tidsstämpelkoppling med hjälp av det timestamp_lookup_key
du anger.
Om du inte använder timeseries_columns
argumentet eller timestamp_keys
argumentet och endast anger en tidsseriekolumn som en primär nyckelkolumn, tillämpar Funktionsarkiv inte punkt-i-tid-logik på tidsseriekolumnen under kopplingar. I stället matchar den endast rader med en exakt tidsmatchning i stället för att matcha alla rader före tidsstämpeln.
Offlinearkiv
Offlinefunktionsarkivet används för funktionsidentifiering, modellträning och batchinferens. Den innehåller funktionstabeller materialiserade som Delta-tabeller.
Onlinebutik
En onlinebutik är en databas med låg svarstid som används för modellinferens i realtid. En lista över onlinebutiker som Azure Databricks stöder finns i Onlinebutiker från tredje part.
Strömning
Förutom batchskrivningar har Databricks Feature Store stöd för strömning. Du kan skriva funktionsvärden till en funktionstabell från en strömmande källa, och funktionsberäkningskoden kan använda Structured Streaming för att omvandla rådataströmmar till funktioner.
Du kan också strömma funktionstabeller från offlinebutiken till en onlinebutik.
Modellförpackning
När du tränar en maskininlärningsmodell med funktionsutveckling i Unity Catalog eller Workspace Feature Store och loggar den med hjälp av klientens log_model()
metod behåller modellen referenser till dessa funktioner. Vid inferens kan modellen hämta funktionsvärden automatiskt. Anroparen behöver bara ange den primära nyckeln för de funktioner som används i modellen (till exempel user_id
), och modellen hämtar alla nödvändiga funktionsvärden.
I batchinferens hämtas funktionsvärden från offlinelagringsplatsen och kopplas till nya data före bedömning. I realtidsslutsats hämtas funktionsvärden från onlinebutiken.
Om du vill paketera en modell med funktionsmetadata använder du FeatureEngineeringClient.log_model
(för funktionsutveckling i Unity Catalog) eller FeatureStoreClient.log_model
(för Arbetsytans funktionslager).