Velocizza lo sviluppo ML utilizzando SageMaker Feature Store e la compattazione del negozio offline Apache Iceberg PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Velocizza lo sviluppo ML utilizzando SageMaker Feature Store e la compattazione del negozio offline di Apache Iceberg

Oggi, le aziende stanno creando negozi di funzionalità per fornire un repository centrale per scalare lo sviluppo ML tra unità aziendali e team di data science. Man mano che i dati delle funzionalità crescono in dimensioni e complessità, i data scientist devono essere in grado di interrogare in modo efficiente questi archivi di funzionalità per estrarre set di dati per la sperimentazione, l'addestramento del modello e il punteggio batch.

Negozio di funzionalità Amazon SageMaker è una soluzione di gestione delle funzionalità appositamente creata che aiuta i data scientist e gli ingegneri ML a archiviare, scoprire e condividere in modo sicuro i dati curati utilizzati nei flussi di lavoro di addestramento e previsione. SageMaker Feature Store ora supporta Apache Iceberg come formato di tabella per la memorizzazione di funzioni. Ciò accelera lo sviluppo del modello consentendo prestazioni di query più rapide durante l'estrazione di set di dati di addestramento ML, sfruttando la compattazione della tabella Iceberg. A seconda della progettazione dei gruppi di funzionalità e della relativa scala, puoi sperimentare miglioramenti delle prestazioni delle query di addestramento da 10x a 100x utilizzando questa nuova funzionalità.

Alla fine di questo post, saprai come creare gruppi di funzionalità utilizzando il formato Iceberg, eseguire le procedure di gestione delle tabelle di Iceberg utilizzando Amazzone Atenae pianifica l'esecuzione autonoma di queste attività. Se sei un utente Spark, imparerai anche come eseguire le stesse procedure utilizzando Spark e incorporarle nel tuo ambiente e automazione Spark.

SageMaker Feature Store e Apache Iceberg

Negozio di funzionalità Amazon SageMaker è un archivio centralizzato per le funzionalità e i metadati associati, che consente alle funzionalità di essere facilmente scoperte e riutilizzate dai team di data scientist che lavorano su diversi progetti o modelli ML.

SageMaker Feature Store è costituito da una modalità online e una offline per la gestione delle funzionalità. Il negozio online viene utilizzato per casi d'uso di inferenza in tempo reale a bassa latenza. L'archivio offline viene utilizzato principalmente per le previsioni in batch e l'addestramento del modello. L'archivio offline è un archivio di sola aggiunta e può essere utilizzato per archiviare e accedere ai dati cronologici delle caratteristiche. Con l'archivio offline, gli utenti possono archiviare e fornire funzionalità per l'esplorazione e il punteggio batch ed estrarre set di dati corretti point-in-time per l'addestramento del modello.

I dati del negozio offline vengono archiviati in un bucket Amazon Simple Storage Service (Amazon S3) nel tuo account AWS. SageMaker Feature Store crea automaticamente un Catalogo dati di AWS Glue durante la creazione del gruppo di funzionalità. I clienti possono anche accedere ai dati del negozio offline utilizzando un runtime Spark ed eseguire l'elaborazione di big data per l'analisi delle funzionalità ML e i casi d'uso di ingegneria delle funzionalità.

I formati tabella forniscono un modo per astrarre i file di dati come una tabella. Nel corso degli anni, sono emersi molti formati di tabella per supportare casi d'uso di transazioni, governance e cataloghi ACID. Apache Iceberg è un formato di tabella aperto per insiemi di dati analitici molto grandi. Gestisce grandi raccolte di file come tabelle e supporta moderne operazioni di data lake analitiche come inserimento a livello di record, aggiornamento, eliminazione e query di viaggio nel tempo. Iceberg tiene traccia dei singoli file di dati in una tabella anziché nelle directory. Ciò consente agli scrittori di creare file di dati sul posto (i file non vengono spostati o modificati) e di aggiungere solo file alla tabella in un commit esplicito. Lo stato della tabella viene mantenuto nei file di metadati. Tutte le modifiche allo stato della tabella creano una nuova versione del file di metadati che sostituisce atomicamente i metadati precedenti. Il file di metadati della tabella tiene traccia dello schema della tabella, della configurazione del partizionamento e di altre proprietà.

