Esegui SageMaker Clarify Processing Jobs per l'analisi e la spiegabilità dei pregiudizi - Amazon SageMaker

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à.

Esegui SageMaker Clarify Processing Jobs per l'analisi e la spiegabilità dei pregiudizi

Per analizzare i dati e i modelli per verificare eventuali distorsioni e spiegabilità utilizzando SageMaker Clarify, è necessario configurare un processo di elaborazione Clarify. SageMaker Questa guida mostra come configurare gli input, gli output, le risorse e la configurazione dell'analisi del lavoro utilizzando Python SageMaker . SDK API SageMakerClarifyProcessor

APIFunge da wrapper di alto livello di. SageMaker CreateProcessingJob API Nasconde molti dei dettagli coinvolti nella configurazione di un SageMaker processo di elaborazione di Clarify. I dettagli per configurare un lavoro includono il recupero dell'immagine del contenitore SageMaker Clarify URI e la generazione del file di configurazione dell'analisi. I passaggi seguenti mostrano come configurare, inizializzare e avviare un SageMaker processo di elaborazione Clarify.

Configurate un processo di elaborazione SageMaker Clarify utilizzando il API
  1. Definisci gli oggetti per ogni parte della configurazione del processo. Queste parti possono includere quanto segue:

    • Il set di dati di input e la posizione di output:. DataConfig

    • Il modello o l'endpoint da analizzare:. ModelConfig

    • Parametri di analisi delle distorsioni:. BiasConfig

    • SHapleyAdditivo exPlanations (SHAP) parametri di analisi: SHAPConfig.

    • Parametri asimmetrici di analisi dei valori di Shapley (solo per le serie temporali):. AsymmetricShapleyValueConfig

    Gli oggetti di configurazione per un processo di elaborazione SageMaker Clarify variano a seconda dei diversi tipi di formati di dati e casi d'uso. Nelle sezioni seguenti vengono forniti esempi di configurazione per problemi di JSON Lines formato CSV e formato di dati tabulari, computer vision elaborazione del linguaggio naturale (NLP), (CV) e serie temporali (TS).

  2. Crea un oggetto SageMakerClarifyProcessor e inizializzalo con parametri che specificano le risorse del processo. Queste risorse includono parametri come il numero di istanze di calcolo da utilizzare.

    Il seguente esempio di codice mostra come creare un oggetto SageMakerClarifyProcessor e indicargli di utilizzare un'istanza di calcolo ml.c4.xlarge per eseguire l'analisi.

    from sagemaker import clarify clarify_processor = clarify.SageMakerClarifyProcessor( role=role, instance_count=1, instance_type='ml.c4.xlarge', sagemaker_session=session, )
  3. Richiamate il metodo run specifico dell'SageMakerClarifyProcessoroggetto con gli oggetti di configurazione relativi al vostro caso d'uso per avviare il job. Questi metodi di esecuzione includono i seguenti:

    • run_pre_training_bias

    • run_post_training_bias

    • run_bias

    • run_explainability

    • run_bias_and_explainability

    Questo SageMakerClarifyProcessor gestisce diverse attività dietro le quinte. Queste attività includono il recupero dell'identificatore universale della risorsa dell'immagine del contenitore SageMaker Clarify (URI), la composizione di un file di configurazione di analisi basato sugli oggetti di configurazione forniti, il caricamento del file in un bucket Amazon S3 e la configurazione del processo di elaborazione Clarify. SageMaker

    Le seguenti sezioni espandibili mostrano come calcolare le metriche di distorsione prima e dopo l'allenamento, SHAP valori e grafici di dipendenza parziale (PDPs). Le sezioni mostrano l'importanza delle funzionalità per questi tipi di dati:

    • Set di dati tabulari in CSV formato o in formato linee JSON

    • Set di dati di elaborazione del linguaggio naturale () NLP

    • Set di dati di visione artificiale

Una guida per eseguire processi di elaborazione SageMaker Clarify paralleli con formazione distribuita utilizzando Spark segue le sezioni espandibili.

I seguenti esempi mostrano come configurare l'analisi delle distorsioni e l'analisi della spiegabilità per un set di dati tabulare in formato. CSV In questi esempi, il set di dati in entrata ha quattro colonne di funzionalità e una colonna dell'etichetta binaria, Target. Il contenuto del set di dati è il seguente. Un valore di etichetta pari a 1 indica un risultato positivo.

Target,Age,Gender,Income,Occupation 0,25,0,2850,2 1,36,0,6585,0 1,22,1,1759,1 0,48,0,3446,1 ...

