Présentation et glossaire de Databricks Magasin de fonctionnalités
Le magasin de fonctionnalités Databricks centralise les fonctionnalités utilisées en machine learning afin que les mêmes calculs de fonctionnalités soient exécutés lors de l'entraînement et de l'inférence du modèle. Vous créez des fonctionnalités sous forme de vues de fonctionnalités, que Databricks compute et gère, ou sous forme de tables de fonctionnalités que vous remplissez vous-même. Les sections ci-dessous couvrent le workflow type et définissent les termes clés.
Que propose le Magasin de fonctionnalités Databricks ?
Le magasin de fonctionnalités vous propose deux façons de créer des fonctionnalités. Les deux produisent des fonctionnalités régies par Unity Catalog que vous pouvez utiliser pour l'inférence par batch, ou publier sur le magasin de fonctionnalités en ligne pour un service à faible latence :
- Les vues de fonctionnalités définissent les fonctionnalités de manière déclarative, et Databricks compute et gère les pipelines de fonctionnalités pour vous. Databricks recommande les vues de fonctionnalités pour les nouveaux cas d'usage.
- Les Tables de fonctionnalités sont des tables Delta que vous remplissez vous-même en écrivant des valeurs de fonctionnalités.
Pour savoir comment choisir entre eux, consultez Choisir une stratégie de création.
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 :
-
Prototypez des Vues de fonctionnalités dans un Notebook, en utilisant le SDK Feature Data Engineering pour générer des données historiques et des jeux d'entraînement. Itérez en parallèle sur vos définitions de fonctionnalités, vos données et votre modèle jusqu'à ce que vous soyez satisfait.
-
Production :
- Enregistrez vos fonctionnalités dans Unity Catalog pour en faire des assets gérables et réutilisables.
- Entraînez et journalisez votre modèle dans MLflow en capturant le lineage des fonctionnalités utilisées pour l'entraînement.
- Matérialisez vos fonctionnalités dans des magasins en ligne ou hors ligne.
-
Inférence :
- Pour le mode batch, utilisez
score_batch. - Pour le mode en ligne, configurez un endpoint de service en ligne pour les modèles ou les fonctionnalités.
- Pour le mode batch, utilisez

Glossaire du Magasin de fonctionnalités
Magasin de fonctionnalités
Un magasin de fonctionnalités est un repository centralisé qui aide les data scientists à trouver et à partager des fonctionnalités. L'utilisation d'un Magasin de fonctionnalités garantit également que le code utilisé pour compute les valeurs des fonctionnalités est le même lors de l'entraînement du modèle et lorsqu'il est utilisé pour l'inférence. Vous pouvez créer des fonctionnalités en tant que vues de fonctionnalités, que Databricks compute et gère pour vous, ou en tant que tables de fonctionnalités. Dans les Workspace activés pour Unity Catalog, toute table Delta dans Unity Catalog qui inclut une contrainte de clé primaire peut être utilisée comme table de fonctionnalités.
Le machine learning utilise les données existantes pour créer un modèle afin de prédire les résultats futurs. Dans presque tous les cas, les données brutes doivent être prétraitées et subir une transformation avant de pouvoir être utilisées pour créer un modèle. Ce processus est appelé Data Engineering de fonctionnalité, et les sorties de ce processus sont appelées fonctionnalités, les blocs de construction du modèle. Avec les vues de fonctionnalités, vous effectuez le Data Engineering des fonctionnalités avec des définitions Python simples, et Databricks gère les pipelines pour vous.
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.
Vues de fonctionnalités
Les vues de fonctionnalités sont une abstraction pour définir ce qu'est une fonctionnalité. Vous définissez une vue de fonctionnalités et Databricks la compute. Au moment de l'entraînement, le SDK Feature Data Engineering génère des données de fonctionnalités historiques et des jeux d'entraînement corrects à un instant T. Pour l'inférence, matérialisez la fonctionnalité dans le magasin en ligne ou hors ligne approprié, et Databricks orchestre le compute en s'assurant que les données de fonctionnalités sont prêtes à être servies.
Les vues des fonctionnalités prennent en charge les fonctionnalités par batch et en streaming, avec une fraîcheur allant de moins d'une seconde à une planification cron.
Tables de fonctionnalités
Les tables de fonctionnalités sont des tables Delta avec une clé primaire. Vous pouvez synchroniser les tables de fonctionnalités avec une boutique en ligne avec publish_table. Les métadonnées des tables de fonctionnalités suivent les sources de données à partir desquelles une table a été générée ainsi que les Notebooks et les Job 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 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 ».

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
Une FeatureSpec est une entité Unity Catalog qui définit un ensemble réutilisable de fonctionnalités et de fonctions. Les FeatureSpecs combinent les FeatureLookups des tables de caractéristiques et les FeatureFunctions en une seule unité logique qui peut être utilisée pour l'entraînement de modèles.
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.
Pour utiliser un FeatureSpec dans l'entraînement de modèles, référencez le FeatureSpec dans create_training_set.
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.
Propulsé par Databricks Lakebase, il offre un accès à faible latence aux données de fonctionnalité à grande échelle tout en maintenant la gouvernance, le lineage et la cohérence des données.
Vous pouvez approvisionner des boutiques en ligne sur la plateforme serverless Lakebase. Les APIs vous permettent de gérer les instances et les réplicas en lecture, ainsi que de faire monter en charge les instances selon vos besoins. Vous pouvez utiliser des APIs pratiques pour publier des tables Unity Catalog dans des boutiques en ligne. Ces tables sont aussi des entités Unity Catalog qui suivent en mode natif la traçabilité jusqu’aux tables sources.
Le magasin de fonctionnalités en ligne est en bêta, disponible dans les régions us-central1, us-east4 et europe-west3 (Francfort). Les magasins de fonctionnalités tiers ne sont pas pris en charge.
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.
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).