Iceberg ha integrazioni con i servizi AWS. Ad esempio, puoi utilizzare il Colla AWS Data Catalog come metastore per le tabelle Iceberg e Athena supporta le query di lettura, viaggio nel tempo, scrittura e DDL per le tabelle Apache Iceberg che utilizzano il formato Apache Parquet per i dati e il catalogo AWS Glue per il loro metastore.

Con SageMaker Feature Store, ora puoi creare gruppi di funzionalità con il formato tabella Iceberg come alternativa al formato Glue standard predefinito. Con ciò, i clienti possono sfruttare il nuovo formato di tabella per utilizzare le funzionalità di compattazione dei file e eliminazione dei dati di Iceberg per soddisfare i loro casi d'uso e i requisiti di ottimizzazione. Iceberg consente inoltre ai clienti di eseguire operazioni di cancellazione, query sui viaggi nel tempo, transazioni ad alta concorrenza e query a prestazioni più elevate.

Combinando Iceberg come formato di tabella e operazioni di manutenzione della tabella come la compattazione, i clienti ottengono prestazioni di query più veloci quando lavorano con gruppi di funzionalità offline su larga scala, consentendo loro di creare più rapidamente set di dati di addestramento ML.

Il diagramma seguente mostra la struttura del negozio offline utilizzando Iceberg come formato di tabella.

Nelle sezioni successive imparerai come creare gruppi di funzionalità utilizzando il formato Iceberg, eseguire le procedure di gestione delle tabelle di Iceberg utilizzando AWS Athena e utilizzare i servizi AWS per pianificare queste attività in modo che vengano eseguite su richiesta o in base a una pianificazione. Se sei un utente Spark, imparerai anche come eseguire le stesse procedure utilizzando Spark.

Per istruzioni dettagliate, forniamo anche a taccuino di esempio, disponibile in GitHub. In questo post, evidenzieremo le parti più importanti.

Creazione di gruppi di funzionalità utilizzando il formato tabella Iceberg

Devi prima selezionare Iceberg come formato tabella quando crei nuovi gruppi di caratteristiche. Un nuovo parametro facoltativo TableFormat può essere impostato in modo interattivo utilizzando Amazon SageMaker Studio o tramite codice utilizzando l'API o l'SDK. Questo parametro accetta i valori ICEBERG or GLUE (per il formato AWS Glue corrente). Il seguente frammento di codice mostra come creare un gruppo di caratteristiche utilizzando il formato Iceberg e FeatureGroup.create API dell'SDK SageMaker.

orders_feature_group_iceberg.create(
s3_uri=f"s3://{s3_bucket_name}/{prefix}",
record_identifier_name=record_identifier_feature_name,
event_time_feature_name=event_time_feature_name,
role_arn=role,
enable_online_store=True,
table_format=TableFormatEnum.ICEBERG
)

La tabella verrà creata e registrata automaticamente nel catalogo dati di AWS Glue.

Ora che il orders_feature_group_iceberg è stato creato, puoi importare funzionalità utilizzando la tua pipeline di importazione preferita. In questo esempio, ingeriamo i record utilizzando l'estensione FeatureGroup.ingest() API, che inserisce i record da un DataFrame Pandas. Puoi anche usare il FeatureGroup().put_record API per importare singoli record o per gestire sorgenti di streaming. Gli utenti Spark possono anche importare frame di dati Spark utilizzando il nostro Connettore a scintilla.

orders_fg = FeatureGroup(name=orders_feature_group_iceberg_name,
sagemaker_session=feature_store_session)
orders_fg.ingest(data_frame=order_data, wait=True)

Puoi verificare che i record siano stati inseriti correttamente eseguendo una query sull'archivio delle funzionalità offline. Puoi anche navigare fino alla posizione S3 e vedere la nuova struttura delle cartelle.

Velocizza lo sviluppo ML utilizzando SageMaker Feature Store e la compattazione del negozio offline Apache Iceberg PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Esecuzione delle procedure di gestione delle tabelle Iceberg

