Eliminazione di record da gruppi di funzionalità - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Eliminazione di record da gruppi di funzionalità

Puoi utilizzare Amazon SageMaker Feature Store API per eliminare i record dai tuoi gruppi di funzionalità. Un gruppo di funzionalità è un oggetto che contiene i dati di machine learning (ML), in cui le colonne dei dati sono descritte per funzionalità e i dati sono contenuti in record. Un record contiene valori per le funzionalità associate a un identificativo di record specifico.

Esistono due configurazioni di archiviazione per i tuoi gruppi di funzionalità: archivio online e archivio offline. L’archivio online registra solo l'ora dell'evento più recente e viene in genere utilizzato per la ricerca in tempo reale per l'inferenza ML. L'archivio offline conserva tutti i record, funge da database storico e viene in genere utilizzato per l'esplorazione delle funzionalità, l’addestramento ML e l'inferenza in batch.

Per ulteriori informazioni sui concetti del Feature Store, consulta Diagrammi di inserimento.

Esistono due modi per eliminare i record dai gruppi di funzionalità: il comportamento è diverso a seconda della configurazione di archiviazione. Nei seguenti argomenti viene descritto come eliminare automaticamente e definitivamente i record dagli archivi online e offline tramite alcuni esempi.

Eliminazione di record dall'archivio online

Puoi eliminare definitivamente o indirettamente un record dal negozio online DeleteRecord API utilizzando il parametro DeletionMode request to specific SoftDelete (impostazione predefinita) oHardDelete. Per ulteriori informazioni su DeleteRecordAPI, DeleteRecordconsulta Amazon SageMaker API Reference.

Con l'archivio online:

  • Quando si esegue la cancellazione graduale (impostazione predefinita), il record non è più recuperabile da GetRecord o BatchGetRecord e i valori delle colonne delle feature sono impostati sunull, ad eccezione dei valori RecordIdentifer and EventTime feature.

  • Quando si esegue l'eliminazione definitiva, il record viene completamente rimosso dall'archivio online.

In entrambi i casi, Feature Store aggiunge il marcatore del record eliminato a OfflineStore. Il marcatore del record eliminato è un record con RecordIdentifer uguale all'originale, ma con il valore is_deleted impostato su True, EventTime impostato sull'input di eliminazione EventTime e altri valori di funzionalità impostati su null.

Si noti che il valore EventTime specificato in DeleteRecord deve essere impostato dopo EventTime per il record esistente in OnlineStore per lo stesso RecordIdentifer. In caso contrario, l'eliminazione non avviene:

  • Per SoftDelete, il record esistente (non eliminato) rimane in OnlineStore, sebbene il marcatore del record di eliminazione sia ancora scritto in OfflineStore.

  • HardDelete restituisce EventTime: 400 ValidationException per indicare che l'operazione di eliminazione non è riuscita. Nessun marcatore di eliminazione del record viene scritto su OfflineStore.

Gli esempi seguenti utilizzano l'delete_recordoperazione SDK for Python (Boto3) per eliminare un record da un gruppo di funzionalità. Per eliminare un record da un gruppo di funzionalità, avrai bisogno dei seguenti elementi:

  • Nome del gruppo di funzionalità (feature-group-name)

  • Valore di identificazione del record come stringa (record-identifier-value)

  • Ora dell'evento di eliminazione (deletion-event-time)

    L'ora dell'evento di eliminazione deve essere successiva all'ora dell'evento del record che si desidera eliminare.

Esempio di eliminazione temporanea in un archivio online

Per la cancellazione graduale è necessario utilizzare DeleteRecord API l'impostazione predefinita DeletionMode o impostarla su. DeletionMode 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' )

Esempio di eliminazione definitiva da un archivio online

Per l'eliminazione definitiva è necessario utilizzare DeleteRecord API e impostare DeletionMode suHardDelete.

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' )

Eliminazione di record dall'archivio offline

Con Amazon SageMaker Feature Store puoi eliminare in modo semplice e automatico un record dal formato di tabella OfflineStore Iceberg. Con il formato di tabella Iceberg OfflineStore:

  • Quando si elimina automaticamente un record, l'ultima versione del file di tabella Iceberg non conterrà il record, ma le versioni precedenti conterranno comunque il record e sarà possibile accedervi utilizzando Time Travel. Per informazioni su Time Travel, consulta Interrogazione dei dati di tabella Iceberg ed esecuzione di Time Travel nella guida per l'utente di Athena.

  • Quando si elimina definitivamente un record, si rimuovono le versioni precedenti della tabella Iceberg che contengono il record. In questo caso è necessario specificare quali versioni della tabella Iceberg si desidera eliminare.

Ottenimento del nome della tabella Iceberg

