Présentation et glossaire de Databricks Magasin de fonctionnalités
Le Magasin de fonctionnalités Databricks centralise les fonctionnalités utilisées dans le Machine Learning afin que les mêmes calculs de fonctionnalités s'exécutent pendant l'entraînement et l'inférence du modèle. Les sections suivantes décrivent le workflow typique et définissent les termes clés.
Comment fonctionne le Magasin de fonctionnalités Databricks ?
Le workflow typique de Machine Learning utilisant l’ingénierie des fonctionnalités sur Databricks suit ce chemin :
-
Écrivez du code pour convertir les données brutes en fonctionnalités et créer un DataFrame Spark contenant les fonctionnalités souhaitées.
-
Créez une table Delta dans Unity Catalog qui possède une clé primaire.
-
Entraînez et journalisez un modèle à l’aide de la table de fonctionnalités. Lorsque vous effectuez cette opération, le modèle stocke les spécifications des fonctionnalités utilisées pour l'entraînement. Lorsque le modèle est utilisé pour l'inférence, il joint automatiquement les fonctionnalités des tables de fonctionnalités appropriées.
-
Enregistrez le modèle dans le Model Registry.
Vous pouvez maintenant utiliser le modèle pour faire des prédictions sur de nouvelles données. Pour les cas d'utilisation par batch, le modèle récupère automatiquement les fonctionnalités dont il a besoin du Magasin de fonctionnalités.
-
Pour les cas d'utilisation de service en temps réel, publiez les fonctionnalités vers un magasin de fonctionnalités en ligne.
-
Au moment de l'inférence, l'Endpoint de service de modèle utilise automatiquement les ID d'entité dans les données de requête pour rechercher les fonctionnalités pré-calculées dans le magasin en ligne afin d'évaluer le modèle ML. L'Endpoint utilise Unity Catalog pour résoudre la lignée du modèle servi aux fonctionnalités utilisées pour entraîner ce modèle, et suit la lignée vers le magasin de fonctionnalités en ligne pour un accès en temps réel.

Glossaire du Magasin de fonctionnalités
Magasin de fonctionnalités
Un magasin de fonctionnalités est un repository centralisé qui permet aux data scientists de trouver et de partager des fonctionnalités. L’utilisation d’un Magasin de fonctionnalités garantit également que le code utilisé pour compute les valeurs de fonctionnalités est le même pendant l’entraînement du modèle et lorsque le modèle est utilisé pour l’inférence. Le fonctionnement du Magasin de fonctionnalités Databricks dépend si votre Workspace est activé pour Unity Catalog ou non.
- Dans les workspaces où Unity Catalog est activé, vous pouvez utiliser n'importe quelle table Delta dans Unity Catalog qui inclut une contrainte de clé primaire comme table de fonctionnalités.
- Les Workspaces non activés pour Unity Catalog qui ont été créés avant le 19 août 2024, 16 h 00 min 00 s (UTC) ont accès à l'Magasin de fonctionnalités de Workspace hérité.
Le Machine Learning utilise les données existantes pour construire un modèle afin de prédire les résultats futurs. Dans presque tous les cas, les données brutes nécessitent un prétraitement et une transformation avant de pouvoir être utilisées pour construire un modèle. Ce processus est appelé ingénierie des fonctionnalités, et les résultats de ce processus sont appelés fonctionnalités — les éléments constitutifs du modèle.
Le développement de fonctionnalités est complexe et chronophage. Une complication supplémentaire est que pour le machine learning, les calculs de fonctionnalités doivent être effectués pour l'entraînement du modèle, puis à nouveau lorsque le modèle est utilisé pour faire des prédictions. Ces implémentations peuvent ne pas être réalisées par la même équipe ou utiliser le même environnement de code, ce qui peut entraîner des retards et des erreurs. De plus, différentes équipes d'une organisation ont souvent des besoins en fonctionnalités similaires, mais peuvent ne pas être au courant du travail effectué par d'autres équipes. Un magasin de fonctionnalités est conçu pour résoudre ces problèmes.
Tables de fonctionnalités
Les fonctionnalités sont organisées sous forme de tables de fonctionnalités. Chaque table doit avoir une clé primaire et est basée sur une table Delta et des métadonnées supplémentaires. Les métadonnées de table de caractéristiques suivent les sources de données à partir desquelles une table a été générée, ainsi que les Notebooks et Jobs qui ont créé ou écrit dans la table.
Avec Databricks Runtime 13.3 LTS et versions ultérieures, si votre workspace est activé pour Unity Catalog, vous pouvez utiliser n'importe quelle table Delta dans Unity Catalog avec une clé primaire comme table de fonctionnalités. Consultez les tables de fonctionnalités dans Unity Catalog. Les Tables de fonctionnalités stockées dans le Magasin de fonctionnalités du Workspace local sont appelées « tables de fonctionnalités du Workspace ». Consultez Utiliser les tables de fonctionnalités dans Workspace Magasin de fonctionnalités (hérité).
Les fonctionnalités d'une table de fonctionnalités sont généralement calculées et mises à jour à l'aide d'une fonction de calcul commune.
Vous pouvez publier une table de fonctionnalités dans un magasin en ligne pour l'inférence de modèle en temps réel.
FeatureLookup
De nombreux modèles différents peuvent utiliser des fonctionnalités issues d'une table de fonctionnalités particulière, et tous les modèles n'auront pas besoin de toutes les fonctionnalités. Pour entraîner un modèle à l'aide de fonctionnalités, vous créez un FeatureLookup pour chaque table de fonctionnalités. FeatureLookup spécifie les fonctionnalités à utiliser de la table, et définit également les clés à utiliser pour joindre la table de fonctionnalités aux données d'étiquette passées à create_training_set.
Le diagramme illustre le fonctionnement d'un FeatureLookup. Dans cet exemple, vous voulez entraîner un modèle en utilisant les fonctionnalités de deux tables de fonctionnalités, customer_features et product_features. Vous créez un FeatureLookup pour chaque table de fonctionnalités, en spécifiant le nom de la table, les fonctionnalités (colonnes) à sélectionner dans la table et la clé de recherche à utiliser lors de la jointure des fonctionnalités pour créer un dataset d’entraînement.
Vous appelez ensuite create_training_set, également affiché dans le diagramme. Cet appel d'API spécifie le DataFrame qui contient les données d'entraînement brutes (label_df), le FeatureLookups à utiliser, et label, une colonne qui contient la vérité terrain. Les données d'entraînement doivent contenir une ou plusieurs colonnes correspondant à chacune des clés primaires des tables de fonctionnalités. Les données des tables de fonctionnalités sont jointes au DataFrame d'entrée selon ces clés. Le résultat est affiché dans le diagramme sous la forme du « dataset d'entraînement ».