Questo oggetto DataConfig specifica il set di dati di input e dove archiviare l'output. Il s3_data_input_path parametro può essere un file URI di set di dati o un prefisso Amazon URI S3. Se fornisci un URI prefisso S3, il processo di elaborazione SageMaker Clarify raccoglie in modo ricorsivo tutti i file Amazon S3 che si trovano sotto il prefisso. Il valore per s3_output_path deve essere un prefisso S3 per contenere i risultati dell'analisi. URI SageMaker utilizza s3_output_path durante la compilazione e non può assumere il valore di un parametro, una proprietà, un'espressione o ExecutionVariable un parametro SageMaker Pipeline utilizzati durante l'esecuzione. L'esempio di codice seguente mostra come specificare una configurazione di dati per il set di dati di input di esempio precedente.

data_config = clarify.DataConfig( s3_data_input_path=dataset_s3_uri, dataset_type='text/csv', headers=['Target', 'Age', 'Gender', 'Income', 'Occupation'], label='Target', s3_output_path=clarify_job_output_s3_uri, )

Come calcolare tutte le metriche di distorsione prima dell'allenamento per un set di dati CSV

Il seguente esempio di codice mostra come configurare un oggetto BiasConfig per misurare il bias dell'input di esempio precedente verso esempi con un valore Gender di 0.

bias_config = clarify.BiasConfig( label_values_or_threshold=[1], facet_name='Gender', facet_values_or_threshold=[0], )

Il seguente esempio di codice mostra come utilizzare un'istruzione run per avviare un processo di elaborazione SageMaker Clarify che calcola tutte le metriche di distorsione pre-addestramento per un set di dati di input.

clarify_processor.run_pre_training_bias( data_config=data_config, data_bias_config=bias_config, methods="all", )

In alternativa, è possibile scegliere quali metriche calcolare assegnando un elenco di metriche di bias pre-addestramento al parametro metodi. Ad esempio, la sostituzione methods="all" con methods=["CI", "DPL"] indica al processore SageMaker Clarify di calcolare solo lo squilibrio di classe e la differenza nelle proporzioni delle etichette.

Come calcolare tutte le metriche di distorsione post-allenamento per un set di dati CSV

È possibile calcolare le metriche di bias pre-addestramento prima dell'addestramento. Tuttavia, per calcolare le metriche di bias post-addestramento, è necessario disporre di un modello addestrato. L'output di esempio seguente proviene da un modello di classificazione binaria che restituisce dati in formato. CSV In questo output di esempio, ogni riga contiene due colonne. La prima colonna contiene l'etichetta prevista e la seconda colonna contiene il valore di probabilità per quell'etichetta.

0,0.028986845165491 1,0.825382471084594 ...

Nella configurazione di esempio seguente, l'ModelConfigoggetto indica al job di distribuire il SageMaker modello su un endpoint temporaneo. L'endpoint utilizza un'istanza di inferenza ml.m4.xlarge. Poiché i parametri content_type e accept_type non sono impostati, utilizzano automaticamente il valore del parametro dataset_type, che è text/csv.

model_config = clarify.ModelConfig( model_name=your_model, instance_type='ml.m4.xlarge', instance_count=1, )

Il seguente esempio di configurazione utilizza un oggetto ModelPredictedLabelConfig con un indice di etichetta di 0. Ciò indica al processo di elaborazione SageMaker Clarify di individuare l'etichetta prevista nella prima colonna dell'output del modello. Il processo di elaborazione utilizza l'indicizzazione a base zero in questo esempio.

predicted_label_config = clarify.ModelPredictedLabelConfig( label=0, )

In combinazione con l'esempio di configurazione precedente, il seguente esempio di codice avvia un processo di elaborazione SageMaker Clarify per calcolare tutte le metriche di distorsione post-allenamento.

clarify_processor.run_post_training_bias( data_config=data_config, data_bias_config=bias_config, model_config=model_config, model_predicted_label_config=predicted_label_config, methods="all", )

Analogamente, è possibile scegliere quali metriche calcolare assegnando un elenco di metriche di bias post-addestramento al parametro methods. Ad esempio, sostituisci methods=“all” con methods=["DPPL", "DI"] per calcolare solo la differenza in proporzioni positive nelle etichette previste e l'impatto disparato.

Come calcolare tutte le metriche di distorsione per un set di dati CSV

Il seguente esempio di configurazione mostra come eseguire tutte le metriche di distorsione prima e dopo l'allenamento in un unico processo di elaborazione Clarify. SageMaker

clarify_processor.run_bias( data_config=data_config, bias_config=bias_config, model_config=model_config, model_predicted_label_config=predicted_label_config, pre_training_methods="all", post_training_methods="all", )

Per un taccuino di esempio con istruzioni su come eseguire un processo di elaborazione SageMaker Clarify in SageMaker Studio Classic per rilevare errori, consulta Fairness and Explainability with Clarify. SageMaker

Come eseguire il calcolo SHAP valori per un set di CSV dati

