Suppression d’enregistrements de vos groupes de caractéristiques - Amazon SageMaker AI

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Suppression d’enregistrements de vos groupes de caractéristiques

Vous pouvez utiliser l'API Amazon SageMaker Feature Store pour supprimer des enregistrements de vos groupes de fonctionnalités. Un groupe de caractéristiques est un objet qui contient vos données de machine learning (ML), dans lequel les colonnes de vos données sont décrites par des caractéristiques et vos données sont incluses dans des enregistrements. Un enregistrement contient les valeurs des caractéristiques associées à un identifiant d’enregistrement spécifique.

Il existe deux configurations de stockage pour vos groupes de caractéristiques : magasin en ligne et magasin hors ligne. Le magasin en ligne conserve uniquement l’enregistrement avec l’heure d’événement la plus récente et est généralement utilisé pour la recherche en temps réel pour l’inférence ML. Le magasin hors ligne conserve tous les enregistrements et agit comme une base de données d’historique. Il est généralement utilisé pour l’exploration des caractéristiques, l’entraînement ML et l’inférence par lots.

Pour plus d’informations sur les concepts de Feature Store, consultez Diagrammes d’ingestion.

Il existe deux manières de supprimer des enregistrements de vos groupes de caractéristiques, et le comportement varie en fonction de la configuration de stockage. Dans les rubriques suivantes, nous allons décrire comment supprimer de manière partielle ou complète des enregistrements à partir des magasins en ligne et hors ligne et nous fournirons des exemples.

Suppression d’enregistrements du magasin en ligne

Vous pouvez effectuer une suppression partielle ou complète d’un enregistrement du magasin en ligne à l’aide de l’API DeleteRecord en utilisant le paramètre de demande DeletionMode pour spécifier SoftDelete (par défaut) ou HardDelete. Pour plus d'informations sur l'DeleteRecordAPI, consultez DeleteRecordle Amazon SageMaker API Reference.

Avec le magasin en ligne :

  • Lorsque vous supprimez progressivement (par défaut), l'enregistrement n'est plus récupérable par GetRecord ou BatchGetRecord et les valeurs des colonnes d'entités sont définies surnull, à l'exception des valeurs de EventTime fonction RecordIdentifer et.

  • Lorsque vous effectuez une suppression complète, l’enregistrement est complètement supprimé du magasin en ligne.

Dans les deux cas, Feature Store ajoute le marqueur d’enregistrement supprimé à OfflineStore. Le marqueur d’enregistrement supprimé est un enregistrement doté du même RecordIdentifer que l’original, mais dont la valeur is_deleted est définie sur True, la valeur EventTime est définie sur l’entrée EventTime de suppression et les autres valeurs de caractéristiques sont définies sur null.

Notez que l’élément EventTime spécifié dans DeleteRecord doit être défini plus tard que l’élément EventTime de l’enregistrement existant dans OnlineStore pour le même élément RecordIdentifer. Si ce n’est pas le cas, la suppression n’a pas lieu :

  • Pour SoftDelete, l’enregistrement existant (non supprimé) reste dans OnlineStore, bien que le marqueur de suppression d’enregistrement soit toujours écrit dans OfflineStore.

  • HardDelete renvoie EventTime : 400 ValidationException pour indiquer que l’opération de suppression a échoué. Aucun marqueur de suppression d’enregistrement n’est écrit dans OfflineStore.

Les exemples suivants utilisent l’opération delete_record du kit SDK pour Python (Boto3) pour supprimer un enregistrement d’un groupe de caractéristiques. Pour supprimer un enregistrement d’un groupe de caractéristiques, vous devez :

  • Nom du groupe de caractéristiques (feature-group-name)

  • Valeur de l’identifiant de l’enregistrement sous forme de chaîne (record-identifier-value)

  • Heure de l’événement de suppression (deletion-event-time)

    L’heure de l’événement de suppression doit être postérieure à l’heure de l’événement que vous souhaitez supprimer.