Amazzone Atena è un motore di query SQL serverless che supporta nativamente le procedure di gestione di Iceberg. In questa sezione utilizzerai Athena per compattare manualmente il gruppo di funzionalità offline che hai creato. Nota che dovrai utilizzare la versione 3 del motore Athena. Per questo, puoi creare un nuovo gruppo di lavoro o configurare un gruppo di lavoro esistente e selezionare la versione 3 del motore Athena consigliata. Per ulteriori informazioni e istruzioni per modificare la versione del tuo motore Athena, fai riferimento a Modifica delle versioni del motore Athena.

Man mano che i dati si accumulano in una tabella Iceberg, le query possono diventare gradualmente meno efficienti a causa dell'aumento del tempo di elaborazione necessario per aprire file aggiuntivi. La compattazione ottimizza il layout strutturale del tavolo senza alterarne il contenuto.

Per eseguire la compattazione, si utilizza il OPTIMIZE table REWRITE DATA comando di manutenzione della tavola di compattazione in Athena. La sintassi seguente mostra come ottimizzare il layout dei dati di un gruppo di caratteristiche archiviato utilizzando il formato della tabella Iceberg. Il sagemaker_featurestore rappresenta il nome del database SageMaker Feature Store e orders-feature-group-iceberg-post-comp-03-14-05-17-1670076334 è il nome della nostra tabella del gruppo di funzionalità.

OPTIMIZE sagemaker_featurestore.orders-feature-group-iceberg-post-comp-03-14-05-17-1670076334 REWRITE DATA USING BIN_PACK

Dopo aver eseguito il comando optimize, si utilizza il file VACUUM procedura, che esegue la scadenza dello snapshot e rimuove i file orfani. Queste azioni riducono le dimensioni dei metadati e rimuovono i file che non si trovano nello stato corrente della tabella e sono anche precedenti al periodo di conservazione specificato per la tabella.

VACUUM sagemaker_featurestore.orders-feature-group-iceberg-post-comp-03-14-05-17-1670076334

Si noti che le proprietà della tabella sono configurabili utilizzando quelle di Athena ALTER TABLE. Per un esempio di come eseguire questa operazione, vedere il file Documentazione Atena. Per VUOTO, vacuum_min_snapshots_to_keep ed vacuum_max_snapshot_age_seconds può essere utilizzato per configurare i parametri di sfoltimento dell'istantanea.

Diamo un'occhiata all'impatto sulle prestazioni dell'esecuzione della compattazione su una tabella di gruppo di funzionalità di esempio. A scopo di test, abbiamo importato gli stessi record di funzionalità degli ordini in due gruppi di funzionalità, orders-feature-group-iceberg-pre-comp-02-11-03-06-1669979003 ed orders-feature-group-iceberg-post-comp-03-14-05-17-1670076334, utilizzando un processo di elaborazione parallelizzato di SageMaker con Scikit-Learn, che risulta in 49,908,135 oggetti archiviati in Amazon S3 e una dimensione totale di 106.5 GiB.

Eseguiamo una query per selezionare l'istantanea più recente senza duplicati e senza record eliminati nel gruppo di funzionalità orders-feature-group-iceberg-pre-comp-02-11-03-06-1669979003. Prima della compattazione, la query richiedeva 1 ora e 27 minuti.

Velocizza lo sviluppo ML utilizzando SageMaker Feature Store e la compattazione del negozio offline Apache Iceberg PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Quindi eseguiamo la compattazione orders-feature-group-iceberg-post-comp-03-14-05-17-1670076334 utilizzando la query Athena OPTIMIZE, che ha compattato la tabella del gruppo di caratteristiche a 109,851 oggetti in Amazon S3 e una dimensione totale di 2.5 GiB. Se quindi eseguiamo la stessa query dopo la compattazione, il suo tempo di esecuzione è sceso a 1 minuto e 13 secondi.

Velocizza lo sviluppo ML utilizzando SageMaker Feature Store e la compattazione del negozio offline Apache Iceberg PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Con la compattazione del file Iceberg, il tempo di esecuzione della query è migliorato in modo significativo. Per la stessa query, il tempo di esecuzione è diminuito da 1 ora e 27 minuti a 1 minuto e 13 secondi, ovvero 71 volte più veloce.

Pianificazione della compattazione dell'iceberg con i servizi AWS