FeatureFunction
Une fonctionnalité peut dépendre d'informations disponibles uniquement au moment de l'inférence. Vous pouvez spécifier un FeatureFunction qui combine des entrées en temps réel avec des valeurs de fonctionnalité pour compute des valeurs de fonctionnalité à jour. Un exemple est présenté dans le diagramme. Pour plus de détails, consultez Calcul de fonctionnalités à la demande.

Ensemble d'entraînement
Un ensemble d'entraînement se compose d'une liste de fonctionnalités et d'un DataFrame contenant des données d'entraînement brutes, des étiquettes et des clés primaires par lesquelles rechercher des fonctionnalités. Vous créez l'ensemble d'entraînement en spécifiant les fonctionnalités à extraire du Magasin de fonctionnalités, et fournissez l'ensemble d'entraînement comme entrée lors de l'entraînement du modèle.
Consultez Créer un dataset d'entraînement pour un exemple de la façon de créer et d'utiliser un jeu de données d'entraînement.
Lorsque vous entraînez et log un modèle à l'aide de l'ingénierie des fonctionnalités dans Unity Catalog, vous pouvez afficher la lignée du modèle dans Catalog Explorer. Les tables et les fonctions qui ont été utilisées pour créer le modèle sont automatiquement suivies et affichées. Voir la gouvernance et la traçabilité des fonctionnalités.
FeatureSpec
Un FeatureSpec est une entité Unity Catalog qui définit un ensemble réutilisable de fonctionnalités et de fonctions pour le service. Les FeatureSpeccombinent des FeatureLookupissues de tables de fonctionnalités et des FeatureFunctionen une seule unité logique qui peut être utilisée dans la formation de modèles ou servie à l'aide d'Endpoint Feature Serving.
FeatureSpecsont stockées et gérées par Unity Catalog, avec un suivi de lignage complet vers leurs tables et fonctions de caractéristiques hors ligne constitutives. Cela permet la gouvernance, la découvrabilité et la réutilisation sur différents modèles et applications.
Vous pouvez utiliser un FeatureSpec des manières suivantes :
- Créez un Endpoint de Feature Serving à l'aide de l'API Python ou de l'API REST. Consultez les Feature Serving endpoints ou déployez directement à l'aide de l'interface utilisateur de Model Serving. Pour les applications hautes performances, activez l'optimisation des itinéraires.
- Utiliser dans l'entraînement des modèles en référençant le
FeatureSpecdans lecreate_training_set.
Un FeatureSpec fait toujours référence aux tables de fonctionnalités hors ligne, mais celles-ci doivent être publiées dans un magasin en ligne pour les scénarios de service en temps réel.
Tables de caractéristiques de série temporelle (recherches à des points spécifiques du temps)
Les données utilisées pour entraîner un modèle comportent souvent des dépendances temporelles. Lorsque vous construisez le modèle, vous ne devez prendre en compte que les valeurs de caractéristique jusqu'au moment de la valeur cible observée. Si vous vous entraînez sur des fonctionnalités basées sur des données mesurées après le timestamp de la valeur cible, les performances du modèle pourraient en souffrir.
Les tables de caractéristiques de série temporelle incluent une colonne timestamp qui garantit que chaque ligne du dataset d'entraînement représente les dernières valeurs de caractéristiques connues à partir du timestamp de la ligne. Vous devez utiliser des tables de fonctionnalités de séries temporelles chaque fois que les valeurs des fonctionnalités changent au fil du temps, par exemple avec des données de séries temporelles, des données basées sur des événements ou des données agrégées par le temps.
Lorsque vous créez une table de fonctionnalités de série chronologique, vous spécifiez les colonnes liées au temps dans vos clés primaires comme colonnes de série chronologique à l’aide de l’argument timeseries_columns (pour le Feature Engineering dans Unity Catalog) ou de l’argument timestamp_keys (pour le Magasin de fonctionnalités du Workspace). Cela permet des recherches à des points spécifiques du temps lorsque vous utilisez create_training_set ou score_batch. Le système effectue une jointure d'as-of Timestamp, en utilisant le timestamp_lookup_key que vous spécifiez.
Si vous n’utilisez pas l’argument timeseries_columns ou l’argument timestamp_keys, et que vous désignez uniquement une colonne de série chronologique comme colonne de clé primaire, le Magasin de fonctionnalités n’applique pas la logique de point dans le temps à la colonne de série chronologique pendant les jointures. Au lieu de cela, il ne correspond qu'aux lignes avec une correspondance exacte de l'heure, au lieu de faire correspondre toutes les lignes antérieures au Timestamp.
Magasin hors ligne
Le magasin de fonctionnalités hors ligne est utilisé pour la découverte de fonctionnalités, la formation de modèles et l'inférence par batch. Il contient des tables de magasin de fonctionnalités matérialisées sous forme de tables Delta.
Magasin de fonctionnalités en ligne
Le magasin de fonctionnalités en ligne Databricks est une solution haute performance et évolutive pour fournir des données de fonctionnalités aux applications en ligne et aux modèles de machine learning en temps réel.
Optimisé par Databricks Lakebase, il offre un accès à faible latence aux données de fonctionnalités à grande échelle tout en maintenant la gouvernance, la lignée et la cohérence avec vos tables de fonctionnalités hors ligne.
Vous pouvez provisionner des magasins en ligne sur la plateforme Serverless Lakebase. Les APIs vous permettent de gérer les instances et les réplicas en lecture et de monter en charge les instances selon les besoins. Vous pouvez utiliser des APIs pratiques pour publier des tables Unity Catalog dans des magasins en ligne. Ces tables sont également des entités Unity Catalog qui suivent en mode natif la traçabilité des tables sources. Databricks prend également en charge les magasins en ligne tiers.
streaming
En plus des écritures batch, le Magasin de fonctionnalités Databricks prend en charge le streaming. Vous pouvez écrire des valeurs de feature dans une feature table à partir d'une source streaming, et le code de calcul de feature peut utiliser Structured Streaming pour transformer des flux de données brutes en features.
Vous pouvez également Stream les tables de fonctionnalités du magasin hors ligne vers un magasin en ligne.
Empaquetage du modèle
Lorsque vous entraînez un Modèle de machine learning à l’aide de Feature Engineering dans Unity Catalog ou de Workspace Magasin de fonctionnalités et que vous l’enregistrez à l’aide de la méthode log_model() du client, le modèle conserve des références à ces fonctionnalités. Au moment de l’inférence, le modèle peut éventuellement récupérer automatiquement les valeurs des fonctionnalités. L’appelant n’a qu’à fournir la clé primaire des fonctionnalités utilisées dans le modèle (par exemple, user_id), et le modèle récupère toutes les valeurs de fonctionnalités requises.
Dans l'inférence par batch, les valeurs de fonctionnalité sont récupérées depuis le magasin hors ligne et jointes à de nouvelles données avant l'évaluation. Dans l'inférence en temps réel, les valeurs de fonctionnalité sont récupérées depuis le magasin en ligne.
Pour packager un modèle avec des métadonnées de fonctionnalité, utilisez FeatureEngineeringClient.log_model (pour le Data Engineering dans Unity Catalog) ou FeatureStoreClient.log_model (pour le Magasin de fonctionnalités du Workspace).