Exemple de suppression partielle dans le magasin en ligne

Pour une suppression partielle, vous devez utiliser l’API DeleteRecord et vous pouvez utiliser l’élément DeletionMode par défaut ou définir DeletionMode sur SoftDelete.

import boto3 client = boto3.client('sagemaker-featurestore-runtime') client.delete_record( FeatureGroupName='feature-group-name', RecordIdentifierValueAsString='record-identifier-value', EventTime='deletion-event-time', TargetStores=[ 'OnlineStore', ], DeletionMode='SoftDelete' )

Exemple de suppression complète dans le magasin en ligne

Pour une suppression complète, vous devez utiliser l’API DeleteRecord et définir DeletionMode sur HardDelete.

import boto3 client = boto3.client('sagemaker-featurestore-runtime') client.delete_record( FeatureGroupName='feature-group-name', RecordIdentifierValueAsString='record-identifier-value', EventTime='deletion-event-timestamp', TargetStores=[ 'OnlineStore', ], DeletionMode='HardDelete' )

Suppression d’enregistrements du magasin hors ligne

Avec Amazon SageMaker Feature Store, vous pouvez supprimer de manière logicielle et définitive un enregistrement du format de tableau OfflineStore Iceberg. Avec le format de table OfflineStore Iceberg :

  • Lorsque vous effectuez une suppression partielle d’un enregistrement, la dernière version du fichier de table Iceberg ne contient pas l’enregistrement, mais les versions précédentes contiennent toujours l’enregistrement et sont accessibles par le biais du voyage dans le temps. Pour obtenir des informations sur le voyage dans le temps, consultez Interrogation des données de la table et exécution de Time Travel dans le Guide de l’utilisateur Athena.

  • Lorsque vous supprimez complètement un enregistrement, vous supprimez les versions précédentes de la table Iceberg qui contiennent l’enregistrement. Dans ce cas, vous devez spécifier les versions de la table Iceberg que vous souhaitez supprimer.

Obtention du nom de votre table Iceberg

Pour effectuer une suppression logicielle ou matérielle de votre table Iceberg OfflineStore, vous devez obtenir le nom de votre table Iceberg, iceberg-table-name. Les instructions suivantes supposent que vous avez déjà utilisé Feature Store pour créer un groupe de caractéristiques à l’aide de la configuration de stockage du magasin hors ligne utilisant le format de table Iceberg, avec DisableGlueTableCreation = False (par défaut). Pour en savoir plus sur la manière de créer des groupes de caractéristiques, consultez Commencez avec Amazon SageMaker Feature Store.

Pour obtenir votre iceberg-table-name, utilisez l’API DescribeFeatureGroup pour obtenir DataCatalogConfig. Elle contient les métadonnées de la table Glue qui sert de catalogue de données pour OfflineStore. L’élément TableName dans l’élément DataCatalogConfig est votre iceberg-table-name.

Exemple de suppression partielle et complète du magasin hors ligne Amazon Athena

