Riduzione automatica delle informazioni personali identificabili (PII) per l’apprendimento automatico usando Amazon SageMaker Data Wrangler

Riduzione automatica dei dati personali identificabili (PII) per l'apprendimento automatico utilizzando Amazon SageMaker Data Wrangler

I clienti desiderano sempre più utilizzare approcci di deep learning come i grandi modelli di linguaggio (LLM) per automatizzare l’estrazione di dati e informazioni. Per molte industrie, i dati utili per il machine learning (ML) possono contenere informazioni personali identificabili (PII). Per garantire la privacy dei clienti e mantenere la conformità normativa durante l’addestramento, l’aggiustamento e l’utilizzo dei modelli di deep learning, spesso è necessario redigere prima le PII dai dati sorgente.

Questo post illustra come utilizzare Amazon SageMaker Data Wrangler e Amazon Comprehend per redigere automaticamente le PII dai dati tabulari come parte del tuo flusso di lavoro delle operazioni di machine learning (ML Ops).

Problema: dati di ML che contengono PII

Le PII sono definite come ogni rappresentazione di informazioni che consente di inferire ragionevolmente l’identità di un individuo a cui le informazioni si riferiscono, sia per mezzi diretti che indiretti. Le PII sono informazioni che identificano direttamente un individuo (nome, indirizzo, numero di previdenza sociale o altro numero o codice identificativo, numero di telefono, indirizzo email, ecc.) o informazioni che un’agenzia intende utilizzare per identificare individui specifici in combinazione con altri elementi di dati, ovvero l’identificazione indiretta.

I clienti in settori aziendali come quello finanziario<, al dettaglio, legale e governativo si occupano regolarmente di dati PII. A causa di diverse normative e regole governative, i clienti devono trovare un meccanismo per gestire questi dati sensibili con adeguate misure di sicurezza per evitare multe regolamentari, possibili frodi e diffamazione. La redazione delle PII è il processo di mascheratura o rimozione di informazioni sensibili da un documento in modo che possa essere utilizzato e distribuito, proteggendo comunque le informazioni confidenziali.

Le aziende devono fornire esperienze gratificanti ai clienti e ottenere migliori risultati aziendali attraverso il ML. La redazione dei dati PII è spesso il primo passo fondamentale per sbloccare flussi di dati più ampi e ricchi necessari per utilizzare o ottimizzare modelli di intelligenza artificiale generativa, senza preoccuparsi che i dati aziendali (o quelli dei clienti) possano essere compromessi.

Panoramica della soluzione

Questa soluzione utilizza Amazon Comprehend e SageMaker Data Wrangler per redigere automaticamente i dati PII da un set di dati di esempio.

Amazon Comprehend è un servizio di elaborazione del linguaggio naturale (NLP) che utilizza il ML per scoprire informazioni e relazioni in dati non strutturati, senza la gestione di infrastrutture o esperienza nel ML richiesta. Fornisce funzionalità per individuare diversi tipi di entità PII all’interno del testo, ad esempio nomi o numeri di carte di credito. Sebbene gli ultimi modelli generativi di AI abbiano dimostrato una certa capacità di redazione delle PII, in genere non forniscono un punteggio di affidabilità per l’identificazione delle PII o dati strutturati che descrivono cosa è stato redatto. La funzionalità PII di Amazon Comprehend restituisce entrambe le informazioni, consentendo di creare flussi di lavoro di redazione completamente verificabili su larga scala. Inoltre, utilizzando Amazon Comprehend con AWS PrivateLink, i dati dei clienti non lasciano mai la rete AWS e sono continuamente protetti con gli stessi controlli di accesso ai dati e privacy delle altre applicazioni.

Come Amazon Comprehend, Amazon Macie utilizza un motore basato su regole per identificare dati sensibili (compresi le PII) archiviati nei servizi di archiviazione semplici di Amazon (Amazon S3). Tuttavia, il suo approccio basato su regole si basa sulla presenza di parole chiave specifiche che indicano dati sensibili situati vicino a quei dati (entro 30 caratteri). Al contrario, l’approccio ML basato sull’NLP di Amazon Comprehend utilizza la comprensione semantica di porzioni di testo più lunghe per identificare PII, rendendolo più utile per individuare PII all’interno di dati non strutturati.

