Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här sidan förklarar hur Databricks Feature Store fungerar och definierar viktiga termer.
Hur fungerar funktionsutveckling på Databricks?
Det typiska arbetsflödet för maskininlärning med funktionsutveckling i Databricks följer den här vägen:
Skriv kod för att konvertera rådata till funktioner och skapa en Spark DataFrame som innehåller önskade funktioner.
Skapa en Delta-tabell i Unity Catalog som har en primärnyckel.
Träna och logga en modell med hjälp av funktionstabellen. När du gör detta lagrar modellen specifikationerna för funktioner som används för träning. När modellen används för slutsatsdragning ansluter den automatiskt funktioner från lämpliga funktionstabeller.
Registrera modellen i modellregistret.
Nu kan du använda modellen för att göra förutsägelser om nya data. För batchanvändningsfall hämtar modellen automatiskt de funktioner den behöver från Funktionsarkivet.
För användningsfall i realtid kan du publicera funktionerna i en onlinefunktionsbutik.
Vid slutsatsdragningen använder modellen som betjänar slutpunkten automatiskt entitets-ID:n i begärandedata för att leta upp förberäknade funktioner från onlinebutiken för att poängsätta ML-modellen. Slutpunkten använder Unity Catalog för att lösa ursprunget från den betjänade modellen till de funktioner som används för att träna den här modellen och spårar ursprung till onlinefunktionsarkivet för realtidsåtkomst.
Ordlista för funktionslager
Funktionsarkiv
Ett funktionslager är en centraliserad lagringsplats som gör det möjligt för dataexperter att hitta och dela funktioner. Om du använder ett funktionslager ser du också till att koden som används för att beräkna funktionsvärden är densamma under modellträningen och när modellen används för slutsatsdragning. Hur funktionslagret på Databricks fungerar beror på om din arbetsyta är aktiverad för Unity Catalog eller inte.
- I arbetsytor som är aktiverade för Unity Catalog kan du använda valfri Delta-tabell i Unity Catalog som innehåller en primärnyckelbegränsning som en funktionstabell.
- Arbetsytor som inte har aktiverats för Unity Catalog som skapades före den 19 augusti 2024, 16:00:00 (UTC) har åtkomst till den äldre Workspace Feature Store.
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. En egenskapsdatabank är utformad för att hantera dessa problem.
Egenskapstabeller
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 i Unity Catalog. Funktionstabeller som lagras i det lokala funktionslagret för arbetsyta kallas "arbetsytans funktionstabeller". Se Arbeta med funktionstabeller i Workspace Feature Store (äldre).
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 de 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, customer_features och product_features. Du skapar en FeatureLookup för varje funktionstabell, anger namnet på tabellen, vilka funktioner (kolumner) som ska väljas från tabellen och uppslagsnyckeln som ska användas när sammanfogningsfunktionerna för att skapa en träningsdatauppsättning.
Sedan anropar du create_training_set, som också visas i diagrammet. Det här API-anropet anger dataramen som innehåller rådata (label_df), FeatureLookups att 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 up-to-date-funktionsvärden. Ett exempel visas i diagrammet. Mer information finns i Funktionsberäkning på begäran.
Träningsuppsättning
En träningsuppsättning består av en lista över egenskaper och en DataFrame som innehåller rådata, etiketter och primärnycklar som används för att söka upp egenskaper. 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.
FeatureSpec
A FeatureSpec är en Unity Catalog-entitet som definierar en återanvändbar uppsättning funktioner för servering.
FeatureSpecs kombinera FeatureLookups från funktionstabeller och FeatureFunctions till en enda logisk enhet som kan användas i modellträning eller hanteras med hjälp av funktionsserverslutpunkter.
FeatureSpecs lagras och hanteras av Unity Catalog, med fullständig ursprungsspårning till deras ingående offlinefunktionstabeller och funktioner. Detta möjliggör styrning, identifiering och återanvändning i olika modeller och program.
Du kan använda en FeatureSpec på följande sätt:
- Skapa en funktionsserverslutpunkt med hjälp av Python API eller REST API. Se Funktionsserverslutpunkter eller distribuera direkt med hjälp av användargränssnittet för modellserver. Aktivera routningsoptimering för program med höga prestanda.
- Använd i modellträning genom att
FeatureSpecreferera till icreate_training_set.
En FeatureSpec refererar alltid till offlinefunktionstabellerna, men de måste publiceras till en onlinebutik för realtidsvisningsscenarier.
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 tidsseriekolumner med argumentet timeseries_columns (för Funktionsutveckling i Unity Catalog) eller timestamp_keys argumentet (för Funktionsarkiv för arbetsyta). Detta möjliggör tidpunktssökningar när du använder create_training_set eller score_batch. Systemet utför en as-of tidsstämpelkoppling med hjälp av den 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.
Fysisk butik
Offlinefunktionsarkivet används för funktionsidentifiering, modellträning och batchinferens. Den innehåller funktionstabeller materialiserade som Delta-tabeller.
Onlinefunktionsbutik
Databricks Online Feature Store är en högpresterande, skalbar lösning för att hantera funktionsdata till onlineprogram och maskininlärningsmodeller i realtid.
Den drivs av Databricks Lakebase och ger åtkomst med låg latens till funktionsdata på stor skala samtidigt som styrning, ursprung och samstämmighet bibehålls med dina offlinefunktionstabeller.
Du kan etablera onlinebutiker på den serverlösa Lakebase-plattformen. Med API:er kan du hantera instanser och läs-repliker samt skala instanser efter behov. Du kan använda praktiska API:er för att publicera Unity Catalog-tabeller i onlinebutiker. Dessa tabeller är också Unity Catalog-entiteter som internt spårar ursprung till källtabellerna. Databricks har också stöd för 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).