Les instructions suivantes utilisent Amazon Athena pour supprimer partiellement puis complètement un enregistrement de la table Iceberg OfflineStore. Cela suppose que l’enregistrement que vous souhaitez supprimer dans votre OfflineStore est un marqueur d’enregistrement supprimé. Pour obtenir des informations sur le marqueur d’enregistrement supprimé dans votre OfflineStore, consultez Suppression d’enregistrements du magasin en ligne.

  1. Obtention du nom de votre table Iceberg, iceberg-table-name. Pour obtenir des informations sur la façon d’obtenir le nom de votre table Iceberg, consultez Obtention du nom de votre table Iceberg.

  2. Exécutez la commande DELETE pour supprimer partiellement les enregistrements dans OfflineStore, de telle sorte que la dernière version (ou instantané) de la table Iceberg ne contienne pas les enregistrements. L’exemple suivant supprime les enregistrements lorsque is_deleted a pour valeur 'True' ainsi que les versions précédentes de ces enregistrements au moment de l’événement. Vous pouvez ajouter des conditions supplémentaires basées sur d’autres caractéristiques pour limiter la suppression. Pour plus d’informations sur l’utilisation de DELETE avec Athena, consultez DELETE dans le Guide de l’utilisateur Athena.

    DELETE FROM iceberg-table-name WHERE record-id-feature-name IS IN ( SELECT record-id-feature-name FROM iceberg-table-name WHERE is_deleted = 'True')

    Les enregistrements supprimés partiellement peuvent toujours être consultés dans les versions précédentes des fichiers en effectuant un voyage dans le temps. Pour obtenir des informations sur la réalisation d’un voyage dans le temps, consultez Interrogation des données de la table et exécution de Time Travel dans le Guide de l’utilisateur Athena.

  3. Supprimez l’enregistrement des versions précédentes de vos tables Iceberg pour supprimer complètement l’enregistrement d’OfflineStore :

    1. Exécutez la commande OPTIMIZE pour réécrire les fichiers de données dans une disposition plus optimisée en fonction de leur taille et du nombre de fichiers de suppression associés. Pour plus d’informations sur l’optimisation des tables Iceberg et de la syntaxe, consultez Optimisation des tables Iceberg dans le Guide de l’utilisateur Athena.

      OPTIMIZE iceberg-table-name REWRITE DATA USING BIN_PACK
    2. (Facultatif, ne doit être exécuté qu’une seule fois) Exécutez la commande ALTER TABLE pour modifier les valeurs du jeu de tables Iceberg et définissez le moment où les versions précédentes des fichiers doivent être complètement supprimées conformément à vos spécifications. Cela peut être fait en affectant des valeurs aux propriétés vacuum_min_snapshots_to_keep et vacuum_max_snapshot_age_seconds. Pour plus d’informations sur la modification des propriétés de votre jeu de tables Iceberg, consultez ALTER TABLE SET PROPERTIES dans le Guide de l’utilisateur Athena. Pour plus d’informations sur les paires clé-valeur des propriétés des tables Iceberg, consultez Propriétés de table dans le Guide de l’utilisateur Athena.

      ALTER TABLE iceberg-table-name SET TBLPROPERTIES ( 'vacuum_min_snapshots_to_keep'='your-specified-value', 'vacuum_max_snapshot_age_seconds'='your-specified-value' )
    3. Exécutez la commande VACUUM pour supprimer les fichiers de données devenus inutiles pour vos tables Iceberg, non référencés par la version actuelle. La commande VACUUM doit être exécutée une fois que l’enregistrement supprimé n’est plus référencé dans l’instantané actuel. Par exemple, vacuum_max_snapshot_age_seconds après la suppression. Pour plus d’informations sur VACUUM avec Athena et la syntaxe, consultez VACUUM.

      VACUUM iceberg-table-name

Exemple de suppression partielle et complète du magasin hors ligne Amazon Spark

Pour supprimer partiellement puis complètement un enregistrement de la table OfflineStore Iceberg à l’aide d’Apache Spark, vous pouvez suivre les mêmes instructions que celles fournies dans Exemple de suppression partielle et complète du magasin hors ligne Amazon Athena ci-dessus, mais en utilisant des procédures Spark. Pour obtenir une liste complète des procédures, consultez Procédures Spark dans la documentation sur Apache Iceberg.

  • Lors d’une suppression partielle d’OfflineStore : au lieu d’utiliser la commande DELETE dans Athena, utilisez la commande DELETE FROM dans Apache Spark.

  • Pour supprimer l’enregistrement des versions précédentes de vos tables Iceberg pour supprimer complètement l’enregistrement d’OfflineStore :

    • Lorsque vous modifiez la configuration de vos tables Iceberg : au lieu d’utiliser la commande ALTER TABLE d’Athena, utilisez la procédure expire_snapshots.

    • Pour supprimer les fichiers de données devenus inutiles de vos tables Iceberg : au lieu d’utiliser la commande VACUUM dans Athena, utilisez la procédure remove_orphan_files.