Partager via


Vue d’ensemble et glossaire du magasin de fonctionnalités

Cette page explique comment fonctionne le Magasin de fonctionnalités Databricks et définit des termes importants.

Comment fonctionne l’ingénierie des fonctionnalités sur Databricks ?

Le flux de travail Machine Learning classique utilisant l’ingénierie des fonctionnalités sur Databricks suit ce chemin :

  1. Écrivez du code pour convertir des données brutes en fonctionnalités et créez un DataFrame Spark contenant les fonctionnalités souhaitées.

  2. Créez une table Delta dans le catalogue Unity qui a une clé primaire.

  3. Entraîner et journaliser 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 des fonctionnalités à partir des tables de fonctionnalités appropriées.

  4. Inscrire un modèle dans le Registre de modèles.

    Vous pouvez maintenant utiliser le modèle pour effectuer des prédictions sur de nouvelles données. Pour les cas d’utilisation par lots, le modèle récupère automatiquement les fonctionnalités dont il a besoin à partir du Magasin de fonctionnalités.

  5. Pour les cas d’utilisation de service en temps réel, publiez les fonctionnalités dans un magasin de fonctionnalités en ligne.

  6. Au moment de l'inférence, le point de terminaison de service du modèle utilise automatiquement les ID d'entité dans les données de requête pour rechercher des caractéristiques pré-calculées à partir de la boutique en ligne afin d'évaluer le modèle ML. Le point de terminaison utilise le catalogue Unity pour établir la traçabilité du modèle déployé aux fonctionnalités utilisées pour entraîner ce modèle et effectue le suivi de la traçabilité vers le magasin de fonctionnalités en ligne pour l’accès en temps réel.

Flux du Feature Store pour les modèles de machine learning déployés.

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 magasin de fonctionnalités garantit également que le code utilisé pour calculer les valeurs des 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 sur Databricks dépend du fait que votre espace de travail est activé pour le catalogue Unity ou non.

  • Dans les espaces de travail activés pour le catalogue Unity, vous pouvez utiliser n’importe quelle table Delta dans le catalogue Unity qui inclut une contrainte de clé primaire en tant que table de fonctionnalités.
  • Les espaces de travail créés avant le 19 août 2024, 16:00:00 (UTC), qui ne sont pas activés pour le catalogue Unity, ont accès au Workspace Feature Store hérité.

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 est appelé ingénierie des caractéristiques, et les sorties de ce processus sont appelées « caractéristiques » : ce sont les composants du modèle.

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 magasin de caractéristiques est conçu pour résoudre ces problèmes.

Tables de caractéristiques

Les caractéristiques sont organisées sous forme de tables de fonctionnalités. Chaque table doit avoir une clé primaire et est soutenue par une table Delta et des métadonnées supplémentaires. 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 Utiliser des tables de fonctionnalités dans le catalogue Unity. Les tables de fonctionnalités qui sont stockées dans le magasin de fonctionnalités de l'espace de travail local sont appelées « tables de fonctionnalités de l'espace de travail ». Consultez Travailler avec des tables de fonctionnalités dans le Store de fonctionnalités de Workspace (hérité).

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 ».

Diagramme FeatureLookup

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.

Diagramme FeatureFunction

Jeu d’apprentissage

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 de distribution des caractéristiques.

FeatureSpec sont stockés et gérés par Unity Catalog, avec un suivi complet de la traçabilité vers leurs tables de caractéristiques hors ligne et fonctions constituantes. 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 les endpoints de distribution de fonctionnalités ou déployez directement via l’interface utilisateur de Model Serving. 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 FeatureSpec dans create_training_set.

Une FeatureSpec référence toujours 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érie chronologique (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 fonctionnalités 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 fonctionnalités dans le catalogue Unity) ou de l’argument (pour le Magasin de fonctionnalités d’espace timestamp_keys de travail). Il permet d’effectuer des recherches à un instant dans le temps 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.

Stockage hors connexion

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.

Optimisé par Databricks Lakebase, il fournit un accès à faible latence aux données de fonctionnalités à grande échelle tout en conservant la gouvernance, la traçabilité et la cohérence avec vos tables de fonctionnalités hors connexion.

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 la diffusion en continu (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 de Machine Learning à l'aide de l'ingénierie des caractéristiques dans le catalogue Unity ou le dépôt de caractéristiques d’espace de travail et que vous l'enregistrez à l'aide de la méthode du client log_model(), le modèle conserve les références à 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 caractéristiques sont extraites du magasin hors connexion et jointes aux nouvelles données avant le scoring. 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).