Delen via


Concepten

In deze sectie worden concepten beschreven waarmee u functietabellen in Databricks kunt gebruiken.

Functiearchief

Een functiearchief is een gecentraliseerde opslagplaats waarmee gegevenswetenschappers functies kunnen vinden en delen en er ook voor zorgt dat dezelfde code wordt gebruikt voor het berekenen van de functiewaarden voor modeltraining en deductie. De implementatie van een functiearchief in Databricks is afhankelijk van of uw werkruimte is ingeschakeld voor Unity Catalog of niet. In werkruimten die zijn ingeschakeld voor Unity Catalog, fungeert elke Delta-tabel als een functietabel en fungeert Unity Catalog als een functiearchief. Er is geen afzonderlijke stap nodig om een tabel als functietabel te registreren. Werkruimten die niet zijn ingeschakeld voor Unity Catalog, hebben toegang tot de werkruimtefunctieopslag.

Machine learning maakt gebruik van bestaande gegevens om een model te bouwen om toekomstige resultaten te voorspellen. In bijna alle gevallen vereisen de onbewerkte gegevens voorverwerking en transformatie voordat ze kunnen worden gebruikt om een model te bouwen. Dit proces wordt functie-engineering genoemd en de uitvoer van dit proces worden functies genoemd: de bouwstenen van het model.

Het ontwikkelen van functies is complex en tijdrovend. Een extra complicatie is dat voor machine learning functieberekeningen moeten worden uitgevoerd voor modeltraining en vervolgens opnieuw wanneer het model wordt gebruikt om voorspellingen te doen. Deze implementaties worden mogelijk niet uitgevoerd door hetzelfde team of door dezelfde codeomgeving te gebruiken, wat kan leiden tot vertragingen en fouten. Bovendien hebben verschillende teams in een organisatie vaak vergelijkbare functiebehoeften, maar zijn ze mogelijk niet op de hoogte van het werk dat andere teams hebben gedaan. Een functiearchief is ontworpen om deze problemen op te lossen.

Functietabellen

Functies zijn ingedeeld als functietabellen. Elke tabel moet een primaire sleutel hebben en wordt ondersteund door een Delta-tabel en aanvullende metagegevens. Metagegevens van functietabellen volgen de gegevensbronnen waaruit een tabel is gegenereerd en de notebooks en taken die zijn gemaakt of geschreven naar de tabel.

Als uw werkruimte is ingeschakeld voor Unity Catalog, kunt u met Databricks Runtime 13.3 LTS en hoger elke Delta-tabel in Unity Catalog gebruiken met een primaire sleutel als functietabel. Zie Werken met functietabellen. Functietabellen die zijn opgeslagen in de lokale werkruimtefunctieopslag, worden 'Werkruimtefunctietabellen' genoemd. Zie Werken met functietabellen in het werkruimte-functiearchief.

Functies in een functietabel worden doorgaans berekend en bijgewerkt met behulp van een algemene rekenfunctie.

U kunt een functietabel publiceren naar een online winkel voor realtime modeldeductie.

FeatureLookup

Veel verschillende modellen kunnen gebruikmaken van functies uit een bepaalde functietabel en niet alle modellen hebben elke functie nodig. Als u een model wilt trainen met behulp van functies, maakt u een FeatureLookup voor elke functietabel. De FeatureLookup geeft aan welke functies uit de tabel moeten worden gebruikt en definieert ook de sleutels die moeten worden gebruikt om de functietabel te koppelen aan de labelgegevens die worden doorgegeven aan create_training_set.

Het diagram illustreert hoe een FeatureLookup werkt. In dit voorbeeld wilt u een model trainen met behulp van functies uit twee functietabellen en customer_features product_features. U maakt een FeatureLookup voor elke functietabel, waarbij u de naam van de tabel, de functies (kolommen) opgeeft die u in de tabel wilt selecteren en de opzoeksleutel die moet worden gebruikt wanneer de samenvoegfuncties een trainingsgegevensset maken.

Vervolgens roept create_training_setu aan, ook weergegeven in het diagram. Deze API-aanroep geeft het DataFrame op dat de onbewerkte trainingsgegevens (label_df), het FeatureLookups te gebruiken en labeleen kolom bevat die de grondwaar bevat. De trainingsgegevens moeten kolommen bevatten die overeenkomen met elk van de primaire sleutels van de functietabellen. De gegevens in de functietabellen worden gekoppeld aan het dataframe voor invoer op basis van deze sleutels. Het resultaat wordt weergegeven in het diagram als de trainingsgegevensset.

FeatureLookup-diagram

FeatureFunction

