Créer, stocker et partager des fonctions avec Amazon SageMaker Feature Store - Amazon SageMaker

Créer, stocker et partager des fonctions avec Amazon SageMaker Feature Store

Le processus de développement de machine learning (ML) commence souvent par l'extraction de signaux de données, également appelés fonctions, à partir des données, pour entraîner les modèles ML. Amazon SageMaker Feature Store facilite la création, le partage et la gestion des fonctions de développement de machine learning (ML) pour les scientifiques des données, les ingénieurs de machine learning et les généralistes. Feature Store accélère ce processus en réduisant les tâches répétitives de traitement et d'organisation des données nécessaires pour convertir des données brutes en fonctions afin dentraîner un algorithme ML.

De plus, comme la logique de traitement de vos données n'est créée qu'une seule fois, et que les fonctions générées sont utilisées tant pour l'entraînement que pour l'inférence, le biais d'entraînement-service est réduit. Feature Store est une boutique centralisée pour les fonctions et les métadonnées associées, ce qui facilite la découverte et la réutilisation des fonctions. Vous pouvez créer une boutique en ligne ou hors ligne. La boutique en ligne est utilisée pour les cas d'utilisation d'inférence en temps réel à faible latence, et la boutique hors ligne est utilisée pour les cas d'utilisation d'entraînement et d'inférence par lots.  

Le diagramme suivant montre comment utiliser Amazon SageMaker Feature Store dans le cadre de votre pipeline de machine learning. Tout d'abord, vous lisez vos données brutes et vous les traitez. Vous pouvez intégrer des données par streaming dans les boutiques en ligne et hors ligne, ou par lots directement dans la boutique hors ligne. Vous créez d'abord un FeatureGroup et vous le configurez dans une boutique en ligne ou hors ligne, ou les deux. Ensuite, vous pouvez intégrer des données dans votreFeatureGroup et le stocker dans votre boutique. Un FeatureGroup est un groupe de fonctions défini via un schéma dans le Feature Store pour décrire un enregistrement.

La boutique en ligne est principalement conçue pour prendre en charge les prédictions en temps réel qui nécessitent des lectures de faible latence (quelques millisecondes seulement) et des écritures à haut débit. La boutique hors ligne est principalement destinée aux prédictions par lots et à l'entraînement du modèle. La boutique hors ligne est une boutique « append-only » (ajout seulement) et peut être utilisée pour stocker et accéder à l'historique de données de fonctions. La boutique hors ligne peut vous aider à stocker et à servir des fonctions pour l'exploration et l'entraînement du modèle. La boutique en ligne conserve uniquement les données de fonctions les plus récentes. Une fois créées, les définitions de groupes de fonctions sont inaltérables.

Fonctionnement du Feature Store

Dans le Feature Store, les fonctions sont stockées dans un ensemble appelé groupe de fonctions. Un groupe de fonctions peut se présenter sous la forme d'une table dans laquelle chaque colonne est une fonction, avec un identifiant unique pour chaque ligne. En principe, un groupe de fonctions est composé de fonctions et de valeurs spécifiques à chaque fonction. Un Record est un ensemble de valeurs pour les fonctions qui correspondent à un RecordIdentifier. Globalement, un FeatureGroup est un groupe de fonctions défini dans votre FeatureStore pour décrire un Record

Vous pouvez utiliser le Feature Store dans les modes suivants : 

  • En ligne : dans ce mode, les fonctions sont lues avec une faible latence (quelques millisecondes) et utilisées pour des prédictions de débit élevé. Dans ce mode, un groupe de fonctions doit être stocké dans une boutique en ligne. 

  • Hors ligne : dans ce mode, des flux de données volumineux sont envoyés à une boutique hors ligne, qui peut être utilisée pour l'entraînement et l'inférence par lots. Dans ce mode, un groupe de fonctions doit être stocké dans une boutique hors ligne. La boutique hors ligne utilise votre compartiment S3 pour le stockage et peut aussi récupérer des données à l'aide de requêtes Athena. 

  • En ligne et hors ligne : cela inclut les deux modes, en ligne et hors ligne.

Vous pouvez intégrer des données dans des groupes de fonctions du Feature Store de deux manières : par streaming ou par lots. Lorsque vous intégrez des données par streaming, un ensemble d'enregistrements est envoyé au Feature Store en appelant un appel d'API PutRecord synchrone. Cette API vous permet de gérer les dernières valeurs de fonctions dans le Feature Store et d'envoyer de nouvelles valeurs de fonctions dès qu'une mise à jour est détectée.

En variante, le Feature Store peut traiter et intégrer des données par lots. Vous pouvez créer des fonctions à l'aide d'Amazon SageMaker Data Wrangler, créer des groupes de fonctions dans le Feature Store et intégrer des fonctions par lots à l'aide d'une tâche de traitement SageMaker avec un bloc-notes exporté depuis Data Wrangler. Ce mode permet l'ingestion de lots dans la boutique hors ligne. Il prend également en charge l'ingestion dans la boutique en ligne si le groupe de fonctions est configuré pour une utilisation tant en ligne qu'hors ligne. 