Per l'eliminazione temporanea e definitiva dalla tabella Iceberg OfflineStore, è necessario ottenere il nome della tabella Iceberg iceberg-table-name. Le seguenti istruzioni presuppongono che tu abbia già utilizzato Feature Store per creare un gruppo di funzionalità utilizzando la configurazione di archiviazione dell'archivio offline utilizzando il formato di tabella Iceberg con DisableGlueTableCreation = False (impostazione predefinita). Per ulteriori informazioni sulla creazione di gruppi di funzionalità, consulta Inizia a usare Amazon SageMaker Feature Store.

Per ottenere il tuoiceberg-table-name, usa il DescribeFeatureGroupAPIper ottenere DataCatalogConfig. Contiene i metadati della tabella Glue che funge da catalogo dati per OfflineStore. TableName in DataCatalogConfig è iceberg-table-name.

Esempio di eliminazione temporanea e definitiva dell'archivio offline di Amazon Athena

Le seguenti istruzioni utilizzano Amazon Athena per l'eliminazione temporanea e definitiva di un record dalla tabella Iceberg OfflineStore. Ciò presuppone che il record che intendi eliminare in OfflineStore sia un marcatore del record eliminato. Per informazioni sul marcatore del record eliminato in OfflineStore, consulta Eliminazione di record dall'archivio online.

  1. Ottieni il nome della tabella Iceberg (iceberg-table-name). Per informazioni su come ottenere il nome della tabella Iceberg, consulta Ottenimento del nome della tabella Iceberg.

  2. Esegui il comando DELETE per eliminare gradualmente i record presenti in OfflineStore, in modo che l'ultima versione (o istantanea) della tabella Iceberg non contenga i record. L'esempio seguente elimina i record in cui is_deleted è 'True' e le precedenti versioni dell’ora dell’evento di tali record. È possibile aggiungere condizioni aggiuntive basate su altre funzionalità per limitare l'eliminazione. Per ulteriori informazioni sull'utilizzo di DELETE con Athena, consulta DELETEnella guida per l'utente di 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')

    I record eliminati temporaneamente sono ancora visibili nelle versioni precedenti dei file eseguendo Time Travel. Per informazioni sull’esecuzione di Time Travel, consulta Interrogazione dei dati di tabella Iceberg ed esecuzione di Time Travel nella guida per l'utente di Athena.

  3. Rimuovi il record dalle versioni precedenti delle tabelle Iceberg per eliminarlo definitivamente da OfflineStore;

    1. Il comando OPTIMIZE riscrive i file di dati in un layout ottimizzato in base alle dimensioni e al numero di file di eliminazione associati. Per ulteriori informazioni sull'ottimizzazione delle tabelle Iceberg e sulla sintassi, consulta Ottimizzazione delle tabelle Iceberg nella guida per l'utente di Athena.

      OPTIMIZE iceberg-table-name REWRITE DATA USING BIN_PACK
    2. (Operazione facoltativa: deve essere eseguita solo una volta) Esegui il comando ALTER TABLE per modificare i valori del set di tabelle Iceberg e scegli quando le versioni precedenti dei file devono essere eliminate definitivamente in base alle tue specifiche. L’operazione può essere svolta assegnando valori alle proprietà vacuum_min_snapshots_to_keep e vacuum_max_snapshot_age_seconds. Per ulteriori informazioni sulla modifica delle proprietà del set di tabelle Iceberg, consulta la guida per l'utente ALTERTABLESETPROPERTIESdi Athena. Per ulteriori informazioni sulle coppie chiave-valore delle proprietà della tabella, consulta Proprietà delle tabelle nella guida per l'utente di 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. Esegui il comando VACUUM per rimuovere i file di dati non più necessari per le tue tabelle Iceberg, a cui non fa riferimento la versione corrente. Il comando VACUUM dovrebbe essere eseguito dopo che il record eliminato non è più referenziato nell'istantanea corrente. Ad esempio, vacuum_max_snapshot_age_seconds dopo l'eliminazione. Per ulteriori informazioni su VACUUM con Athena e sulla sintassi, consulta VACUUM.

      VACUUM iceberg-table-name

Esempio di eliminazione temporanea e definitiva dell'archivio offline di Apache Spark

Per eliminare temporaneamente e, in seguito, definitivamente un record dalla tabella Iceberg OfflineStore utilizzando Apache Spark, puoi seguire le stesse istruzioni riportate in Esempio di eliminazione temporanea e definitiva dell'archivio offline di Amazon Athena di cui sopra, ma utilizzando le procedure Spark. Per un elenco completo delle procedure, consulta Procedure Spark nella documentazione di Apache Iceberg.

  • Quando si esegue un'eliminazione temporanea da OfflineStore: anziché utilizzare il comando DELETE in Athena, usa il comando DELETE FROM in Apache Spark.

  • Rimuovi il record dalle versioni precedenti delle tabelle Iceberg per eliminarlo definitivamente da OfflineStore:

    • Quando modifichi la configurazione della tabella Iceberg: invece di usare il comando ALTER TABLE di Athena, usa la procedura expire_snapshots.

    • Per rimuovere i file di dati non più necessari dalle tabelle Iceberg: invece di usare il comando VACUUM in Athena, attieniti alla procedura remove_orphan_files.