Freigeben über


Übersicht über den Featurespeicher und Glossar

Auf dieser Seite wird erläutert, wie der Databricks Feature Store funktioniert und wichtige Begriffe definiert.

Wie funktioniert Feature Engineering für Databricks?

Der typische Machine Learning-Workflow mit Feature Engineering auf Databricks folgt diesem Pfad:

  1. Schreiben Sie Code, um Rohdaten in Features zu konvertieren und ein Spark DataFrame mit den gewünschten Features zu erstellen.

  2. Erstellen Sie eine Delta-Tabelle im Unity-Katalog mit einem Primärschlüssel.

  3. Trainieren und Protokollieren eines Modells mithilfe der Featuretabelle. In diesem Fall speichert das Modell die Spezifikationen von Features, die für schulungen verwendet werden. Wenn das Modell für die Ableitung verwendet wird, verknüpft es automatisch Features aus den entsprechenden Featuretabellen.

  4. Registrieren Sie das Modell in der Modellregistrierung.

    Sie können jetzt das Modell verwenden, um Vorhersagen für neue Daten zu erstellen. Bei Batch-Anwendungsfällen ruft das Modell automatisch die features ab, die es aus dem Featurespeicher benötigt.

  5. Veröffentlichen Sie die Features für Echtzeitanwendungsfälle in einem Onlinefeaturespeicher.

  6. Zum Rückschluss verwendet das Modell, das den Endpunkt bedient, automatisch die Entitäts-IDs in den Anforderungsdaten, um vorab berechnete Features aus dem Onlinespeicher nachzuschlagen, um das ML-Modell zu ermitteln. Der Endpunkt verwendet Unity-Katalog, um die Linien von dem bereitgestellten Modell in die Features aufzulösen, die zum Trainieren dieses Modells verwendet werden, und verfolgt die Linien zum Onlinefeaturespeicher für den Echtzeitzugriff.

Featurespeicherfluss für Machine Learning-Modelle, die bereitgestellt werden.

Featurespeicher-Glossar

Featurespeicher

Ein Featurespeicher ist ein zentrales Repository, mit dem Data Scientists Features finden und freigeben können. Durch die Verwendung eines Featurespeichers wird außerdem sichergestellt, dass der zum Berechnen von Featurewerten verwendete Code während der Modellschulung und beim Verwenden des Modells für die Ableitung gleich ist. Wie der Featurespeicher auf Databricks funktioniert, hängt davon ab, ob Ihr Arbeitsbereich für Unity-Katalog aktiviert ist oder nicht.

  • In Arbeitsbereichen, die für Unity-Katalog aktiviert sind, können Sie eine beliebige Delta-Tabelle im Unity-Katalog verwenden, die eine Primärschlüsseleinschränkung als Featuretabelle enthält.
  • Arbeitsbereiche, die vor dem 19. August 2024, 19:00 Uhr (UTC) erstellt wurden und nicht für den Unity-Katalog aktiviert sind, haben Zugriff auf den älteren Workspace Feature Store.

Beim maschinellen Lernen werden vorhandene Daten verwendet, um ein Modell zur Vorhersage künftiger Ergebnisse zu erstellen. In fast allen Fällen müssen die Rohdaten vorverarbeitet und umgewandelt werden, bevor sie für die Erstellung eines Modells verwendet werden können. Dieser Prozess wird als Feature Engineering bezeichnet, und die Ergebnisse dieses Prozesses werden als Features bezeichnet – die Bausteine des Modells.

Die Entwicklung von Features ist komplex und zeitaufwendig. Erschwerend kommt hinzu, dass beim maschinellen Lernen Featureberechnungen für das Modelltraining durchgeführt werden müssen. Diese Berechnungen müssen erneut durchgeführt werden, wenn das Modell für Vorhersagen verwendet wird. Diese Implementierungen werden möglicherweise nicht vom selben Team oder unter Verwendung derselben Codeumgebung durchgeführt, was zu Verzögerungen und Fehlern führen kann. Außerdem haben verschiedene Teams in einer Organisation oft ähnliche Featureanforderungen, wissen aber möglicherweise nicht, welche Arbeiten andere Teams bereits durchgeführt haben. Ein Featurespeicher soll diese Probleme beheben.

Featuretabellen

Features sind als Featuretabellen organisiert. Jede Tabelle muss über einen Primärschlüssel verfügen und von einer Delta-Tabelle und zusätzlichen Metadaten unterstützt werden. Die Metadaten von Featuretabellen verfolgen die Datenquellen, aus denen eine Tabelle generiert wurde, sowie die Notebooks und Jobs, die die Tabelle erstellt oder in sie geschrieben haben.

Bei Databricks Runtime 13.3 LTS und höher können Sie jede Delta-Tabelle in Unity Catalog mit einem Primärschlüssel als Featuretabelle verwenden, wenn Ihr Arbeitsbereich für Unity Catalog aktiviert ist. Siehe "Arbeiten mit Featuretabellen" im Unity-Katalog. Featuretabellen, die im lokalen Arbeitsbereichs-Feature Store gespeichert sind, werden als „Arbeitsbereichsfeaturetabellen“ bezeichnet. Siehe „Arbeiten mit Featuretabellen“ im Feature Store im Arbeitsbereich (Legacy).