SageMaker Clarify fornisce attribuzioni di funzionalità utilizzando l'algoritmo Kernel. SHAP SHAP l'analisi richiede il valore o il punteggio di probabilità anziché l'etichetta prevista, quindi questo ModelPredictedLabelConfig oggetto ha un indice di probabilità. 1 Ciò indica al processo di elaborazione di SageMaker Clarify di estrarre il punteggio di probabilità dalla seconda colonna dell'output del modello (utilizzando l'indicizzazione a base zero).

probability_config = clarify.ModelPredictedLabelConfig( probability=1, )

L'oggetto fornisce SHAPConfig SHAP parametri di analisi. In questo esempio, SHAP baselineil parametro viene omesso e il valore del num_clusters parametro è1. Questo indica al SageMaker Clarify Processor di calcolarne uno SHAP esempio di base basato sul raggruppamento del set di dati di input. Se si desidera scegliere il set di dati di base, vedere SHAP Linee di base per la spiegabilità.

shap_config = clarify.SHAPConfig( num_clusters=1, )

Il seguente esempio di codice avvia un SageMaker processo di elaborazione Clarify per il calcolo SHAP valori.

clarify_processor.run_explainability( data_config=data_config, model_config=model_config, model_scores=probability_config, explainability_config=shap_config, )

Ad esempio, un notebook con istruzioni su come eseguire un processo di elaborazione SageMaker Clarify in SageMaker Studio Classic per eseguire il calcolo SHAP valori, vedi Equità e spiegabilità con Clarify. SageMaker

Come calcolare i grafici delle dipendenze parziali (PDPs) per un set di dati CSV

PDPs mostra la dipendenza della risposta target prevista da una o più caratteristiche di input di interesse mantenendo costanti tutte le altre caratteristiche. Una linea inclinata verso l'alto, o curva nellaPDP, indica che la relazione tra l'obiettivo e le feature di input è positiva e la pendenza indica la forza della relazione. Una linea o una curva con pendenza verso il basso indica che se una funzionalità di input diminuisce, la variabile di destinazione aumenta. In modo intuitivo, è possibile interpretare la dipendenza parziale come la risposta della variabile di destinazione a ciascuna funzionalità di input di interesse.

Il seguente esempio di configurazione riguarda l'utilizzo di un PDPConfig oggetto per indicare al processo di elaborazione di SageMaker Clarify di calcolare l'importanza della funzionalità. Income

pdp_config = clarify.PDPConfig( features=["Income"], grid_resolution=10, )

Nell'esempio precedente, il parametro grid_resolution divide l'intervallo dei valori della funzionalità Income in bucket 10. Il processo di SageMaker elaborazione Clarify genererà PDPs per la Income suddivisione in 10 segmenti sull'asse x. L'asse y mostrerà l'impatto marginale di Income sulla variabile di destinazione.

Il seguente esempio di codice avvia un processo di elaborazione SageMaker Clarify per il calcolo PDPs.

clarify_processor.run_explainability( data_config=data_config, model_config=model_config, model_scores=probability_config, explainability_config=pdp_config, )

Ad esempio, un notebook con istruzioni su come eseguire un processo di elaborazione SageMaker Clarify in SageMaker Studio Classic per eseguire il calcolo PDPs, vedete Spiegabilità con SageMaker Clarify - Grafici delle dipendenze parziali (). PDP

Come calcolarli entrambi SHAP valori e PDPs per un CSV set di dati

Puoi calcolarli entrambi SHAP valori e PDPs in un unico processo di elaborazione di SageMaker Clarify. Nel seguente esempio di configurazione, il parametro top_k_features di un nuovo oggetto PDPConfig è impostato su 2. Questo indica al processo di elaborazione di SageMaker Clarify di eseguire il calcolo PDPs per le 2 funzionalità che hanno il maggior numero di funzionalità a livello globale SHAP valori.

shap_pdp_config = clarify.PDPConfig( top_k_features=2, grid_resolution=10, )

Il seguente esempio di codice avvia un processo di elaborazione SageMaker Clarify per calcolare entrambi SHAP valori e PDPs.

clarify_processor.run_explainability( data_config=data_config, model_config=model_config, model_scores=probability_config, explainability_config=[shap_config, shap_pdp_config], )

I seguenti esempi mostrano come configurare l'analisi delle distorsioni e l'analisi della spiegabilità per un set di dati tabulare nel formato > Lines dense. SageMaker JSON Per ulteriori informazioni, consulta JSONLINESformato della richiesta. In questi esempi, il set di dati in entrata contiene gli stessi dati della sezione precedente, ma sono nel formato Lines. JSON Ogni riga è un oggetto validoJSON. Le Features chiave si riferiscono a una matrice di valori di funzionalità e la Label chiave si riferisce all'etichetta Ground Truth.

{"Features":[25,0,2850,2],"Label":0} {"Features":[36,0,6585,0],"Label":1} {"Features":[22,1,1759,1],"Label":1} {"Features":[48,0,3446,1],"Label":0} ...

Nel seguente esempio di configurazione, l'oggetto DataConfig specifica il set di dati di input e dove archiviare l'output.

data_config = clarify.DataConfig( s3_data_input_path=jsonl_dataset_s3_uri, dataset_type='application/jsonlines', headers=['Age', 'Gender', 'Income', 'Occupation', 'Target'], label='Label', features='Features', s3_output_path=clarify_job_output_s3_uri, )

Nell'esempio di configurazione precedente, il parametro features è impostato sull'JMESPathespressione Features in modo che il processo di elaborazione di SageMaker Clarify possa estrarre l'array di funzionalità da ogni record. Il label parametro è impostato su JMESPath expression Label in modo che il processo di elaborazione SageMaker Clarify possa estrarre l'etichetta di verità fondamentale da ogni record. Il s3_data_input_path parametro può essere un file URI di set di dati o un prefisso Amazon URI S3. Se fornite un URI prefisso S3, il processo di elaborazione SageMaker Clarify raccoglie in modo ricorsivo tutti i file S3 che si trovano sotto il prefisso. Il valore per s3_output_path deve essere un prefisso S3 per contenere i risultati dell'analisi. URI SageMaker utilizza s3_output_path durante la compilazione e non può assumere il valore di un parametro, una proprietà, un'espressione o ExecutionVariable un parametro SageMaker Pipeline utilizzati durante l'esecuzione.

È necessario disporre di un modello addestrato per calcolare le metriche di bias o l'importanza della funzionalità post-addestramento. L'esempio seguente proviene da un modello di classificazione binario che restituisce i dati JSON Lines nel formato dell'esempio. Ogni riga dell'output del modello è un JSON oggetto valido. La predicted_label chiave si riferisce all'etichetta prevista e la probability chiave si riferisce al valore di probabilità.

{"predicted_label":0,"probability":0.028986845165491} {"predicted_label":1,"probability":0.825382471084594} ...

Nel seguente esempio di configurazione, un ModelConfig oggetto indica al processo di elaborazione SageMaker Clarify di distribuire il SageMaker modello su un endpoint temporaneo. L'endpoint utilizza un'istanza di inferenza ml.m4.xlarge.

model_config = clarify.ModelConfig( model_name=your_model, instance_type='ml.m4.xlarge', instance_count=1, content_template='{"Features":$features}', )

Nell'esempio di configurazione precedente, i parametri content_type e accept_type non sono impostati. Pertanto, utilizzano automaticamente il valore del parametro dataset_type dell'oggetto DataConfig, che è application/jsonlines. Il processo di elaborazione SageMaker Clarify utilizza il content_template parametro per comporre l'input del modello sostituendo il segnaposto con una serie di funzionalità. $features

La configurazione di esempio seguente mostra come impostare il parametro label dell'ModelPredictedLabelConfigoggetto sull'espressione. JMESPath predicted_label Questo estrarrà l'etichetta prevista dall'output del modello.

predicted_label_config = clarify.ModelPredictedLabelConfig( label='predicted_label', )

La configurazione di esempio seguente mostra come impostare il probability parametro dell'ModelPredictedLabelConfigoggetto sull'JMESPathespressioneprobability. Questo estrarrà il punteggio dall'output del modello.

probability_config = clarify.ModelPredictedLabelConfig( probability='probability', )

Per calcolare le metriche di distorsione e l'importanza delle funzionalità per i set di dati in formato JSON Lines, utilizzate le stesse istruzioni di esecuzione e gli stessi oggetti di configurazione della sezione precedente per i set di dati. CSV È possibile eseguire un processo di elaborazione SageMaker Clarify in SageMaker Studio Classic per rilevare distorsioni e l'importanza delle funzionalità di calcolo. Per le istruzioni e un taccuino di esempio, consulta Fairness and Explainability with SageMaker Clarify (Lines Format). JSON

SageMaker Clarify supporta le spiegazioni per i modelli di elaborazione del linguaggio naturale (). NLP Queste spiegazioni aiutano a capire quali sezioni di testo sono le più importanti per le previsioni dei modelli. È possibile spiegare la previsione del modello per una singola istanza del set di dati di input o le previsioni dei modelli dal set di dati di base. Per comprendere e visualizzare il comportamento di un modello, è possibile specificare più livelli di granularità. A tale scopo, definisci la lunghezza del segmento di testo, ad esempio token, frasi e paragrafi.

SageMaker La NLP spiegabilità di Clarify è compatibile con i modelli di classificazione e regressione. Puoi anche usare SageMaker Clarify per spiegare il comportamento del tuo modello su set di dati multimodali che contengono caratteristiche testuali, categoriche o numeriche. NLPla spiegabilità dei set di dati multimodali può aiutarvi a capire quanto sia importante ciascuna funzionalità per l'output del modello. SageMaker Clarify supporta 62 lingue e può gestire testo che include più lingue.

L'esempio seguente mostra un file di configurazione di analisi per il calcolo dell'importanza delle funzionalità perNLP. In questo esempio, il set di dati in entrata è un set di dati tabulare in CSV formato, con una colonna di etichette binarie e due colonne di funzionalità.

0,2,"Flavor needs work" 1,3,"They taste good" 1,5,"The best" 0,1,"Taste is awful" ...

Il seguente esempio di configurazione mostra come specificare un set di dati di input in CSV formato e percorso dei dati di output utilizzando l'oggetto. DataConfig

nlp_data_config = clarify.DataConfig( s3_data_input_path=nlp_dataset_s3_uri, dataset_type='text/csv', headers=['Target', 'Rating', 'Comments'], label='Target', s3_output_path=clarify_job_output_s3_uri, )

Nell'esempio di configurazione precedente, il s3_data_input_path parametro può essere un file di set URI di dati o un prefisso Amazon URI S3. Se fornite un URI prefisso S3, il processo di elaborazione SageMaker Clarify raccoglie in modo ricorsivo tutti i file S3 che si trovano sotto il prefisso. Il valore per s3_output_path deve essere un prefisso S3 per contenere i risultati dell'analisi. URI SageMaker utilizza s3_output_path durante la compilazione e non può assumere il valore di un parametro, una proprietà, un'espressione o ExecutionVariable un parametro SageMaker Pipeline utilizzati durante l'esecuzione.

L'output di esempio seguente è stato creato da un modello di classificazione binaria addestrato sul set di dati di input precedente. Il modello di classificazione accetta CSV dati e restituisce un singolo punteggio compreso tra e. 0 1

0.491656005382537 0.569582343101501 ...

L'esempio seguente mostra come configurare l'ModelConfigoggetto per distribuire un SageMaker modello. In questo esempio, un endpoint temporaneo distribuisce il modello. Questo endpoint utilizza un'istanza di ml.g4dn.xlarge inferenza dotata di aGPU, per l'inferenza accelerata.

nlp_model_config = clarify.ModelConfig( model_name=your_nlp_model_name, instance_type='ml.g4dn.xlarge', instance_count=1, )

L'esempio seguente mostra come configurare l'oggetto ModelPredictedLabelConfig per individuare la probabilità (punteggio) nella prima colonna con un indice di 0.

probability_config = clarify.ModelPredictedLabelConfig( probability=0, )

L'esempio seguente SHAP la configurazione mostra come eseguire un'analisi di spiegabilità basata su token utilizzando un modello e un set di dati di input in lingua inglese.

text_config = clarify.TextConfig( language='english', granularity='token', ) nlp_shap_config = clarify.SHAPConfig( baseline=[[4, '[MASK]']], num_samples=100, text_config=text_config, )

Nell'esempio precedente, l'TextConfigoggetto attiva l'analisi della spiegabilità. NLP Il parametro granularity indica che l'analisi deve analizzare i token. In inglese, ogni token è una parola. Per altre lingue, consultate la spaCydocumentazione per la tokenizzazione, che SageMaker Clarify utilizza per l'elaborazione. NLP L'esempio precedente mostra anche come utilizzare una media Rating di per impostare un 4 in-place SHAP istanza di base. Uno speciale token mascherato [MASK] viene utilizzato per sostituire un token (parola) in Comments.

Nell'esempio precedente, se l'istanza è 2,"Flavor needs work", imposta la linea di base su un Rating medio pari a 4 con la linea di base seguente.

4, '[MASK]'

Nell'esempio precedente, lo spiegatore di SageMaker Clarify esegue un'iterazione su ogni token e lo sostituisce con la maschera, come segue.

2,"[MASK] needs work" 4,"Flavor [MASK] work" 4,"Flavor needs [MASK]"

Quindi, l'esplicatore SageMaker Clarify invierà ogni riga al modello per le previsioni. In questo modo l'esplicativo impara le previsioni con e senza le parole mascherate. Lo spiegatore SageMaker Clarify utilizza quindi queste informazioni per calcolare il contributo di ciascun token.

Il seguente esempio di codice avvia un SageMaker processo di elaborazione Clarify per il calcolo SHAP valori.

clarify_processor.run_explainability( data_config=nlp_data_config, model_config=nlp_model_config, model_scores=probability_config, explainability_config=nlp_shap_config, )

Per un taccuino di esempio con istruzioni su come eseguire un processo di elaborazione SageMaker Clarify in SageMaker Studio Classic per l'analisi della NLP spiegabilità, consulta Explaining Text Sentiment Analysis Using Clarify. SageMaker

SageMaker Clarify genera mappe termiche che forniscono informazioni su come i modelli di visione artificiale classificano e rilevano gli oggetti nelle immagini.

Nel seguente esempio di configurazione, il set di dati di input è costituito da immagini. JPEG

cv_data_config = clarify.DataConfig( s3_data_input_path=cv_dataset_s3_uri, dataset_type="application/x-image", s3_output_path=clarify_job_output_s3_uri, )

Nell'esempio di configurazione precedente, l'DataConfigoggetto contiene un s3_data_input_path set di prefisso Amazon S3URI. Il processo di elaborazione SageMaker Clarify raccoglie in modo ricorsivo tutti i file di immagine che si trovano sotto il prefisso. Il s3_data_input_path parametro può essere un file URI di set di dati o un prefisso Amazon URI S3. Se fornite un URI prefisso S3, il processo di elaborazione SageMaker Clarify raccoglie in modo ricorsivo tutti i file S3 che si trovano sotto il prefisso. Il valore per s3_output_path deve essere un prefisso S3 per contenere i risultati dell'analisi. URI SageMaker utilizza s3_output_path durante la compilazione e non può assumere il valore di un parametro, una proprietà, un'espressione o ExecutionVariable un parametro SageMaker Pipeline utilizzati durante l'esecuzione.

Come spiegare un modello di classificazione delle immagini

Il processo di elaborazione SageMaker Clarify spiega le immagini utilizzando l'SHAPalgoritmo Kernel, che tratta l'immagine come una raccolta di super pixel. Dato un set di dati composto da immagini, il processo di elaborazione genera un set di dati di immagini in cui ogni immagine mostra la mappa termica dei super pixel pertinenti.

Il seguente esempio di configurazione mostra come configurare un'analisi di spiegabilità utilizzando un modello di classificazione delle immagini. SageMaker Per ulteriori informazioni, consulta Classificazione delle immagini - MXNet.

ic_model_config = clarify.ModelConfig( model_name=your_cv_ic_model, instance_type="ml.p2.xlarge", instance_count=1, content_type="image/jpeg", accept_type="application/json", )

Nell'esempio di configurazione precedente, un modello denominatoyour_cv_ic_model, è stato addestrato a classificare gli animali nelle immagini di input. JPEG L'ModelConfigoggetto dell'esempio precedente indica al processo di elaborazione SageMaker Clarify di distribuire il SageMaker modello su un endpoint temporaneo. Per l'inferenza accelerata, l'endpoint utilizza un'istanza di inferenza dotata di un. ml.p2.xlarge GPU

Dopo che un'JPEGimmagine è stata inviata a un endpoint, l'endpoint la classifica e restituisce un elenco di punteggi. Ogni punteggio corrisponde a una categoria. L'oggetto ModelPredictedLabelConfig fornisce il nome di ogni categoria, come segue.

ic_prediction_config = clarify.ModelPredictedLabelConfig( label_headers=['bird', 'cat', 'dog'], )

Un esempio di output per il precedente input di ['bird', 'cat', 'dog'] potrebbe essere 0,3;0,6;0,1, dove 0,3 rappresenta il punteggio di attendibilità per la classificazione di un'immagine come uccello.

L'esempio seguente SHAP la configurazione mostra come generare spiegazioni per un problema di classificazione delle immagini. Utilizza un oggetto ImageConfig per attivare l'analisi.

ic_image_config = clarify.ImageConfig( model_type="IMAGE_CLASSIFICATION", num_segments=20, segment_compactness=5, ) ic_shap_config = clarify.SHAPConfig( num_samples=100, image_config=ic_image_config, )

SageMaker Clarify estrae le funzionalità utilizzando il metodo Simple Linear Iterative Clustering (SLIC) dalla libreria scikit-learn per la segmentazione delle immagini. Nell'esempio di configurazione precedente, il parametro model_type indica il tipo di problema di classificazione delle immagini. Il parametro num_segments stima il numero approssimativo di segmenti che verranno etichettati nell'immagine di input. Il numero di segmenti viene quindi passato al parametro n_segments slic.

Ogni segmento dell'immagine è considerato un superpixel e locale SHAP i valori vengono calcolati per ogni segmento. Il parametro segment_compactness determina la forma e la dimensione dei segmenti di immagine generati dal metodo slic scikit-image. Le dimensioni e le forme dei segmenti dell'immagine vengono quindi passate al parametro compactness slic.

Il seguente esempio di codice avvia un processo di elaborazione SageMaker Clarify per generare mappe termiche per le immagini. I valori positivi della mappa termica mostrano che la funzionalità ha aumentato il punteggio di attendibilità del rilevamento dell'oggetto. I valori negativi indicano che la funzionalità ha ridotto il punteggio di attendibilità.

clarify_processor.run_explainability( data_config=cv_data_config, model_config=ic_model_config, model_scores=ic_prediction_config, explainability_config=ic_shap_config, )

Per un taccuino di esempio che utilizza SageMaker Clarify per classificare le immagini e spiegarne la classificazione, vedete Explaining Image Classification with Clarify. SageMaker

Come spiegare un modello di rilevamento di oggetti

Un processo di elaborazione di SageMaker Clarify può rilevare e classificare gli oggetti in un'immagine e quindi fornire una spiegazione dell'oggetto rilevato. Il processo di spiegazione è riportato di seguito.

  1. Gli oggetti dell'immagine vengono prima categorizzati in una delle classi di una raccolta specificata. Ad esempio, se un modello di rilevamento di oggetti è in grado di riconoscere gatti, cani e pesci, queste tre classi fanno parte di una raccolta. Questa raccolta è specificata dal parametro label_headers come segue.

    clarify.ModelPredictedLabelConfig( label_headers=object_categories, )
  2. Il processo di elaborazione SageMaker Clarify produce un punteggio di confidenza per ogni oggetto. Un punteggio di attendibilità elevato indica che appartiene a una delle classi di una raccolta specificata. Il processo di elaborazione SageMaker Clarify produce anche le coordinate di un riquadro di delimitazione che delimita l'oggetto. Per ulteriori informazioni sui punteggi di attendibilità e sui riquadri di delimitazione, consulta Formati della risposta.

  3. SageMaker Clarify fornisce quindi una spiegazione per il rilevamento di un oggetto nella scena dell'immagine. Utilizza i metodi descritti nella sezione Come spiegare un modello di classificazione delle immagini.

Nel seguente esempio di configurazione, un modello di rilevamento di SageMaker oggetti your_cv_od_model viene addestrato sulle JPEG immagini per identificare gli animali su di esse.

od_model_config = clarify.ModelConfig( model_name=your_cv_ic_model, instance_type="ml.p2.xlarge", instance_count=1, content_type="image/jpeg", accept_type="application/json", )

L'ModelConfigoggetto dell'esempio di configurazione precedente indica al processo di elaborazione SageMaker Clarify di distribuire il SageMaker modello su un endpoint temporaneo. Per l'imaging accelerato, questo endpoint utilizza un'istanza di inferenza dotata di un. ml.p2.xlarge GPU

Nella configurazione di esempio seguente, l'oggetto ModelPredictedLabelConfig fornisce il nome di ogni categoria per la classificazione.

ic_prediction_config = clarify.ModelPredictedLabelConfig( label_headers=['bird', 'cat', 'dog'], )

L'esempio seguente SHAP la configurazione mostra come generare spiegazioni per il rilevamento di un oggetto.

od_image_config = clarify.ImageConfig( model_type="OBJECT_DETECTION", num_segments=20, segment_compactness=5, max_objects=5, iou_threshold=0.5, context=1.0, ) od_shap_config = clarify.SHAPConfig( num_samples=100, image_config=image_config, )

Nella configurazione di esempio precedente, l'oggetto ImageConfig attiva l'analisi. Il parametro model_type indica che il tipo di problema è il rilevamento di oggetti. Per una descrizione dettagliata degli altri parametri, consulta File di configurazione dell'analisi.

Il seguente esempio di codice avvia un processo di elaborazione SageMaker Clarify per generare mappe termiche per le immagini. I valori positivi della mappa termica mostrano che la funzionalità ha aumentato il punteggio di attendibilità del rilevamento dell'oggetto. I valori negativi indicano che la funzionalità ha ridotto il punteggio di attendibilità.

clarify_processor.run_explainability( data_config=cv_data_config, model_config=od_model_config, model_scores=od_prediction_config, explainability_config=od_shap_config, )

Per un taccuino di esempio che utilizza SageMaker Clarify per rilevare oggetti in un'immagine e spiegarne le previsioni, consulta Explaining object detection models with Amazon Clarify. SageMaker

Gli esempi seguenti mostrano come configurare i dati in un formato SageMaker JSON denso per spiegare un modello di previsione delle serie temporali. Per ulteriori informazioni sulla JSON formattazione, vedere. JSONformato di richiesta

[ { "item_id": "item1", "timestamp": "2019-09-11", "target_value": 47650.3, "dynamic_feature_1": 0.4576, "dynamic_feature_2": 0.2164, "dynamic_feature_3": 0.1906, "static_feature_1": 3, "static_feature_2": 4 }, { "item_id": "item1", "timestamp": "2019-09-12", "target_value": 47380.3, "dynamic_feature_1": 0.4839, "dynamic_feature_2": 0.2274, "dynamic_feature_3": 0.1889, "static_feature_1": 3, "static_feature_2": 4 }, { "item_id": "item2", "timestamp": "2020-04-23", "target_value": 35601.4, "dynamic_feature_1": 0.5264, "dynamic_feature_2": 0.3838, "dynamic_feature_3": 0.4604, "static_feature_1": 1, "static_feature_2": 2 }, ]

Configurazione dei dati

Usa TimeSeriesDataConfig communicate to your explanability job per analizzare correttamente i dati dal set di dati di input passato, come mostrato nella seguente configurazione di esempio:

time_series_data_config = clarify.TimeSeriesDataConfig( target_time_series='[].target_value', item_id='[].item_id', timestamp='[].timestamp', related_time_series=['[].dynamic_feature_1', '[].dynamic_feature_2', '[].dynamic_feature_3'], static_covariates=['[].static_feature_1', '[].static_feature_2'], dataset_format='timestamp_records', )

Configurazione asimmetrica dei valori di Shapley

Viene utilizzato AsymmetricShapleyValueConfig per definire argomenti per l'analisi della spiegazione del modello di previsione delle serie temporali, ad esempio la linea di base, la direzione, la granularità e il numero di campioni. I valori di base sono impostati per tutti e tre i tipi di dati: serie temporali correlate, covariate statiche e serie temporali target. La AsymmetricShapleyValueConfig configurazione indica al processore SageMaker Clarify come calcolare le attribuzioni delle funzionalità per un elemento alla volta. La configurazione seguente mostra una definizione di esempio di. AsymmetricShapleyValueConfig

asymmetric_shapley_value_config = AsymmetricShapleyValueConfig( direction="chronological", granularity="fine-grained", num_samples=10, baseline={ "related_time_series": "zero", "static_covariates": { "item1": [0, 0], "item2": [0, 0] }, "target_time_series": "zero" }, )

I valori forniti AsymmetricShapleyValueConfig vengono passati alla configurazione di analisi come immissione methods con chiaveasymmetric_shapley_value.

Configurazione del modello

È possibile controllare la struttura del payload inviato dal processore SageMaker Clarify. Nel seguente esempio di codice, un oggetto di ModelConfig configurazione indirizza un processo di previsione della spiegabilità di previsione delle serie temporali all'aggregazione dei record utilizzando la JMESPath sintassi into'{"instances": $records}', dove la struttura di ogni record è definita con il seguente record_template. '{"start": $start_time, "target": $target_time_series, "dynamic_feat": $related_time_series, "cat": $static_covariates}' Tieni presente che $start_time$target_time_series, e $static_covariates sono token interni utilizzati per $related_time_series mappare i valori dei set di dati ai valori delle richieste degli endpoint.

model_config = clarify.ModelConfig( model_name=your_model, instance_type='ml.m4.xlarge', instance_count=1, record_template='{"start": $start_time, "target": $target_time_series, "dynamic_feat": $related_time_series, "cat": $static_covariates}', content_template='{"instances": $records}',, time_series_model_config=TimeSeriesModelConfig( forecast={'forecast': 'predictions[*].mean[:2]'} ) )

Allo stesso modo, l'attributo forecast inTimeSeriesModelConfig, passato alla configurazione di analisi con chiavetime_series_predictor_config, viene utilizzato per estrarre la previsione del modello dalla risposta dell'endpoint. Ad esempio, un esempio di risposta batch di endpoint potrebbe essere la seguente:

{ "predictions": [ {"mean": [13.4, 3.6, 1.0]}, {"mean": [23.0, 4.7, 3.0]}, {"mean": [3.4, 5.6, 2.0]} ] }

Se l'JMESPathespressione fornita forecast è {'predictions [*] .mean [:2] '}}, il valore di previsione viene analizzato come segue:

[[13.4, 3.6], [23.0, 4.7], [3.4, 5.6]]

Come eseguire processi di elaborazione SageMaker Clarify paralleli

Quando si lavora con set di dati di grandi dimensioni, è possibile utilizzare Apache Spark per aumentare la velocità dei processi di elaborazione di Clarify. SageMaker Spark è un motore di analisi unificato per l'elaborazione di dati su larga scala. Quando richiedi più di un'istanza per processore Clarify, SageMaker SageMaker Clarify utilizza le funzionalità di elaborazione distribuita di Spark.

Il seguente esempio di configurazione mostra come SageMakerClarifyProcessor creare un processore SageMaker Clarify con istanze di calcolo. 5 Per eseguire qualsiasi lavoro associato aSageMakerClarifyProcessor, SageMaker Clarify utilizza l'elaborazione distribuita Spark.

from sagemaker import clarify spark_clarify_processor = clarify.SageMakerClarifyProcessor( role=role, instance_count=5, instance_type='ml.c5.xlarge', )

Se si imposta il save_local_shap_values parametro su SHAPConfigtoTrue, il processo di elaborazione SageMaker Clarify salva l'informazione locale SHAP valore come file di parti multiple nella posizione di output del lavoro.

Per associare il locale SHAP valori alle istanze del set di dati di input, utilizzare il joinsource parametro di. DataConfig Se aggiungi altre istanze di calcolo, ti consigliamo di aumentare anche l'instance_countof ModelConfigper l'endpoint temporaneo. In questo modo si evita che le richieste di inferenza concomitanti dei worker di Spark sovraccarichino l'endpoint. In particolare, ti consigliamo di utilizzare un rapporto di istanze. one-to-one endpoint-to-processing