Inoltre, per i dati tabulari come i file CSV o di testo semplice, Macie restituisce informazioni sulla posizione meno dettagliate rispetto ad Amazon Comprehend (indicazione riga/colonna o numero di linea, rispettivamente, ma non gli offset di caratteri di inizio e fine). Questo rende Amazon Comprehend particolarmente utile per redigere PII da testo non strutturato che può contenere una combinazione di parole PII e non PII (ad esempio, ticket di supporto o prompt LLM) che viene archiviato in un formato tabellare.

Amazon SageMaker fornisce strumenti appositamente progettati per i team ML per automatizzare e standardizzare i processi nell’intero ciclo di vita dell’ML. Con gli strumenti SageMaker MLOps, i team possono preparare, addestrare, testare, risolvere problemi, distribuire e governare modelli ML su larga scala, aumentando la produttività dei data scientist e degli ingegneri ML e mantenendo le prestazioni del modello in produzione. Il diagramma seguente illustra il flusso di lavoro SageMaker MLOps.

SageMaker Pipelines

SageMaker Data Wrangler è una funzionalità di Amazon SageMaker Studio che fornisce una soluzione end-to-end per importare, preparare, trasformare, generare feature e analizzare set di dati archiviati in posizioni come Amazon S3 o Amazon Athena, un primo passo comune nel ciclo di vita dell’ML. Puoi utilizzare SageMaker Data Wrangler per semplificare e razionalizzare la pre-elaborazione dei dati e l’ingegneria delle feature, utilizzando trasformazioni predefinite senza codice o personalizzando con script Python personalizzati.

L’utilizzo di Amazon Comprehend per redigere PII come parte di un flusso di preparazione dei dati di SageMaker Data Wrangler mantiene tutti gli utilizzi successivi dei dati, come addestramento o inferenza del modello, in conformità con i requisiti di PII dell’organizzazione. Puoi integrare SageMaker Data Wrangler con Amazon SageMaker Pipelines per automatizzare le operazioni ML end-to-end, inclusa la preparazione dei dati e la redazione di PII. Per ulteriori dettagli, consulta Integrazione di SageMaker Data Wrangler con SageMaker Pipelines. Il resto di questo post illustra un flusso di dati SageMaker Data Wrangler che utilizza Amazon Comprehend per redigere PII dal testo archiviato in formato dati tabellari.

Questa soluzione utilizza un set di dati sintetici pubblico insieme a un flusso personalizzato di SageMaker Data Wrangler, disponibile come file in GitHub. I passaggi per utilizzare il flusso di SageMaker Data Wrangler per redigere PII sono i seguenti:

  1. Apri SageMaker Studio.
  2. Scarica il flusso di SageMaker Data Wrangler.
  3. Esamina il flusso di SageMaker Data Wrangler.
  4. Aggiungi un nodo di destinazione.
  5. Crea un job di esportazione di SageMaker Data Wrangler.

Questa guida, inclusa l’esecuzione del job di esportazione, richiederà da 20 a 25 minuti per essere completata.

Prerequisiti

Per questa guida, dovresti avere quanto segue:

Aprire SageMaker Studio

Per aprire SageMaker Studio, seguire i seguenti passaggi:

  1. Nella console di SageMaker, scegliere Studio nel riquadro di navigazione.
  2. Scegliere il dominio e il profilo utente.
  3. Scegliere Apri Studio.

Per iniziare con le nuove funzionalità di SageMaker Data Wrangler, è consigliato aggiornare all’ultima versione.

Scaricare il flusso di SageMaker Data Wrangler