Features in einer Featuretabelle werden in der Regel mit einer gemeinsamen Berechnungsfunktion berechnet und aktualisiert.

Sie können eine Featuretabelle in einem Onlinespeicher veröffentlichen, um Modellrückschlüsse in Echtzeit zu erhalten.

FeatureLookup

Viele verschiedene Modelle können Features aus einer bestimmten Featuretabelle verwenden, und nicht alle Modelle benötigen jedes Feature. Um ein Modell mithilfe von Features zu trainieren, erstellen Sie eine FeatureLookup für jede Featuretabelle. Die FeatureLookup gibt an, welche Features aus der Tabelle verwendet werden sollen, und definiert außerdem die Schlüssel, die zum Verknüpfen der Featuretabelle mit den an create_training_set übergebenen Bezeichnungsdaten verwendet werden sollen.

Das Diagramm veranschaulicht, wie ein FeatureLookup-Objekt funktioniert. In diesem Beispiel möchten Sie ein Modell mithilfe von Features aus zwei Featuretabellen, customer_features und product_features, trainieren. Sie erstellen eine FeatureLookup für jede Featuretabelle, bestimmen den Namen der Tabelle, der Features (Spalten), die aus der Tabelle ausgewählt werden sollen, und des Nachschlageschlüssels, der verwendet werden soll, wenn Sie die Features zum Erstellen eines Schulungsdatensatzes verbinden.

Sie rufen dann create_training_set auf, wie im Diagramm dargestellt. Dieser API-Aufruf gibt den DataFrame an, der die rohen Schulungsdaten (label_df), die zu verwendende FeatureLookups und label, die eine Spalte mit der Grundwahrheit enthält, beinhaltet. Die Schulungsdaten müssen Spalten enthalten, die den einzelnen Primärschlüsseln der Featuretabellen entsprechen. Die Daten in den Featuretabellen werden entsprechend diesen Schlüsseln mit dem Eingabe-DataFrame verknüpft. Das Ergebnis wird im Diagramm als „Schulungsdatensatz“ angezeigt.

FeatureLookup-Diagramm

FeatureFunction

Ein Feature hängt möglicherweise von Informationen ab, die nur zum Zeitpunkt des Rückschließens verfügbar sind. Sie können eine FeatureFunction angeben, die Echtzeiteingaben mit Featurewerten kombiniert, um aktuelle Featurewerte zu berechnen. Ein Beispiel ist im Diagramm dargestellt. Ausführliche Informationen finden Sie unter On-Demand-Featureberechnung.

FeatureFunction-Diagramm

Trainingssatz

Ein Trainingssatz besteht aus einer Liste von Features und einem DataFrame, der Trainingsrohdaten, Labels und Primärschlüssel zum Auffinden von Features enthält. Sie erstellen den Trainingssatz, indem Sie die zu extrahierenden Features aus dem Featurespeicher angeben, und stellen den Trainingssatz während des Modelltrainings als Eingabe bereit.

Unter Erstellen eines Trainingsdatensatzes finden Sie ein Beispiel dafür, wie Sie einen Trainingsdatensatz erstellen und verwenden können.

Wenn Sie ein Modell mit Feature Engineering im Unity-Katalog trainieren und protokollieren, können Sie die Modelllinie im Katalog-Explorer anzeigen. Tabellen und Funktionen, die zum Erstellen des Modells verwendet wurden, werden automatisch nachverfolgt und angezeigt. Siehe Datenherkunft des Featurespeichers anzeigen.

FeatureSpec

A FeatureSpec ist eine Unity-Katalogentität, die einen wiederverwendbaren Satz von Features und Funktionen für die Bereitstellung definiert. FeatureSpecs kombinieren FeatureLookups aus Featuretabellen und FeatureFunctions in einer einzigen logischen Einheit, die in Modellschulungen verwendet oder mithilfe von Feature-Serving-Endpunkten bereitgestellt werden kann.

FeatureSpecs werden vom Unity-Katalog gespeichert und verwaltet, wobei die vollständige Lineage-Nachverfolgung zu ihren bestandteilen Offlinefeaturetabellen und -funktionen erfolgt. Dies ermöglicht Governance, Auffindbarkeit und Wiederverwendung in verschiedenen Modellen und Anwendungen.

Sie können eine FeatureSpec auf folgende Weise verwenden:

  • Erstellen Sie einen Feature Serving-Endpunkt mit der Python-API oder REST-API. Siehe Feature Serving-Endpunkte oder direkte Bereitstellung mithilfe der Model Serving UI. Aktivieren Sie für Hochleistungsanwendungen die Routenoptimierung.
  • Verwenden Sie die Modellschulung, indem Sie auf das FeatureSpec In create_training_setverweisen.

Eine FeatureSpec Liste verweist immer auf die Offlinefeaturetabellen, aber sie müssen für Szenarien in Echtzeit in einem Onlinespeicher veröffentlicht werden.