Créer des groupes de fonctions

Pour intégrer des fonctions dans le Feature Store, vous devez d'abord définir le groupe de fonctions et les définitions de fonctions (nom de fonction et type de données) pour toutes les fonctions appartenant au groupe de fonctions. Une fois créés, les groupes de fonctions sont inaltérables. Les noms des groupes de fonctions sont uniques dans une région AWS et un compte AWS. Lors de la création d'un groupe de fonctions, vous pouvez également créer les métadonnées du groupe de fonctions, telles qu'une courte description, une configuration de stockage, des fonctions permettant d'identifier chaque enregistrement et l'instant de l'événement, ainsi que des balises pour stocker des informations telles que l'auteur, la source de données, la version, etc.

Important

Les noms des FeatureGroup ou les métadonnées associées telles que la description ou les balises ne doivent pas contenir de données d'identification personnelle (PII) ou d'informations confidentielles.

Rechercher, découvrir et partager des fonctions

Une fois qu'un groupe de fonctions est créé dans le Feature Store, les autres utilisateurs autorisés du Feature Store peuvent le partager et le découvrir. Les utilisateurs peuvent parcourir une liste de tous les groupes de fonctions dans le Feature Store ou découvrir des groupes de fonctions existants en effectuant une recherche par nom de groupe de fonctions, description, nom d'identificateur d'enregistrement, date de création et balises. 

Inférence en temps réel pour les fonctions stockées dans la boutique en ligne 

Avec le Feature Store, vous pouvez enrichir les fonctions stockées dans votre boutique en ligne en temps réel avec des données provenant d'une source de streaming (données de flux propres d'une autre application) et servir les fonctions avec une faible latence de quelques millisecondes pour une inférence en temps réel. 

Vous pouvez également effectuer des jonctions entre différents FeatureGroups pour une inférence en temps réel en interrogeant deux FeatureGroups différents dans l'application cliente. 

Boutique hors ligne pour l'entraînement du modèle et l'inférence par lots

Le Feature Store fournit un stockage hors ligne pour les valeurs de fonctions dans votre compartiment S3. Les données sont stockées dans votre compartiment S3 à partir d'un schéma de préfixation basé sur l'instant d'événement. La boutique hors ligne est une boutique « append-only » (ajout seulement), ce qui permet au Feature Store de maintenir un enregistrement historique de toutes les valeurs de fonctions. Les données sont stockées dans la boutique hors ligne au format Parquet pour optimiser le stockage et l'accès aux requêtes.

Vous pouvez interroger, explorer et visualiser des fonctions à l'aide de Data Wrangler d'Amazon SageMaker Studio.  Le Feature Store prend en charge la combinaison de données pour produire, entraîner, valider et tester des jeux de données, et vous permet d'extraire des données à différents points dans le temps.

Intégration de données de fonctions

Des pipelines de génération de fonctions peuvent être créés pour traiter des lots volumineux (1 million de lignes de données ou plus) ou de petits lots, et pour écrire des données de fonctions dans la boutique hors ligne ou en ligne. Les sources de streaming telles que Amazon Managed Streaming for Apache Kafka ou Amazon Kinesis peuvent également être utilisées comme sources de données à partir desquelles les fonctions sont extraites et directement transmises à la boutique en ligne pour l'entraînement, l'inférence ou la création de fonctions. 

Vous pouvez envoyer des enregistrements au Feature Store en appelant l'appel d'API PutRecord synchrone. Comme il s'agit d'un appel d'API synchrone, vous pouvez envoyer de petits lots de mises à jour dans un seul appel d'API. Vous pouvez ainsi actualiser les valeurs de fonctions régulièrement et les publier dès qu'une mise à jour est détectée. Celles-ci sont également appelées fonctions de streaming

Lorsque les données de fonctions sont intégrées et mises à jour, le Feature Store stocke l'historique de données de toutes les fonctions de la boutique hors ligne. Pour l'intégration par lots, vous pouvez extraire des valeurs de fonctions de votre compartiment S3 ou utiliser Athena pour l'interrogation. Vous pouvez également utiliser Data Wrangler pour traiter et orchestrer de nouvelles fonctions qui peuvent ensuite être exportées vers un compartiment S3 choisi pour être accessible par le Feature Store. Pour l'ingestion de lots, vous pouvez configurer une tâche de traitement pour intégrer vos données par lots dans le Feature Store, ou vous pouvez extraire des valeurs de fonctions de votre compartiment S3 à l'aide d'Athena. 

Pour supprimer un Record de votre boutique en ligne, utilisez l'appel d'API DeleteRecord. Cela ajoutera également l'enregistrement supprimé à la boutique hors ligne.