Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Databricks Feature Store 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. Vous créez les caractéristiques sous forme de Feature Views, que Databricks calcule et gère, ou sous forme de tables de caractéristiques que vous remplissez vous-même. Les sections ci-dessous couvrent le flux de travail typique et définissent les termes clés.
Que propose le Databricks Feature Store ?
Le Feature Store vous offre deux façons d’écrire des fonctionnalités. Les deux produisent des caractéristiques gouvernées par le catalogue Unity que vous pouvez utiliser pour l’inférence en batch, ou bien publier sur le Online Feature Store pour une livraison à faible latence :
- Les Feature Views définissent les features de manière déclarative, et Databricks calcule et gère les pipelines de features pour vous. Databricks recommande les Feature Views pour de nouveaux cas d’usage.
- Les tables de caractéristiques sont des tables Delta que vous remplissez vous-même en écrivant des valeurs de caractéristiques.
Pour savoir comment choisir entre les deux, voir Choisir une stratégie d’auteur.
Comment fonctionne databricks Feature Store ?
Le flux de travail Machine Learning classique utilisant l’ingénierie des fonctionnalités sur Databricks suit ce chemin :
- Prototype Feature Views dans un notebook, en utilisant le SDK Feature Engineering pour générer des données historiques et des ensembles d’entraînement. Itérez en parallèle sur vos définitions de caractéristiques, vos données et votre modèle jusqu’à ce que vous soyez satisfait.
- Mise en production :
- Inscrivez vos variables dans Unity Catalog, en les rendant gérables et réutilisables.
- Entraînez et enregistrez votre modèle dans MLflow, en capturant la traçabilité des fonctionnalités utilisées lors de l’entraînement.
- Matérialisez vos fonctionnalités dans des stores en ligne ou hors ligne.
- Inférence :
- Pour le traitement par lot, utilisez
score_batch. - Pour le mode en ligne, configurez un point de terminaison de diffusion en ligne pour les modèles ou les fonctionnalités.
- Pour le traitement par lot, utilisez
Glossaire du Magasin de fonctionnalités
Magasin de fonctionnalités
Un magasin de fonctionnalités est un référentiel centralisé qui permet aux scientifiques des données de rechercher et de partager des fonctionnalités. L’utilisation d’un feature store aide également à garantir que le code utilisé pour calculer les valeurs des caractéristiques est le même lors de l’entraînement du modèle et lors de l’utilisation du modèle pour l’inférence. Vous pouvez créer des variables sous forme de Feature Views, que Databricks calcule et gère pour vous, ou sous forme de tables de variables. Dans les espaces de travail activés pour Unity Catalog, toute table Delta dans Unity Catalog incluant une contrainte de clé primaire peut être utilisée comme table de features.
Le machine learning utilise des 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 nécessitent un prétraitement et une transformation avant de pouvoir être utilisées pour créer un modèle. Ce processus s’appelle l’ingénierie des caractéristiques, et les résultats de ce processus sont appelés caractéristiques, les éléments de base du modèle. Avec Feature Views, vous faites de l’ingénierie des fonctionnalités avec des définitions Python simples, et Databricks gère les pipelines pour vous.
Le développement de caractéristiques est complexe et demande du temps. Une complication supplémentaire est que pour le machine learning, les calculs de caractéristiques doivent être effectués pour l’entraînement du modèle, puis à nouveau quand le modèle est utilisé pour faire des prédictions. Ces implémentations peuvent ne pas être effectuées par la même équipe ou à l’aide du même environnement de code, ce qui peut entraîner des retards et des erreurs. En outre, différentes équipes d’une organisation auront souvent des besoins de caractéristiques similaires, mais peuvent ne pas être au courant du travail effectué par d’autres équipes. Un feature store est conçu pour résoudre ces problèmes.
Vues des fonctionnalités
Les Feature Views sont une abstraction permettant de définir ce qu’est une feature. Vous définissez une vue Feature View, et Databricks la génère. Au moment de la formation, le SDK d’ingénierie des caractéristiques génère des données historiques de caractéristiques et des ensembles d’entraînement corrects à un instant donné. Pour l’inférence, matérialisez la feature vers le magasin en ligne ou hors ligne approprié, et Databricks orchestre le calcul afin que les données des features soient prêtes à être servies.
Les Feature Views prennent en charge à la fois les variables batch et en streaming, avec une fraîcheur allant de moins d’une seconde jusqu’à une exécution planifiée via cron.
Tables de caractéristiques
Les tables de features sont des tables Delta avec une clé primaire. Vous pouvez synchroniser les tables attributaires avec une boutique en ligne avec publish_table. Les métadonnées de la table de caractéristiques assurent le suivi des sources de données à partir desquelles une table a été générée et des notebooks et travaux qui ont été créés ou écrits dans la table.
Avec Databricks Runtime 13.3 LTS et versions ultérieures, si votre espace de travail 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 le catalogue Unity.
Les caractéristique d’une table de caractéristiques sont généralement calculées et mises à jour à l’aide d’une fonction de calcul commune.
Vous pouvez publier une table de caractéristiques dans un magasin en ligne pour une inférence de modèle en temps réel.
FeatureLookup
De nombreux modèles différents peuvent utiliser les fonctionnalités d’un tableau de fonctionnalités particulier, 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 une FeatureLookup pour chaque table de fonctionnalités. Le FeatureLookup spécifie les fonctionnalités à utiliser à partir de la table et définit également les clés à utiliser pour joindre la table de fonctionnalités aux données d'étiquette transmises à create_training_set.
Le diagramme illustre le fonctionnement d'un FeatureLookup. Dans cet exemple, vous souhaitez entraîner un modèle à l'aide des 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 ensemble de données d'entraînement.
Vous appelez ensuite create_training_set, également indiqué 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 en fonction de ces clés. Le résultat est affiché dans le diagramme sous le nom « Ensemble de données de formation ».
FeatureFunction
Une caractéristique peut dépendre des 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 caractéristique pour calculer des valeurs de caractéristique à jour. Un exemple est illustré dans le diagramme. Pour plus d’informations, consultez calcul des fonctionnalités à la demande.
Ensemble d'entraînement
Un jeu d’apprentissage se compose d’une liste de caractéristiques et d’une table contenant des données d’apprentissage brutes, des étiquettes et des clés primaires selon lesquelles rechercher des caractéristiques. Vous créez le jeu d’apprentissage en spécifiant les caractéristiques à extraire de Feature Store et fournissez le jeu d’apprentissage en tant qu’entrée lors de l’entraînement du modèle.
Voir Créer un jeu de données d'apprentissage pour obtenir un exemple de création et d'utilisation d'un jeu d'apprentissage.
Lorsque vous effectuez l’apprentissage et l’enregistrement d’un modèle à l’aide de l’ingénierie des fonctionnalités dans le catalogue Unity, vous pouvez afficher la traçabilité du modèle dans l’Explorateur de catalogues. Les tables et fonctions utilisées pour créer le modèle sont automatiquement suivies et affichées. Consultez gouvernance et traçabilité des fonctionnalités.
FeatureSpec
FeatureSpec est une entité de catalogue Unity qui définit un ensemble réutilisable de fonctionnalités et de fonctions pour le déploiement.
FeatureSpeccombine les FeatureLookup des tables de caractéristiques et les FeatureFunction en une seule unité logique qui peut être utilisée pour l'entraînement de modèles ou être servie via des points de terminaison Feature Serving.
FeatureSpec sont stockés et gérés par Unity Catalog, avec un suivi complet de la traçabilité vers leurs tables de fonctionnalités hors connexion et leurs fonctions constitutives. Cela permet la gouvernance, la détectabilité et la réutilisation entre différents modèles et applications.
Vous pouvez utiliser un FeatureSpec de la manière suivante :
- Créez un point de terminaison de service de fonctionnalités à l'aide de l'API Python ou de l'API REST. Consultez Délivrer les tables de fonctionnalités ou déployez directement en utilisant l’interface utilisateur Service de modèles. Pour les applications hautes performances, activez l’optimisation des itinéraires.
- Utiliser dans l’entraînement du modèle en référençant le
FeatureSpecdanscreate_training_set.
Une FeatureSpec fait toujours référence aux tables de fonctionnalités hors connexion, mais elle doit être publiée dans un magasin en ligne pour les scénarios de service en temps réel.
Tables de caractéristiques de séries chronologiques (recherches ponctuelles dans le temps)
Les données utilisées pour effectuer l’apprentissage d’un modèle intègrent souvent des dépendances temporelles. Lorsque vous générez le modèle, vous ne devez prendre en compte que les valeurs de caractéristiques précédant l’heure de la valeur cible observée. Si vous effectuez l’apprentissage sur des fonctionnalités basées sur des données mesurées après l’horodatage de la valeur cible, les performances du modèle peuvent souffrir.
Les tables de caractéristiques de séries temporelles incluent une colonne d’horodatage qui garantit que chaque ligne du jeu de données d’entraînement représente les dernières valeurs de caractéristiques connues à la date de l’horodatage de la ligne. Utilisez systématiquement des tables de caractéristiques de séries chronologiques si les valeurs de caractéristiques changent au fil du temps, par exemple avec des données de séries chronologiques, des données basées sur les événements ou des données agrégées dans le temps.
Lorsque vous créez une table de caractéristiques de série chronologique, vous spécifiez des colonnes liées au temps dans vos clés primaires pour être des colonnes de série chronologique à l’aide de l’argument timeseries_columns (pour l’ingénierie des caractéristiques dans Unity Catalog) ou de l’argument timestamp_keys (pour le magasin de caractéristiques dans le Workspace Feature Store). Cela permet d'effectuer des consultations à un moment donné avec create_training_set ou score_batch. Le système effectue une jointure à partir de l’horodatage, à l’aide de la clé timestamp_lookup_key indiquée.
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 clé primaire, le Feature Store n’applique pas la logique de point dans le temps à la colonne de série chronologique pendant les jointures. Au lieu d’établir une correspondance avec toutes les lignes antérieures à l’horodatage, il ne considère que les lignes présentant une correspondance temporelle exacte.
Magasin hors ligne
Le magasin de caractéristiques hors connexion est utilisé pour la découverte des caractéristiques, l’entraînement du modèle et l’inférence par lots. Il contient des tables de caractéristiques matérialisées sous forme de tables Delta.
Magasin de fonctionnalités en ligne
Le Magasin de fonctionnalités Databricks Online est une solution évolutive hautes performances pour servir les données de fonctionnalités aux applications en ligne et aux modèles Machine Learning en temps réel.
Propulsé par Databricks Lakebase, il offre un accès à faible latence aux données de caractéristiques à grande échelle tout en maintenant la gouvernance, la traçabilité et la cohérence avec vos données de caractéristiques.
Vous pouvez approvisionner des magasins en ligne dans la plateforme Serverless Lakebase. Les API vous permettent de gérer les instances et les copies de lecture et de redimensionner les instances en fonction des besoins. Vous pouvez utiliser des API pratiques pour publier des tables de catalogue Unity dans des magasins en ligne. Ces tables sont également des entités du catalogue Unity qui effectuent le suivi natif du lignage vers les tables sources.
Databricks prend également en charge les magasins en ligne tiers.
Diffusion en continu
En plus des écritures par lots, Databricks Feature Store prend en charge le streaming. Vous pouvez écrire les valeurs des caractéristiques dans une table de caractéristiques à partir d'une source de streaming, et le code de calcul des caractéristiques peut utiliser Structured Streaming pour transformer les flux de données brutes en caractéristiques.
Vous pouvez également diffuser en continu des tableaux de caractéristiques du magasin hors ligne vers un magasin en ligne.
Empaquetage de modèle
Lorsque vous entraînez un modèle Machine Learning à l'aide de l'ingénierie des caractéristiques dans Unity Catalog ou dans le magasin de fonctionnalités de l'espace de travail, et que vous l'enregistrez à l'aide de la méthode log_model() du client, le modèle conserve les références relatives à ces caractéristiques. Au moment de l’inférence, le modèle peut éventuellement récupérer automatiquement des valeurs de caractéristique. L’appelant doit uniquement fournir la clé primaire des caractéristiques utilisées dans le modèle (par exemple, user_id), et le modèle récupère toutes les valeurs de caractéristique requises.
Dans l’inférence par lots, les valeurs des variables sont extraites du stockage hors ligne et associées aux nouvelles données avant l'évaluation. Dans l’inférence en temps réel, les valeurs des caractéristiques sont récupérées à partir du magasin en ligne.
Pour empaqueter un modèle avec des métadonnées de fonctionnalité, utilisez FeatureEngineeringClient.log_model (pour l’ingénierie des fonctionnalités dans le catalogue Unity) ou FeatureStoreClient.log_model (pour le Magasin de fonctionnalités d’espace de travail).