È necessario prima recuperare il file di flusso di SageMaker Data Wrangler da GitHub e caricarlo su SageMaker Studio. Seguire i seguenti passaggi:

  1. Passare al file redact-pii.flow di SageMaker Data Wrangler su GitHub.
  2. Su GitHub, scegliere l’icona di download per scaricare il file di flusso sul proprio computer locale.
  3. In SageMaker Studio, scegliere l’icona del file nel riquadro di navigazione.
  4. Scegliere l’icona di caricamento, quindi scegliere redact-pii.flow.
Carica il flusso di Data Wrangler

Esaminare il flusso di SageMaker Data Wrangler

In SageMaker Studio, aprire redact-pii.flow. Dopo alcuni minuti, il flusso terminerà il caricamento e mostrerà il diagramma del flusso (vedi la seguente schermata). Il flusso contiene sei passaggi: un passaggio S3 Source seguito da cinque passaggi di trasformazione.

Passaggi del flusso di Data Wrangler

Sul diagramma del flusso, scegliere l’ultimo passaggio, Redact PII. Il riquadro Tutti i passaggi si apre sulla destra e mostra un elenco dei passaggi nel flusso. È possibile espandere ogni passaggio per visualizzare i dettagli, modificare i parametri e eventualmente aggiungere codice personalizzato.

Dettagli del passaggio del flusso di Data Wrangler

Passiamo ora ad analizzare ogni passaggio del flusso.

I passaggi 1 (S3 Source) e 2 (Data types) vengono aggiunti da SageMaker Data Wrangler ogni volta che si importano dati in un nuovo flusso. In S3 Source, il campo S3 URI punta al set di dati di esempio, che è un file CSV memorizzato in Amazon S3. Il file contiene circa 116.000 righe e il flusso imposta il valore del campo Sampling su 1.000, il che significa che SageMaker Data Wrangler prenderà un campione di 1.000 righe per visualizzarle nell’interfaccia utente. Data types imposta il tipo di dati per ciascuna colonna dei dati importati.

Il passaggio 3 (Sampling) imposta il numero di righe che SageMaker Data Wrangler prenderà in considerazione per un lavoro di esportazione su 5.000, tramite il campo Approximate sample size. Si noti che questo è diverso dal numero di righe prese in considerazione per visualizzarle nell’interfaccia utente (passaggio 1). Per esportare dati con più righe, è possibile aumentare questo numero o rimuovere il passaggio 3.

I passaggi 4, 5 e 6 utilizzano trasformazioni personalizzate di SageMaker Data Wrangler. Le trasformazioni personalizzate consentono di eseguire il proprio codice Python o SQL all’interno di un flusso Data Wrangler. Il codice personalizzato può essere scritto in quattro modi diversi:

  • In SQL, utilizzando PySpark SQL per modificare il dataset
  • In Python, utilizzando un data frame PySpark e delle librerie per modificare il dataset
  • In Python, utilizzando un data frame pandas e delle librerie per modificare il dataset
  • In Python, utilizzando una funzione definita dall’utente per modificare una colonna del dataset

L’approccio Python (pandas) richiede che il dataset rientri nella memoria e può essere eseguito solo su una singola istanza, limitando la sua capacità di scalare in modo efficiente. Quando si lavora in Python con dataset più grandi, consigliamo di utilizzare l’approccio Python (PySpark) o Python (funzione definita dall’utente). SageMaker Data Wrangler ottimizza le funzioni definite dall’utente in Python per offrire prestazioni simili a un plugin Apache Spark, senza la necessità di conoscere PySpark o Pandas. Per rendere questa soluzione accessibile quanto possibile, questo articolo utilizza una funzione definita dall’utente scritta in Python puro.

Espandi il Passaggio 4 (Crea colonna PII) per vedere i dettagli. Questo passaggio combina diversi tipi di dati PII da colonne multiple in una singola frase che viene salvata in una nuova colonna, pii_col. La seguente tabella mostra un esempio di riga contenente dati.

customer_name customer_job billing_address customer_email
Katie Giornalista 19009 Vang Squares Suite 805