Zeitreihen-Featuretabellen (Point-in-Time-Suchen)

In die Daten, die zum Trainieren eines Modells verwendet werden, sind häufig Zeitabhängigkeiten integriert. Beim Erstellen des Modells müssen Sie nur Featurewerte bis zum Zeitpunkt des beobachteten Zielwerts berücksichtigen. Wenn Sie Merkmale basierend auf Daten trainieren, die nach dem Zeitstempel des Zielwerts gemessen wurden, kann die Leistungsfähigkeit des Modells beeinträchtigt werden.

Featuretabellen für Zeitreihen enthalten eine Zeitstempelspalte, die sicherstellt, dass jede Zeile im Trainingsdatensatz die neuesten bekannten Featurewerte zum Zeitpunkt des Zeitstempels der Zeile repräsentiert. Sie sollten die Verwendung von Zeitreihen-Featuretabellen immer dann in Betracht ziehen, wenn sich Ihre Featurewerte im Laufe der Zeit ändern, z. B. bei Zeitreihendaten, ereignisbasierten Daten oder zeitaggregierten Daten.

Wenn Sie eine Featuretabelle für Zeitreihen erstellen, spezifizieren Sie zeitbezogene Spalten innerhalb Ihrer Primärschlüssel als Zeitreihenspalten, indem Sie das timeseries_columns Argument (für Feature Engineering im Unity-Katalog) oder das timestamp_keys Argument (für den Workspace-Feature-Speicher) verwenden. Dadurch werden Point-in-Time-Lookups aktiviert, wenn Sie create_training_set oder score_batch verwenden. Das System führt eine „Mit Stand vom“-Zeitstempelverknüpfung mithilfe des von Ihnen angegebenen timestamp_lookup_key aus.

Wenn Sie das timeseries_columns Argument oder das timestamp_keys Argument nicht verwenden und nur eine Zeitreihenspalte als Primärschlüsselspalte festlegen, wendet der Feature Store keine Zeitpunktlogik auf die Zeitreihenspalte während der Verknüpfungen an. Stattdessen werden nur Zeilen mit einer exakten Zeitübereinstimmung abgeglichen, anstatt alle vor dem Zeitstempel liegenden Zeilen abzugleichen.

Offlinespeicher

Der Offlinefeaturespeicher wird für die Featureermittlung, das Modelltraining und den Batchrückschluss verwendet. Er enthält Featuretabellen, die als Delta-Tabellen materialisiert sind.

Online-Feature-Store

Der Databricks Online Feature Store ist eine leistungsstarke, skalierbare Lösung zum Bereitstellen von Featuredaten für Onlineanwendungen und Echtzeit-Machine Learning-Modelle.

Unterstützt von Databricks Lakebase bietet es Zugriff auf Feature-Daten mit geringer Latenz in großem Maßstab und sorgt gleichzeitig für die Beibehaltung von Governance, Abstammung und Konsistenz mit Ihren Offline-Feature-Tabellen.

Sie können Online-Stores auf der serverlosen Lakebase-Plattform bereitstellen. MIT APIs können Sie Instanzen und Read-Replicas verwalten und Instanzen nach Bedarf skalieren. Sie können praktische APIs verwenden, um Unity Catalog-Tabellen in Online-Stores zu veröffentlichen. Diese Tabellen sind auch Entitäten des Unity-Katalogs, die die Abstammung der Quelltabellen nativ nachverfolgen. Databricks unterstützt auch Online-Stores von Drittanbietern.

Streamen

Zusätzlich zu Batchschreibvorgängen unterstützt Databricks-Featurespeicher auch Streaming. Sie können Featurewerte aus einer Streamingquelle in eine Featuretabelle schreiben, und der Featureberechnungscode kann strukturiertes Streaming verwenden, um Rohdatenströme in Features umzuwandeln.

Sie können Featuretabellen auch aus dem Offlinespeicher in einen Onlinespeicher streamen.

Modellpaketerstellung

Wenn Sie ein Machine Learning-Modell mit Feature Engineering im Unity Catalog oder Workspace Feature Store trainieren und mit der Methode des log_model() Clients protokollieren, behält das Modell Verweise auf diese Features bei. Zum Zeitpunkt des Rückschlusses kann das Modell optional automatisch Featurewerte abrufen. Der Aufrufende muss nur den Primärschlüssel der im Modell verwendeten Features angeben (z. B. user_id), und das Modell ruft alle erforderlichen Featurewerte ab.

Bei Batchrückschlüssen werden Featurewerte aus dem Offlinespeicher abgerufen und vor der Bewertung mit neuen Daten verknüpft. Bei Echtzeitrückschlüssen werden Featurewerte aus dem Onlinespeicher abgerufen.

Um ein Modell mit Featuremetadaten zu packen, verwenden Sie FeatureEngineeringClient.log_model (für Feature Engineering im Unity Catalog) oder FeatureStoreClient.log_model (für einen Feature Store im Arbeitsbereich).