In questa sezione imparerai come automatizzare le procedure di gestione delle tabelle per compattare il tuo feature store offline. Il diagramma seguente illustra l'architettura per la creazione di gruppi di funzionalità nel formato di tabella Iceberg e una soluzione di gestione delle tabelle completamente automatizzata, che include operazioni di compattazione e pulizia dei file.

Velocizza lo sviluppo ML utilizzando SageMaker Feature Store e la compattazione del negozio offline Apache Iceberg PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Ad alto livello, crei un gruppo di funzionalità utilizzando il formato della tabella Iceberg e inserisci i record nell'archivio delle funzionalità online. I valori delle funzionalità vengono replicati automaticamente dal negozio online al negozio storico offline. Athena viene utilizzata per eseguire le procedure di gestione dell'Iceberg. Per programmare le procedure, si imposta un Colla AWS lavoro utilizzando uno script della shell Python e creare una pianificazione del lavoro AWS Glue.

Configurazione del lavoro di AWS Glue

Puoi utilizzare un processo AWS Glue per eseguire le operazioni di manutenzione della tabella Iceberg in base a una pianificazione. Innanzitutto, devi creare un ruolo IAM affinché AWS Glue disponga delle autorizzazioni per accedere ad Amazon Athena, Amazon S3 e CloudWatch.

Successivamente, è necessario creare uno script Python per eseguire le procedure Iceberg. Puoi trovare il copione di esempio su GitHub. Lo script eseguirà la query OPTIMIZE utilizzando boto3.

optimize_sql = f"optimize {database}.{table} rewrite data using bin_pack"

Lo script è stato parametrizzato utilizzando AWS Glue getResolvedOptions(args, options) funzione di utilità che consente di accedere agli argomenti passati allo script quando si esegue un lavoro. In questo esempio, la regione AWS, il database e la tabella Iceberg per il tuo gruppo di funzionalità, il gruppo di lavoro Athena e la cartella dei risultati della posizione di output Athena possono essere passati come parametri al lavoro, rendendo questo script riutilizzabile nel tuo ambiente.

Infine, crei l'effettivo processo AWS Glue per eseguire lo script come shell in AWS Glue.

  • Passa alla console AWS Glue.
  • Scegliere il Offerte di lavoro scheda in AWS Glue Studio.
  • Seleziona Editor di script Python Shell.
  • Scegli Carica e modifica uno script esistente. Clic Creare.
  • Il Dettagli di lavoro pulsante consente di configurare il processo AWS Glue. Devi selezionare il ruolo IAM che hai creato in precedenza. Selezionare Python 3.9 o l'ultima versione di Python disponibile.
  • Nella stessa scheda è inoltre possibile definire una serie di altre opzioni di configurazione, ad esempio Numero di tentativi or Timeout del lavoro. in Proprietà avanzate, puoi aggiungere i parametri del lavoro per eseguire lo script, come mostrato nello screenshot di esempio qui sotto.
  • Clicchi Risparmi.

Velocizza lo sviluppo ML utilizzando SageMaker Feature Store e la compattazione del negozio offline Apache Iceberg PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Nel Orari scheda, è possibile definire la pianificazione per eseguire le procedure di manutenzione del feature store. Ad esempio, lo screenshot seguente mostra come eseguire il lavoro con una pianificazione ogni 6 ore.

Velocizza lo sviluppo ML utilizzando SageMaker Feature Store e la compattazione del negozio offline Apache Iceberg PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

È possibile monitorare le esecuzioni dei processi per comprendere le metriche di runtime come lo stato di completamento, la durata e l'ora di inizio. Puoi anche controllare CloudWatch Logs per il lavoro AWS Glue per verificare che le procedure vengano eseguite correttamente.

Velocizza lo sviluppo ML utilizzando SageMaker Feature Store e la compattazione del negozio offline Apache Iceberg PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Esecuzione di attività di gestione della tabella Iceberg con Spark

I clienti possono anche utilizzare Spark per gestire i lavori di compattazione e i metodi di manutenzione. Per maggiori dettagli sulle procedure Spark, vedere il Documentazione Spark.

Devi prima configurare alcune delle proprietà comuni.