Questo viene combinato nella frase “Katie è una giornalista che vive a 19009 Vang Squares Suite 805 e può essere contattata all’indirizzo “. La frase viene salvata in pii_col, che in questo articolo viene utilizzata come colonna target da redigere.

Il Passaggio 5 (Preparazione per la redazione) prende una colonna da redigere (pii_col) e crea una nuova colonna (pii_col_prep) pronta per una redazione efficiente utilizzando Amazon Comprehend. Per redigere le informazioni PII da una colonna diversa, è possibile modificare il campo Colonna di input di questo passaggio.

Ci sono due fattori da considerare per redigere efficacemente i dati utilizzando Amazon Comprehend:

  • Il costo per rilevare le informazioni PII è definito su base per unità, dove 1 unità = 100 caratteri, con una carica minima di 3 unità per ogni documento. Poiché i dati tabulari spesso contengono piccole quantità di testo per cella, di solito è più efficiente in termini di tempo e costo combinare il testo da più celle in un singolo documento da inviare ad Amazon Comprehend. Facendo ciò si evita l’accumulo di sovraccarico da molte chiamate di funzione ripetute e si garantisce che i dati inviati siano sempre superiori al minimo di 3 unità.
  • Dato che stiamo eseguendo la redazione come un singolo passaggio di un flusso SageMaker Data Wrangler, chiameremo Amazon Comprehend in modo sincrono. Amazon Comprehend stabilisce un limite di 100 KB (100.000 caratteri) per chiamata di funzione sincrona, quindi dobbiamo assicurarci che ogni testo inviato sia inferiore a tale limite.

Dati questi fattori, il Passaggio 5 prepara i dati da inviare ad Amazon Comprehend aggiungendo una stringa delimitatore alla fine del testo in ogni cella. Per il delimitatore, è possibile utilizzare qualsiasi stringa che non si verifichi nella colonna da redigere (idealmente, una stringa con pochi caratteri possibili, poiché sono inclusi nel totale dei caratteri di Amazon Comprehend). Aggiungendo questo delimitatore di cella ci permette di ottimizzare la chiamata a Amazon Comprehend e verrà discusso più in dettaglio nel Passaggio 6.

Nota che se il testo in qualsiasi cella individuale è più lungo del limite di Amazon Comprehend, il codice in questo passaggio lo tronca a 100.000 caratteri (equivalenti approssimativamente a 15.000 parole o 30 pagine spaziate singolarmente). Anche se questa quantità di testo è improbabile che sia memorizzata in una singola cella, è possibile modificare il codice di trasformazione per gestire questa situazione limite in un altro modo se necessario.

Il passaggio 6 (Redact PII) richiede un nome di colonna da redigere come input (pii_col_prep) e salva il testo redatto in una nuova colonna (pii_redacted). Quando si utilizza una trasformazione di funzione personalizzata Python, SageMaker Data Wrangler definisce una custom_func vuota che prende in input una serie pandas (una colonna di testo) e restituisce una serie pandas modificata della stessa lunghezza. La seguente schermata mostra parte del passaggio Redact PII.

Data Wrangler custom function redaction code

La funzione custom_func contiene due funzioni helper (interne):

  • make_text_chunks – Questa funzione svolge il lavoro di concatenare il testo dalle singole celle della serie (inclusi i loro delimitatori) in stringhe più lunghe (chunk) da inviare ad Amazon Comprehend.
  • redact_pii – Questa funzione prende in input un testo, chiama Amazon Comprehend per individuare PII, redige tutto ciò che viene trovato e restituisce il testo redatto. La redazione avviene sostituendo qualsiasi testo PII con il tipo di PII trovato tra parentesi quadre, ad esempio John Smith verrebbe sostituito con [NOME]. È possibile modificare questa funzione per sostituire PII con qualsiasi stringa, anche la stringa vuota (“”) per rimuoverla. È anche possibile modificare la funzione per controllare il punteggio di fiducia di ogni entità PII e redigerlo solo se è superiore a una soglia specifica.

