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
-
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).
-
-
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 calcoloml.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, )
-
Richiamate il metodo run specifico dell'SageMakerClarifyProcessor
oggetto 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. SageMakerLe 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'ModelConfig
oggetto 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", )
Come eseguire il calcolo SHAP valori per un set di CSV dati
SageMaker Clarify fornisce attribuzioni di funzionalità utilizzando l'algoritmo Kernel. SHAPModelPredictedLabelConfig
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 baseline
il 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à
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 ()
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'JMESPathFeatures
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'ModelPredictedLabelConfig
oggetto 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'ModelPredictedLabelConfig
oggetto 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
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'ModelConfig
oggetto 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'TextConfig
oggetto 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 tokenizzazioneRating
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
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'DataConfig
oggetto 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'ModelConfig
oggetto 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)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
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.
-
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, )
-
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.
-
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'ModelConfig
oggetto 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
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
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 SHAPConfigTrue
, 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_count
of ModelConfig