%%configure -f
{
  "conf": {
    "spark.sql.catalog.smfs": "org.apache.iceberg.spark.SparkCatalog",
    "spark.sql.catalog.smfs.catalog-impl": "org.apache.iceberg.aws.glue.GlueCatalog",
    "spark.sql.catalog.smfs.warehouse": "",
    "spark.sql.extensions":"org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
    "spark.sql.catalog.smfs.glue.skip-name-validation": "true"
  }
}

Il codice seguente può essere usato per ottimizzare i gruppi di funzionalità tramite Spark.

spark.sql(f"""CALL smfs.system.rewrite_data_files(table => '{DATABASE}.`{ICEBERG_TABLE}`')""")

È quindi possibile eseguire le successive due procedure di manutenzione della tabella per rimuovere gli snapshot meno recenti ei file orfani che non sono più necessari.

spark.sql(f"""CALL smfs.system.expire_snapshots(table => '{DATABASE}.`{ICEBERG_TABLE}`', older_than => TIMESTAMP '{one_day_ago}', retain_last => 1)""")
spark.sql(f"""CALL smfs.system.remove_orphan_files(table => '{DATABASE}.`{ICEBERG_TABLE}`')""")

Puoi quindi incorporare i comandi Spark precedenti nel tuo ambiente Spark. Ad esempio, puoi creare un lavoro che esegue l'ottimizzazione sopra in base a una pianificazione desiderata o in una pipeline dopo l'importazione.

Per esplorare l'esempio di codice completo e provarlo nel proprio account, vedere il Repository GitHub.

Conclusione

SageMaker Feature Store offre una soluzione di gestione delle funzionalità appositamente creata per aiutare le organizzazioni a scalare lo sviluppo ML tra i team di data science. In questo post, abbiamo spiegato come sfruttare Apache Iceberg come formato di tabella e operazioni di manutenzione della tabella come la compattazione per beneficiare di query significativamente più veloci quando si lavora con gruppi di funzionalità offline su larga scala e, di conseguenza, creare set di dati di addestramento più velocemente. Provalo e facci sapere cosa ne pensi nei commenti.


Circa gli autori

Velocizza lo sviluppo ML utilizzando SageMaker Feature Store e la compattazione del negozio offline Apache Iceberg PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Arnaud Lauer è Senior Partner Solutions Architect nel team del settore pubblico presso AWS. Consente a partner e clienti di capire come utilizzare al meglio le tecnologie AWS per tradurre le esigenze aziendali in soluzioni. Vanta oltre 17 anni di esperienza nella realizzazione e progettazione di progetti di trasformazione digitale in una vasta gamma di settori, tra cui il settore pubblico, l'energia e i beni di consumo. Arnaud detiene 12 certificazioni AWS, inclusa la certificazione di specialità ML.

Velocizza lo sviluppo ML utilizzando SageMaker Feature Store e la compattazione del negozio offline Apache Iceberg PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Ioan Catana è un architetto specializzato in soluzioni di intelligenza artificiale e machine learning presso AWS. Aiuta i clienti a sviluppare e scalare le loro soluzioni ML nel cloud AWS. Ioan ha oltre 20 anni di esperienza principalmente nella progettazione di architetture software e nell'ingegneria del cloud.

Velocizza lo sviluppo ML utilizzando SageMaker Feature Store e la compattazione del negozio offline Apache Iceberg PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Marco Roy è un Principal Machine Learning Architect per AWS, che aiuta i clienti a progettare e realizzare soluzioni AI / ML. Il lavoro di Mark copre un'ampia gamma di casi d'uso del ML, con un interesse primario per la visione artificiale, il deep learning e la scalabilità del ML in tutta l'azienda. Ha aiutato aziende in molti settori, tra cui assicurazioni, servizi finanziari, media e intrattenimento, sanità, servizi pubblici e produzione. Mark detiene sei certificazioni AWS, inclusa la certificazione di specialità ML. Prima di entrare in AWS, Mark è stato architetto, sviluppatore e leader tecnologico per oltre 25 anni, di cui 19 nei servizi finanziari.

Velocizza lo sviluppo ML utilizzando SageMaker Feature Store e la compattazione del negozio offline Apache Iceberg PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Brandon Chatham è un ingegnere informatico del team SageMaker Feature Store. È profondamente appassionato di creare sistemi eleganti che mettono i big data e l'apprendimento automatico a portata di mano delle persone.

Timestamp:

Di più da Apprendimento automatico di AWS