Dopo aver definito le funzioni interne, custom_func le utilizza per eseguire la redazione, come mostrato nell’esempio di codice seguente. Quando la redazione è completa, converte i chunk in celle originali, che salva nella colonna pii_redacted.

# concatenate text from cells into longer chunks
chunks = make_text_chunks(series, COMPREHEND_MAX_CHARS)
redacted_chunks = []
# call Comprehend once for each chunk, and redact
for text in chunks:
  redacted_text = redact_pii(text)
  redacted_chunks.append(redacted_text)
# join all redacted chunks into one text string
redacted_text = ''.join(redacted_chunks)
# split back to list of the original rows
redacted_rows = redacted_text.split(CELL_DELIM)

Aggiungi un nodo di destinazione

Per visualizzare il risultato delle tue trasformazioni, SageMaker Data Wrangler supporta l’esportazione su Amazon S3, SageMaker Pipelines, Amazon SageMaker Feature Store e codice Python. Per esportare i dati redatti su Amazon S3, è necessario prima creare un nodo di destinazione:

  1. Nel diagramma di flusso di SageMaker Data Wrangler, scegli il segno più accanto al passaggio Redact PII.
  2. Scegli Aggiungi destinazione, quindi scegli Amazon S3.
  3. Fornisci un nome di output per il tuo dataset trasformato.
  4. Esplora o inserisci la posizione S3 in cui memorizzare il file dei dati redatti.
  5. Scegli Aggiungi destinazione.

Dovresti ora vedere il nodo di destinazione alla fine del tuo flusso di dati.

Crea un lavoro di esportazione di SageMaker Data Wrangler

Ora che il nodo di destinazione è stato aggiunto, possiamo creare il lavoro di esportazione per elaborare il dataset:

  1. In SageMaker Data Wrangler, scegli Crea lavoro.
  2. Il nodo di destinazione appena aggiunto dovrebbe essere già selezionato. Scegli Avanti.
  3. Accetta le impostazioni predefinite per tutte le altre opzioni, poi scegli Esegui.

Questo crea un lavoro di elaborazione SageMaker. Per visualizzare lo stato del lavoro, vai alla console di SageMaker. Nel riquadro di navigazione, espandi la sezione Elaborazione e scegli Lavori di elaborazione. La redazione di tutte le 116.000 celle della colonna di destinazione utilizzando le impostazioni predefinite del lavoro di esportazione (due istanze ml.m5.4xlarge) richiede circa 8 minuti e costa circa $0.25. Una volta completato il lavoro, scarica il file di output con la colonna redatta da Amazon S3.

Pulizia

L’applicazione SageMaker Data Wrangler viene eseguita su un’istanza ml.m5.4xlarge. Per spegnerla, in SageMaker Studio, scegli Terminali e kernel in esecuzione nel riquadro di navigazione. Nella sezione ISTANZE IN ESECUZIONE, trova l’istanza denominata Data Wrangler e scegli l’icona di spegnimento accanto ad essa. In questo modo viene spenta l’applicazione SageMaker Data Wrangler in esecuzione sull’istanza.

Conclusioni

In questo post, abbiamo discusso come utilizzare trasformazioni personalizzate in SageMaker Data Wrangler e Amazon Comprehend per redigere dati PII dal tuo dataset di apprendimento automatico. Puoi scaricare il flusso SageMaker Data Wrangler e iniziare a redigere dati PII dai tuoi dati tabulari oggi stesso.

Per altre modalità per migliorare il tuo flusso di lavoro MLOps utilizzando trasformazioni personalizzate di SageMaker Data Wrangler, dai un’occhiata a Creazione di trasformazioni personalizzate in Amazon SageMaker Data Wrangler utilizzando NLTK e SciPy. Per ulteriori opzioni di preparazione dei dati, consulta la serie di articoli sul blog che spiega come utilizzare Amazon Comprehend per reagire, tradurre e analizzare il testo sia da Amazon Athena che da Amazon Redshift.