Een functie kan afhankelijk zijn van informatie die alleen beschikbaar is op het moment van deductie. U kunt een FeatureFunction waarde opgeven die realtime-invoer combineert met functiewaarden om up-to-date functiewaarden te berekenen. Er wordt een voorbeeld weergegeven in het diagram. Zie Compute-functies op aanvraag met behulp van door de gebruiker gedefinieerde Python-functies voor meer informatie.

FeatureFunction-diagram

Trainingsset

Een trainingsset bestaat uit een lijst met functies en een DataFrame met onbewerkte trainingsgegevens, labels en primaire sleutels waarmee u functies kunt opzoeken. U maakt de trainingsset door functies op te geven die moeten worden geëxtraheerd uit de Feature Store en de trainingsset op te geven als invoer tijdens de modeltraining.

Zie Een trainingsgegevensset maken voor een voorbeeld van het maken en gebruiken van een trainingsset.

Wanneer u een model traint en aanmeldt met behulp van Functie-engineering in Unity Catalog, kunt u de herkomst van het model bekijken in Catalog Explorer. Tabellen en functies die zijn gebruikt om het model te maken, worden automatisch bijgehouden en weergegeven. Zie Functiebeheer en herkomst.

Tijdreeksfunctietabellen (zoekacties naar een bepaald tijdstip)

De gegevens die worden gebruikt om een model te trainen, hebben vaak tijdafhankelijkheden ingebouwd. Wanneer u het model bouwt, moet u alleen functiewaarden overwegen tot de tijd van de waargenomen doelwaarde. Als u traint op functies op basis van gegevens die zijn gemeten na de tijdstempel van de doelwaarde, kunnen de prestaties van het model lijden.

Tijdreeksfunctietabellen bevatten een tijdstempelkolom die ervoor zorgt dat elke rij in de trainingsgegevensset de meest recente bekende functiewaarden vertegenwoordigt vanaf de tijdstempel van de rij. U moet functietabellen van tijdreeksen gebruiken wanneer functiewaarden in de loop van de tijd veranderen, bijvoorbeeld met tijdreeksgegevens, gebeurtenisgegevens of tijdgeaggregateerde gegevens.

Wanneer u een functietabel voor tijdreeksen maakt, geeft u tijdgerelateerde kolommen op in uw primaire sleutels om tijdreekskolommen te zijn met behulp van het timeseries_columns argument (voor Functie-engineering in Unity Catalog) of het timestamp_keys argument (voor werkruimtefunctiearchief). Hiermee schakelt u opzoekacties naar een bepaald tijdstip in wanneer u deze gebruikt create_training_set of score_batch. Het systeem voert een tijdstempeldeelname uit met behulp van de timestamp_lookup_key opgegeven tijdstempel.

Als u het timeseries_columns argument of het timestamp_keys argument niet gebruikt en alleen een tijdreekskolom als primaire-sleutelkolom aanwijst, past Feature Store geen point-in-time-logica toe op de tijdreekskolom tijdens joins. In plaats daarvan komt deze overeen met alleen rijen met een exacte tijdovereenkomst in plaats van alle rijen vóór de tijdstempel te vergelijken.

Offlinestore

Het offlinefunctiearchief wordt gebruikt voor functiedetectie, modeltraining en batchdeductie. Het bevat functietabellen die zijn gerealiseerd als Delta-tabellen.

Online winkel

Een online winkel is een database met lage latentie die wordt gebruikt voor realtime modeldeductie. Zie online winkels van derden voor een lijst met online winkels die door Azure Databricks worden ondersteund.

Streaming

Naast batch-schrijfbewerkingen biedt Databricks Feature Store ondersteuning voor streaming. U kunt functiewaarden schrijven naar een functietabel vanuit een streamingbron en functieberekeningscode kan gebruikmaken van Structured Streaming om onbewerkte gegevensstromen te transformeren in functies.

U kunt ook functietabellen uit de offlinestore streamen naar een online winkel.

Modelverpakking

Wanneer u een machine learning-model traint met behulp van Functie-engineering in Unity Catalog of Workspace Feature Store en dit met behulp van de methode van log_model() de client aanmeldt, behoudt het model verwijzingen naar deze functies. Tijdens deductietijd kan het model optioneel functiewaarden automatisch ophalen. De aanroeper hoeft alleen de primaire sleutel op te geven van de functies die in het model worden gebruikt (bijvoorbeeld user_id), en het model haalt alle vereiste functiewaarden op.

In batchdeductie worden functiewaarden opgehaald uit het offlinearchief en gekoppeld aan nieuwe gegevens voordat ze worden scoren. In realtime deductie worden functiewaarden opgehaald uit de online winkel.

Als u een model met functiemetagegevens wilt verpakken, gebruikt FeatureEngineeringClient.log_model u (voor Functie-engineering in Unity Catalog) of FeatureStoreClient.log_model (voor werkruimtefunctiearchief).