Accelerare il tempo per ottenere informazioni aziendali con la connessione diretta di Amazon SageMaker Data Wrangler a Snowflake
Speed up obtaining business information with direct connection of Amazon SageMaker Data Wrangler to Snowflake.
Amazon SageMaker Data Wrangler è un’interfaccia visuale singola che riduce il tempo necessario per preparare i dati e svolgere l’ingegneria delle funzionalità da settimane a pochi minuti, con la capacità di selezionare e pulire i dati, creare funzionalità e automatizzare la preparazione dei dati nei flussi di lavoro di machine learning (ML) senza scrivere alcun codice.
SageMaker Data Wrangler supporta Snowflake, una fonte di dati popolare per gli utenti che desiderano svolgere il ML. Lanciamo la connessione diretta Snowflake da SageMaker Data Wrangler per migliorare l’esperienza del cliente. Prima del lancio di questa funzione, era necessario che gli amministratori impostassero l’integrazione di archiviazione iniziale per connettersi a Snowflake e creare funzionalità per ML in Data Wrangler. Ciò include la fornitura di bucket Amazon Simple Storage Service (Amazon S3), le autorizzazioni di accesso AWS Identity and Access Management (IAM), l’integrazione di archiviazione Snowflake per singoli utenti e un meccanismo continuo per gestire o pulire le copie dei dati in Amazon S3. Questo processo non è scalabile per i clienti con un controllo rigoroso dell’accesso ai dati e un grande numero di utenti.
In questo post, mostriamo come la connessione diretta di Snowflake in SageMaker Data Wrangler semplifica l’esperienza dell’amministratore e il percorso ML dello scienziato dei dati dai dati alle intuizioni aziendali.
Panoramica della soluzione
In questa soluzione, utilizziamo SageMaker Data Wrangler per accelerare la preparazione dei dati per il ML e Amazon SageMaker Autopilot per creare, addestrare e ottimizzare automaticamente i modelli ML in base ai dati. Entrambi i servizi sono progettati specificamente per aumentare la produttività e accorciare il tempo per ottenere valore per i professionisti del ML. Dimostriamo anche l’accesso semplificato ai dati da SageMaker Data Wrangler a Snowflake con una connessione diretta per interrogare e creare funzionalità per ML.
- Atlante della letteratura biomedica potrebbe aiutare a rintracciare gli studi falsificati.
- Gestione delle dipendenze Python quale strumento scegliere?
- Plugin Notable Il Plugin ChatGPT Che Automatizza L’Analisi Dei Dati.
Fare riferimento al diagramma qui sotto per una panoramica del processo di ML a basso codice con Snowflake, SageMaker Data Wrangler e SageMaker Autopilot.
Il flusso di lavoro include i seguenti passaggi:
- Navigare in SageMaker Data Wrangler per le attività di preparazione dati e ingegneria delle funzionalità.
- Impostare la connessione Snowflake con SageMaker Data Wrangler.
- Esplorare le tabelle Snowflake in SageMaker Data Wrangler, creare un set di dati ML e svolgere l’ingegneria delle funzionalità.
- Addestrare e testare i modelli utilizzando SageMaker Data Wrangler e SageMaker Autopilot.
- Caricare il miglior modello in un endpoint di inferenza in tempo reale per le previsioni.
- Utilizzare un notebook Python per invocare l’endpoint di inferenza in tempo reale lanciato.
Prerequisiti
Per questo post, l’amministratore ha bisogno dei seguenti prerequisiti:
- Un utente Snowflake con autorizzazione di amministratore per creare un magazzino virtuale Snowflake, un utente e un ruolo e concedere l’accesso a questo utente per creare un database. Per ulteriori dettagli sulla configurazione dell’amministrazione, fare riferimento a Importare i dati da Snowflake.
- Un account AWS con accesso di amministratore.
- Un account Snowflake Enterprise nella tua regione AWS preferita con accesso
ACCOUNTADMIN
. - Facoltativamente, se si utilizza l’accesso Snowflake OAuth in SageMaker Data Wrangler, fare riferimento a Importare i dati da Snowflake per configurare un provider di identità OAuth.
- Familiarità con Snowflake, SQL di base, l’interfaccia utente Snowsight e gli oggetti Snowflake.
Gli scienziati dei dati dovrebbero avere i seguenti prerequisiti
- Accesso ad Amazon SageMaker, un’istanza di Amazon SageMaker Studio e un utente per SageMaker Studio. Per ulteriori informazioni sui prerequisiti, vedere Iniziare con Data Wrangler.
- Familiarità con i servizi AWS, la rete e la console di gestione AWS. Conoscenza di base di Python, i notebook Jupyter e ML.
Infine, dovresti preparare i tuoi dati per Snowflake
- Utilizziamo i dati delle transazioni con carta di credito da Kaggle per costruire modelli ML per rilevare transazioni fraudolente con carte di credito, in modo che i clienti non vengano addebitati per articoli che non hanno acquistato. Il dataset include le transazioni con carta di credito nel settembre 2013 effettuate da titolari di carte europei.
- Dovresti utilizzare il client SnowSQL e installarlo nella tua macchina locale, in modo da poterlo utilizzare per caricare il dataset in una tabella Snowflake.
I seguenti passaggi mostrano come preparare e caricare il dataset nel database Snowflake. Questa è una configurazione una tantum.
Preparazione dei dati e della tabella Snowflake
Completa i seguenti passaggi per la configurazione una tantum:
-
Prima di tutto, come amministratore, crea un warehouse virtuale Snowflake, un utente e un ruolo e concedi l’accesso ad altri utenti come i data scientist per creare un database e stage per i loro casi d’uso di ML:
-- Usa il ruolo SECURITYADMIN per creare Ruolo e Utente USE ROLE SECURITYADMIN; -- Crea un nuovo ruolo 'ML Role' CREATE OR REPLACE ROLE ML_ROLE COMMENT='ML Role'; GRANT ROLE ML_ROLE TO ROLE SYSADMIN; -- Crea un nuovo utente e password e concedi il ruolo all'utente CREATE OR REPLACE USER ML_USER PASSWORD='<REPLACE_PASSWORD>' DEFAULT_ROLE=ML_ROLE DEFAULT_WAREHOUSE=ML_WH DEFAULT_NAMESPACE=ML_WORKSHOP.PUBLIC COMMENT='ML User'; GRANT ROLE ML_ROLE TO USER ML_USER; -- Concedi i privilegi al ruolo USE ROLE ACCOUNTADMIN; GRANT CREATE DATABASE ON ACCOUNT TO ROLE ML_ROLE; --Crea il Warehouse per il lavoro di AI/ML USE ROLE SYSADMIN; CREATE OR REPLACE WAREHOUSE ML_WH WITH WAREHOUSE_SIZE = 'XSMALL' AUTO_SUSPEND = 120 AUTO_RESUME = true INITIALLY_SUSPENDED = TRUE; GRANT ALL ON WAREHOUSE ML_WH TO ROLE ML_ROLE;
-
Come data scientist, creiamo ora un database e importiamo le transazioni con carta di credito nel database Snowflake per accedere ai dati da SageMaker Data Wrangler. A scopo illustrativo, creiamo un database Snowflake chiamato
SF_FIN_TRANSACTION
:-- Seleziona il ruolo e il warehouse USE ROLE ML_ROLE; USE WAREHOUSE ML_WH; -- Crea il DB per importare le transazioni finanziarie CREATE DATABASE IF NOT EXISTS sf_fin_transaction; -- Crea il formato file CSV create or replace file format my_csv_format type = csv field_delimiter = ',' skip_header = 1 null_if = ('NULL', 'null') empty_field_as_null = true compression = gzip;
-
Scarica il file CSV del dataset sul tuo computer e crea uno stage per caricare i dati nella tabella del database. Aggiorna il percorso del file per puntare alla posizione del dataset scaricato prima di eseguire il comando PUT per l’importazione dei dati nello stage creato:
-- Crea uno stage interno denominato Snowflake per archiviare il file csv delle transazioni CREATE OR REPLACE STAGE my_stage FILE_FORMAT = my_csv_format; -- Importa il file nello stage -- Questo comando deve essere eseguito dal client SnowSQL e non sulla UI Web PUT file:///Users/*******/Downloads/creditcard.csv @my_stage; -- Verifica se l'importazione è stata eseguita con successo LIST @my_stage;
-
Crea una tabella denominata
credit_card_transactions
:-- Crea la tabella e definisci le colonne mappate al file delle transazioni csv create or replace table credit_card_transaction ( Time integer, V1 float, V2 float, V3 float, V4 float, V5 float, V6 float, V7 float, V8 float, V9 float, V10 float,V11 float,V12 float, V13 float,V14 float,V15 float, V16 float,V17 float,V18 float, V19 float,V20 float,V21 float, V22 float,V23 float,V24 float, V25 float,V26 float,V27 float, V28 float,Amount float, Class varchar(5) );
-
Importa i dati nella tabella creata dallo stage:
-- Importa le transazioni in una nuova tabella chiamata 'credit_card_transaction' copy into credit_card_transaction from @my_stage ON_ERROR = CONTINUE; -- Verifica se la tabella è stata creata con successo select * from credit_card_transaction limit 100;
Configura la connessione SageMaker Data Wrangler e Snowflake
Dopo aver preparato il dataset per l’uso con SageMaker Data Wrangler, creiamo una nuova connessione Snowflake in SageMaker Data Wrangler per connettersi al database sf_fin_transaction
in Snowflake e interrogare la tabella credit_card_transaction
:
- Scegli Snowflake nella pagina Connessione di SageMaker Data Wrangler.
- Fornisci un nome per identificare la tua connessione.
- Seleziona il metodo di autenticazione per connetterti al database Snowflake:
- Se si utilizza l’autenticazione di base, fornisci il nome utente e la password condivisi dal tuo amministratore Snowflake. Per questo post, utilizziamo l’autenticazione di base per connetterci a Snowflake utilizzando le credenziali utente create nel passaggio precedente.
- Se si utilizza OAuth, fornisci le credenziali del tuo provider di identità.
SageMaker Data Wrangler di default interroga i dati direttamente da Snowflake senza creare alcuna copia dei dati nei bucket S3. La nuova funzionalità di usabilità di SageMaker Data Wrangler utilizza Apache Spark per integrarsi con Snowflake, preparare e creare senza soluzione di continuità un dataset per il tuo viaggio di ML.
Fino ad ora, abbiamo creato il database su Snowflake, importato il file CSV nella tabella Snowflake, creato le credenziali Snowflake e creato un connettore su SageMaker Data Wrangler per connettersi a Snowflake. Per convalidare la connessione Snowflake configurata, eseguire la seguente query sulla tabella Snowflake creata:
select * from credit_card_transaction;
Si noti che l’opzione di integrazione di archiviazione che era richiesta in precedenza è ora facoltativa nelle impostazioni avanzate.
Esplora i dati di Snowflake
Dopo aver convalidato i risultati della query, scegli Importa per salvare i risultati della query come dataset. Utilizziamo questo dataset estratto per l’analisi esplorativa dei dati e l’engineering delle caratteristiche.
È possibile scegliere di campionare i dati da Snowflake nell’interfaccia utente di SageMaker Data Wrangler. Un’altra opzione consiste nel scaricare i dati completi per i casi di utilizzo di formazione del modello ML utilizzando i job di elaborazione di SageMaker Data Wrangler.
Effettuare l’analisi esplorativa dei dati in SageMaker Data Wrangler
I dati all’interno di Data Wrangler devono essere elaborati prima di poter essere addestrati. In questa sezione, mostriamo come effettuare l’engineering delle caratteristiche sui dati provenienti da Snowflake utilizzando le capacità integrate di SageMaker Data Wrangler.
Per prima cosa, utilizziamo la funzione Report sulla qualità e sull'analisi dei dati
all’interno di SageMaker Data Wrangler per generare report per verificare automaticamente la qualità dei dati e rilevare anomalie nei dati provenienti da Snowflake.
Puoi utilizzare il report per aiutarti a pulire e elaborare i tuoi dati. Ti fornisce informazioni come il numero di valori mancanti e il numero di outlier. Se hai problemi con i tuoi dati, come perdita o squilibrio del target, il report delle informazioni può attirare la tua attenzione su questi problemi. Per comprendere i dettagli del report, fare riferimento a Accelerare la preparazione dei dati con la qualità dei dati e le informazioni in Amazon SageMaker Data Wrangler.
Dopo aver verificato la corrispondenza dei tipi di dati applicata da SageMaker Data Wrangler, completare i seguenti passaggi:
- Scegli il segno più accanto a Tipi di dati e scegli Aggiungi analisi .
- Per Tipo di analisi , scegli Report sulla qualità e sull’analisi dei dati .
- Scegli Crea .
- Fare riferimento ai dettagli del report sulla qualità dei dati e sull’analisi per verificare le avvertenze ad alta priorità.
Puoi scegliere di risolvere i warning segnalati prima di procedere con il tuo percorso di ML.
La colonna target Class
da prevedere è classificata come stringa. Prima, applichiamo una trasformazione per rimuovere i caratteri vuoti obsoleti.
- Scegli Aggiungi passaggio e scegli Formato stringa.
- Nella lista delle trasformazioni, scegli Strip sinistra e destra.
- Inserisci i caratteri da rimuovere e scegli Aggiungi.
Successivamente, convertiamo la colonna target Class
dal tipo di dato stringa a booleano poiché la transazione è legittima o fraudolenta.
- Scegli Aggiungi passaggio.
- Scegli Analizza colonna come tipo.
- Per Colonna, scegli
Class
. - Per Da, scegli Stringa.
- Per A, scegli Booleano.
- Scegli Aggiungi.
Dopo la trasformazione della colonna target, riduciamo il numero di colonne delle caratteristiche, in quanto ci sono oltre 30 caratteristiche nel dataset originale. Utilizziamo l’analisi delle componenti principali (PCA) per ridurre le dimensioni in base all’importanza delle caratteristiche. Per saperne di più su PCA e sulla riduzione della dimensionalità, fare riferimento all’algoritmo di analisi delle componenti principali (PCA).
- Scegli Aggiungi passaggio.
- Scegli Riduzione della dimensionalità.
- Per Trasforma, scegli Analisi delle componenti principali.
- Per Colonne di input, scegli tutte le colonne tranne la colonna target
Class
. - Scegli il segno più accanto a Flusso dati e scegli Aggiungi analisi.
- Per Tipo di analisi, scegli Modello rapido.
- Per Nome dell’analisi, inserisci un nome.
- Per Etichetta, scegli
Class
. - Scegli Esegui.
In base ai risultati PCA, puoi decidere quali caratteristiche utilizzare per la creazione del modello. Nella seguente schermata, il grafico mostra le caratteristiche (o dimensioni) ordinate in base all’importanza più alta per prevedere la classe target, che in questo dataset è se la transazione è fraudolenta o valida.
Puoi scegliere di ridurre il numero di caratteristiche basandoti su questa analisi, ma per questo post, lasciamo i valori predefiniti.
Questo conclude il nostro processo di ingegneria delle caratteristiche, anche se puoi scegliere di eseguire il modello rapido e creare un rapporto sulla qualità e sugli insight dei dati per capire i dati prima di eseguire ulteriori ottimizzazioni.
Esporta i dati e addestra il modello
Nel prossimo passaggio, utilizzeremo SageMaker Autopilot per costruire, addestrare e ottimizzare i migliori modelli di machine learning basati sui tuoi dati. Con SageMaker Autopilot, mantieni ancora il pieno controllo e la visibilità dei tuoi dati e del tuo modello.
Ora che abbiamo completato l’esplorazione e l’ingegneria delle caratteristiche, addestriamo un modello sul dataset ed esportiamo i dati per addestrare il modello di machine learning utilizzando SageMaker Autopilot.
- Nella scheda Addestramento, scegli Esporta e addestra .
Potremo monitorare il progresso dell’esportazione mentre aspettiamo che sia completata.
Configuriamo SageMaker Autopilot per eseguire un lavoro di addestramento automatico specificando il target che vogliamo prevedere e il tipo di problema. In questo caso, poiché addestriamo il dataset per prevedere se la transazione è fraudolenta o valida, utilizziamo la classificazione binaria.
- Inserisci un nome per il tuo esperimento, fornisci la posizione dei dati S3 e scegli Avanti: Target e caratteristiche .
- Per Target , scegli
Classe
come colonna da prevedere. - Scegli Avanti: Metodo di addestramento .
Permettiamo a SageMaker Autopilot di decidere il metodo di addestramento in base al dataset.
- Per Metodo di addestramento e algoritmi , seleziona Auto .
Per capire di più sui modalità di addestramento supportate da SageMaker Autopilot, consulta le modalità di addestramento e il supporto degli algoritmi.
- Scegli Avanti: Distribuzione e impostazioni avanzate .
- Per Opzione di distribuzione , scegli Auto distribuisci il miglior modello con trasformazioni da Data Wrangler , che carica il miglior modello per l’infrazione dopo il completamento dell’esperimento.
- Inserisci un nome per il tuo endpoint.
- Per Seleziona il tipo di problema di machine learning , scegli Classificazione binaria .
- Per Metrica di obiettivo , scegli F1 .
- Scegli Avanti: Rivedi e crea .
- Scegli Crea esperimento .
Questo avvia un lavoro SageMaker Autopilot che crea un insieme di lavori di formazione che utilizzano combinazioni di iperparametri per ottimizzare la metrica obiettivo.
Attendi che SageMaker Autopilot finisca di costruire i modelli e valuti il miglior modello di apprendimento automatico.
Lancia un endpoint di inferenza in tempo reale per testare il miglior modello
SageMaker Autopilot esegue esperimenti per determinare il miglior modello che possa classificare le transazioni con carta di credito come legittime o fraudolente.
Quando SageMaker Autopilot completa l’esperimento, possiamo visualizzare i risultati di formazione con le metriche di valutazione ed esplorare il miglior modello dalla pagina di descrizione del lavoro SageMaker Autopilot.
- Seleziona il miglior modello e scegli Deploy model.
Utilizziamo un endpoint di inferenza in tempo reale per testare il miglior modello creato tramite SageMaker Autopilot.
- Seleziona Make real-time predictions.
Quando l’endpoint è disponibile, possiamo passare il payload e ottenere risultati di inferenza.
Lanciamo un notebook Python per utilizzare l’endpoint di inferenza.
-
Nella console di SageMaker Studio, scegli l’icona della cartella nel riquadro di navigazione e scegli Crea notebook.
-
Utilizza il seguente codice Python per invocare l’endpoint di inferenza in tempo reale distribuito:
# Importazioni di librerie import os import io import boto3 import json import csv #: Definisci il nome dell'endpoint. ENDPOINT_NAME = 'SnowFlake-FraudDetection' # sostituisci il nome dell'endpoint in base alla tua configurazione runtime = boto3.client('runtime.sagemaker') #: Definisci un payload di test da inviare al tuo endpoint. payload = { "body": { "TIME": 152895, "V1": 2.021155535, "V2": 0.05372872624, "V3": -1.620399104, "V4": 0.3530165253, "V5": 0.3048483853, "V6": -0.6850955461, "V7": 0.02483335885, "V8": -0.05101346021, "V9": 0.3550896835, "V10": -0.1830053153, "V11": 1.148091498, "V12": 0.4283365505, "V13": -0.9347237892, "V14": -0.4615291327, "V15": -0.4124343184, "V16": 0.4993445934, "V17": 0.3411548305, "V18": 0.2343833846, "V19": 0.278223588, "V20": -0.2104513475, "V21": -0.3116427235, "V22": -0.8690778214, "V23": 0.3624146958, "V24": 0.6455923598, "V25": -0.3424913329, "V26": 0.1456884618, "V27": -0.07174890419, "V28": -0.040882382, "AMOUNT": 0.27 } } #: Invia una richiesta API e cattura l'oggetto di risposta. response = runtime.invoke_endpoint( EndpointName=ENDPOINT_NAME, ContentType='text/csv', Body=str(payload) ) #: Stampa l'output dell'endpoint del modello. print(response['Body'].read().decode())
L’output mostra il risultato come false
, il che implica che i dati campione delle caratteristiche non sono fraudolenti.
Pulizia
Per assicurarsi di non incorrere in addebiti dopo aver completato questo tutorial, è necessario chiudere l’applicazione SageMaker Data Wrangler e spegnere l’istanza del notebook utilizzata per l’inferenza. Dovresti anche eliminare il punto di endpoint di inferenza creato utilizzando SageMaker Autopilot per evitare ulteriori addebiti.
Conclusione
In questo post, abbiamo dimostrato come portare i tuoi dati direttamente da Snowflake senza creare alcuna copia intermedia nel processo. Puoi campionare o caricare il tuo dataset completo in SageMaker Data Wrangler direttamente da Snowflake. Puoi quindi esplorare i dati, pulire i dati e eseguire l’ingegneria delle caratteristiche utilizzando l’interfaccia visuale di SageMaker Data Wrangler.
Abbiamo anche evidenziato come puoi facilmente allenare e sintonizzare un modello con SageMaker Autopilot direttamente dall’interfaccia utente di SageMaker Data Wrangler. Con l’integrazione di SageMaker Data Wrangler e SageMaker Autopilot, possiamo costruire rapidamente un modello dopo aver completato l’ingegneria delle caratteristiche, senza scrivere alcun codice. Poi abbiamo fatto riferimento al miglior modello di SageMaker Autopilot per eseguire inferenze utilizzando un endpoint in tempo reale.
Prova oggi la nuova integrazione diretta di Snowflake con SageMaker Data Wrangler per creare facilmente modelli di ML con i tuoi dati utilizzando SageMaker.