Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Para analizar sus datos y modelos en busca de sesgos y explicabilidad con SageMaker Clarify, debe configurar un SageMaker trabajo de procesamiento de Clarify. Esta guía muestra cómo configurar las entradas, salidas, recursos y configuración de análisis del trabajo mediante la API del SDK de SageMaker PythonSageMakerClarifyProcessor
.
La API actúa como un contenedor de alto nivel de la CreateProcessingJob
API de SageMaker IA. Oculta muchos de los detalles necesarios para configurar un trabajo de procesamiento de SageMaker Clarify. Los detalles para configurar un trabajo incluyen la recuperación del URI de la imagen del contenedor SageMaker de Clarify y la generación del archivo de configuración del análisis. Los siguientes pasos muestran cómo configurar, inicializar y lanzar un trabajo de procesamiento de SageMaker Clarify.
Configure un trabajo de SageMaker procesamiento de Clarify mediante la API
-
Defina los objetos de configuración para cada parte de la configuración del trabajo. Estas partes pueden incluir las siguientes:
-
El conjunto de datos de entrada y la ubicación de salida: DataConfig
. -
El modelo o punto final que se va a analizar: ModelConfig
. -
Parámetros del análisis de sesgo: BiasConfig
. -
SHapley Explicaciones aditivas (SHAP) parámetros de análisis: SHAPConfig
. -
Parámetros de análisis de valores asimétricos de Shapley (solo para series temporales):. AsymmetricShapleyValueConfig
Los objetos de configuración de un trabajo de SageMaker procesamiento de Clarify varían según los diferentes tipos de formatos de datos y casos de uso. En las siguientes secciones, se proporcionan ejemplos de configuración de datos tabulares en formato CSV y JSON Lines, procesamiento de lenguaje natural (NLP) computer vision (CV) y problemas de series temporales (TS).
-
-
Cree un objeto
SageMakerClarifyProcessor
e inicialícelo con parámetros que especifiquen los recursos del trabajo. Estos recursos incluyen parámetros como el número de instancias de computación que se van a utilizar.El siguiente ejemplo de código muestra cómo crear un objeto
SageMakerClarifyProcessor
e indicarle que utilice una instancia de computaciónml.c4.xlarge
para realizar el análisis.from sagemaker import clarify clarify_processor = clarify.SageMakerClarifyProcessor( role=role, instance_count=1, instance_type='ml.c4.xlarge', sagemaker_session=session, )
-
Llame al método de ejecución específico del SageMakerClarifyProcessor
objeto junto con los objetos de configuración de su caso de uso para lanzar el trabajo. Estos métodos de ejecución incluyen lo siguiente: -
run_pre_training_bias
-
run_post_training_bias
-
run_bias
-
run_explainability
-
run_bias_and_explainability
SageMakerClarifyProcessor
gestiona varias tareas entre bastidores. Estas tareas incluyen recuperar el identificador universal de recursos (URI) de la imagen del contenedor de SageMaker Clarify, crear un archivo de configuración de análisis basado en los objetos de configuración proporcionados, cargar el archivo en un bucket de Amazon S3 y configurar el trabajo de procesamiento de SageMaker Clarify.Las siguientes secciones ampliables muestran cómo calcular las métricas de sesgo previas y posteriores al entrenamiento, SHAP valores y gráficas de dependencia parcial (PDPs). Las secciones muestran la importancia de las características de estos tipos de datos:
-
Conjuntos de datos tabulares en formato CSV o formato JSON Lines
-
Conjuntos de datos de procesamiento de lenguaje natural (NLP)
-
Conjuntos de datos de visión artificial
-
En las secciones ampliables se incluye una guía para ejecutar trabajos de procesamiento paralelos de SageMaker Clarify con formación distribuida mediante Spark.
Los siguientes ejemplos muestran cómo configurar el análisis del sesgo y el análisis de la explicabilidad para un conjunto de datos tabular en formato CSV. En estos ejemplos, el conjunto de datos entrante tiene cuatro columnas de características y una columna de etiquetas binarias, Target
. El contenido del conjunto de datos es el siguiente. Un valor de etiqueta de 1
indica un resultado 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 ...
Este objeto DataConfig
especifica el conjunto de datos de entrada y dónde almacenar la salida. El parámetro s3_data_input_path
puede ser un URI de un archivo de conjunto de datos o un prefijo URI de Amazon S3. Si proporciona un prefijo URI de S3, el trabajo de procesamiento de SageMaker Clarify recopila de forma recursiva todos los archivos de Amazon S3 ubicados debajo del prefijo. El valor de s3_output_path
debe ser un prefijo URI de S3 para contener los resultados del análisis. SageMaker La IA lo usa s3_output_path
al compilar y no puede tomar el valor de un parámetro, propiedad o ExecutionVariable
expresión de SageMaker AI Pipeline que se utilice durante el tiempo de ejecución. En el siguiente ejemplo de código se muestra cómo especificar una configuración de datos para el conjunto de datos de entrada de ejemplo anterior.
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, )
Cómo calcular todas las métricas de sesgo previas al entrenamiento para un conjunto de datos CSV
El siguiente ejemplo de código muestra cómo configurar un objeto BiasConfig
para medir el sesgo de la entrada de la muestra anterior hacia las muestras con un valor Gender
de 0
.
bias_config = clarify.BiasConfig( label_values_or_threshold=[1], facet_name='
Gender
', facet_values_or_threshold=[0], )
El siguiente ejemplo de código muestra cómo usar una sentencia de ejecución para lanzar un trabajo de procesamiento de SageMaker Clarify que calcula todas las métricas de sesgo previas al entrenamiento para un conjunto de datos de entrada.
clarify_processor.run_pre_training_bias(
data_config=data_config,
data_bias_config=bias_config,
methods="all",
)
Como alternativa, puede elegir qué métricas calcular si asigna una lista de métricas de sesgo previas al entrenamiento al parámetro de métodos. Por ejemplo, si se methods="all"
reemplaza por, methods=["CI", "DPL"]
se indica al procesador SageMaker Clarify que calcule únicamente el desequilibrio de clases y la diferencia en las proporciones de las etiquetas.
Cómo calcular todas las métricas de sesgo posteriores al entrenamiento para un conjunto de datos CSV
Puede calcular las métricas de sesgo previas al entrenamiento antes del entrenamiento. Sin embargo, para calcular las métricas de sesgo posteriores al entrenamiento debe tener un modelo entrenado. El siguiente ejemplo de salida proviene de un modelo de clasificación binaria que genera datos en formato CSV. En este ejemplo de salida, cada fila contiene dos columnas. La primera columna contiene la etiqueta predicha y la segunda columna contiene el valor de probabilidad de esa etiqueta.
0,0.028986845165491 1,0.825382471084594 ...
En el siguiente ejemplo de configuración, el ModelConfig
objeto indica al trabajo que despliegue el modelo de SageMaker IA en un punto final efímero. El punto de conexión utiliza una instancia de inferencia ml.m4.xlarge
. Como el parámetro content_type
y el parámetro accept_type
no están configurados, utilizan automáticamente el valor del parámetrodataset_type
, que es text/csv
.
model_config = clarify.ModelConfig(
model_name=your_model,
instance_type='ml.m4.xlarge',
instance_count=1,
)
El siguiente ejemplo de configuración utiliza un objeto ModelPredictedLabelConfig
con un índice de etiqueta de 0
. Esto indica al trabajo de procesamiento de SageMaker Clarify que ubique la etiqueta prevista en la primera columna de la salida del modelo. En este ejemplo, el trabajo de procesamiento utiliza la indexación de base cero.
predicted_label_config = clarify.ModelPredictedLabelConfig(
label=0,
)
En combinación con el ejemplo de configuración anterior, el siguiente ejemplo de código inicia un trabajo de procesamiento de SageMaker Clarify para calcular todas las métricas de sesgo posteriores al entrenamiento.
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",
)
Igualmente, puede elegir qué métricas calcular si asigna una lista de métricas de sesgo posteriores al entrenamiento al parámetro methods
. Por ejemplo, sustituya methods=“all”
por methods=["DPPL", "DI"]
para calcular solo la Diferencia en las proporciones positivas de las etiquetas predichas y el Impacto dispar.
Cómo calcular todas las métricas de sesgo para un conjunto de datos CSV
El siguiente ejemplo de configuración muestra cómo ejecutar todas las métricas de sesgo previas y posteriores al entrenamiento en un trabajo de procesamiento de SageMaker Clarify.
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",
)
Para ver un ejemplo de cuaderno con instrucciones sobre cómo ejecutar un trabajo de procesamiento de SageMaker Clarify en SageMaker Studio Classic para detectar sesgos, consulte Equidad y explicabilidad
¿Cómo calcular SHAP valores para un conjunto de datos CSV
SageMaker Clarify proporciona atribuciones de características mediante el algoritmo KernelShapModelPredictedLabelConfig
objeto tiene un índice de probabilidad. 1
Esto indica al trabajo de procesamiento SageMaker de Clarify que extraiga la puntuación de probabilidad de la segunda columna de la salida del modelo (mediante una indexación basada en cero).
probability_config = clarify.ModelPredictedLabelConfig( probability=1, )
El objeto proporciona SHAPConfig
SHAP parámetros de análisis. En este ejemplo, el SHAP baseline
se omite el parámetro y su valor es1
. num_clusters
Esto indica al procesador SageMaker Clarify que calcule uno SHAP muestra de referencia basada en la agrupación en clústeres del conjunto de datos de entrada. Si desea elegir el conjunto de datos de referencia, consulte SHAP Líneas de base para la explicabilidad.
shap_config = clarify.SHAPConfig( num_clusters=1, )
El siguiente ejemplo de código inicia un trabajo de procesamiento de SageMaker Clarify para calcular SHAP valores.
clarify_processor.run_explainability( data_config=data_config, model_config=model_config, model_scores=probability_config, explainability_config=shap_config, )
Por ejemplo, un cuaderno con instrucciones sobre cómo ejecutar un trabajo de SageMaker procesamiento de Clarify en SageMaker Studio Classic para calcular SHAP valores, consulte Equidad y explicabilidad con SageMaker
Cómo calcular las gráficas de dependencia parcial (PDPs) para un conjunto de datos CSV
PDPs muestran la dependencia de la respuesta objetivo prevista con respecto a una o más características de entrada de interés, manteniendo constantes todas las demás características. Una línea inclinada hacia arriba, o curva en el PDP, indica que la relación entre el objetivo y las características de entrada es positiva, y la inclinación indica la fortaleza de la relación. Una línea o curva inclinada hacia abajo indica que si una característica de entrada disminuye, la variable objetivo aumenta. De forma intuitiva, puede interpretar la dependencia parcial como la respuesta de la variable objetivo a cada característica de entrada de interés.
El siguiente ejemplo de configuración sirve para utilizar un PDPConfig
objeto para indicar al trabajo de procesamiento de SageMaker Clarify que calcule la importancia de la Income
función.
pdp_config = clarify.PDPConfig(
features=["Income"],
grid_resolution=10,
)
En el ejemplo anterior, el parámetro grid_resolution
divide el rango de valores de la característica Income
en 10
buckets. El trabajo de SageMaker procesamiento de Clarify generará PDPs para Income
dividirlo en 10
segmentos en el eje x. El eje y mostrará el impacto marginal de Income
en las predicciones.
El siguiente ejemplo de código inicia un trabajo de procesamiento SageMaker de Clarify para calcular PDPs.
clarify_processor.run_explainability( data_config=data_config, model_config=model_config, model_scores=probability_config, explainability_config=pdp_config, )
Para ver un ejemplo de cuaderno con instrucciones sobre cómo ejecutar un trabajo de SageMaker procesamiento de Clarify en SageMaker Studio Classic para realizar cálculos PDPs, consulte Explicabilidad con SageMaker Clarify: gráficos de dependencia parcial (PDP)
¿Cómo calcular ambos SHAP valores y PDPs para un conjunto de datos CSV
Puede calcular ambos SHAP valores y PDPs en un solo trabajo de SageMaker procesamiento de Clarify. En el siguiente ejemplo de configuración, el parámetro top_k_features
de un objeto PDPConfig
nuevo se establece en 2
. Esto indica al trabajo de procesamiento de SageMaker Clarify que calcule PDPs para las 2
funciones que tienen el mayor tamaño mundial SHAP valores.
shap_pdp_config = clarify.PDPConfig( top_k_features=2, grid_resolution=10, )
El siguiente ejemplo de código inicia un trabajo de SageMaker procesamiento de Clarify para calcular ambos SHAP valores y PDPs.
clarify_processor.run_explainability( data_config=data_config, model_config=model_config, model_scores=probability_config, explainability_config=[shap_config, shap_pdp_config], )
Los siguientes ejemplos muestran cómo configurar el análisis de sesgos y el análisis de explicabilidad para un conjunto de datos tabular en el formato denso > SageMaker AI JSON Lines. Para obtener más información, consulta Formato de solicitud JSONLINES. En estos ejemplos, el conjunto de datos entrante tiene los mismos datos que en la sección anterior, pero están en el formato JSON Lines. Cada línea es un objeto JSON válido. La clave Features
apunta a una matriz de valores de características, y la clave Label
apunta a la etiqueta de verdad fundamental.
{"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}
...
En el siguiente ejemplo de configuración, el objeto DataConfig
especifica el conjunto de datos de entrada y dónde almacenar la salida.
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,
)
En el ejemplo de configuración anterior, el parámetro de características se establece en la JMESPathFeatures
para que el trabajo de procesamiento de SageMaker Clarify pueda extraer la matriz de entidades de cada registro. El label
parámetro está configurado en forma de JMESPath expresión para Label
que el trabajo de SageMaker procesamiento de Clarify pueda extraer la etiqueta Ground Truth de cada registro. El parámetro s3_data_input_path
puede ser un URI de un archivo de conjunto de datos o un prefijo URI de Amazon S3. Si proporciona un prefijo URI de S3, el trabajo de procesamiento de SageMaker Clarify recopila de forma recursiva todos los archivos de S3 ubicados debajo del prefijo. El valor de s3_output_path
debe ser un prefijo URI de S3 para contener los resultados del análisis. SageMaker La IA lo usa s3_output_path
al compilar y no puede tomar el valor de un parámetro, propiedad o ExecutionVariable
expresión de SageMaker AI Pipeline que se utilice durante el tiempo de ejecución.
Debe tener un modelo entrenado para calcular las métricas de sesgo posteriores al entrenamiento de la importancia de las características. El siguiente ejemplo proviene de un modelo de clasificación binaria que genera datos en formato JSON Lines en el formato del ejemplo. Cada fila de la salida del modelo es un objeto JSON válido. La clave predicted_label
apunta a la etiqueta predicha y la clave probability
apunta al valor de probabilidad.
{"predicted_label":0,"probability":0.028986845165491}
{"predicted_label":1,"probability":0.825382471084594}
...
En el siguiente ejemplo de configuración, un ModelConfig
objeto indica al trabajo de procesamiento de SageMaker Clarify que despliegue el modelo de SageMaker IA en un punto final efímero. El punto de conexión utiliza una instancia de inferencia ml.m4.xlarge
.
model_config = clarify.ModelConfig(
model_name=your_model,
instance_type='ml.m4.xlarge',
instance_count=1,
content_template='{"Features":$features}',
)
En el ejemplo de configuración anterior, los parámetros content_type
y accept_type
no están configurados. Por lo tanto, utilizan automáticamente el valor del parámetro dataset_type
del objeto DataConfig
, que es application/jsonlines
. El trabajo SageMaker de procesamiento de Clarify utiliza el content_template
parámetro para componer la entrada del modelo sustituyendo el $features
marcador de posición por un conjunto de características.
El siguiente ejemplo de configuración muestra cómo establecer el parámetro de etiqueta del ModelPredictedLabelConfig
objeto en la JMESPath expresiónpredicted_label
. Esto extraerá la etiqueta predicha de la salida del modelo.
predicted_label_config = clarify.ModelPredictedLabelConfig(
label='predicted_label',
)
El siguiente ejemplo de configuración muestra cómo establecer el probability
parámetro del ModelPredictedLabelConfig
objeto en la JMESPath expresiónprobability
. Esto extraerá la puntuación de la salida del modelo.
probability_config = clarify.ModelPredictedLabelConfig(
probability='probability',
)
Para calcular las métricas de sesgo y la importancia de las características de los conjuntos de datos en formato JSON Lines, utilice las mismas instrucciones de ejecución y objetos de configuración que en la sección anterior para los conjuntos de datos CSV. Puede ejecutar un trabajo de procesamiento SageMaker de Clarify en SageMaker Studio Classic para detectar sesgos y calcular la importancia de las funciones. Para obtener instrucciones y un ejemplo de cuaderno, consulte Equidad y explicabilidad con SageMaker Clarify (formato de líneas JSON)
SageMaker Clarify admite las explicaciones de los modelos de procesamiento del lenguaje natural (PNL). Estas explicaciones le ayudan a entender qué secciones del texto son las más importantes para las predicciones del modelo. Puede explicar la predicción del modelo para una sola instancia del conjunto de datos de entrada, o las predicciones del modelo del conjunto de datos de referencia. Para comprender y visualizar el comportamiento de un modelo, puede especificar varios niveles de granularidad. Para ello, defina la longitud del segmento de texto, como sus tokens, oraciones y párrafos.
SageMaker La explicabilidad de la PNL de Clarify es compatible con los modelos de clasificación y regresión. También puede usar SageMaker Clarify para explicar el comportamiento del modelo en conjuntos de datos multimodales que contienen características textuales, categóricas o numéricas. La explicabilidad mediante la PNL de los conjuntos de datos multimodales puede ayudarlo a comprender la importancia de cada característica para el resultado del modelo. SageMaker Clarify admite 62 idiomas y puede gestionar textos que incluyan varios idiomas.
El siguiente ejemplo muestra un archivo de configuración de análisis que calcula la importancia de las características para el NLP. En este ejemplo, el conjunto de datos entrante es un conjunto de datos tabular en formato CSV, con una columna de etiqueta binaria y dos columnas de características.
0,2,"Flavor needs work"
1,3,"They taste good"
1,5,"The best"
0,1,"Taste is awful"
...
El siguiente ejemplo de configuración muestra cómo especificar un conjunto de datos de entrada en formato CSV y una ruta de datos de salida con el objeto 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,
)
En el ejemplo de configuración anterior, el parámetro s3_data_input_path
puede ser un URI de un archivo de conjunto de datos o un prefijo URI de Amazon S3. Si proporciona un prefijo URI de S3, el trabajo de procesamiento de SageMaker Clarify recopila de forma recursiva todos los archivos de S3 ubicados debajo del prefijo. El valor de s3_output_path
debe ser un prefijo URI de S3 para contener los resultados del análisis. SageMaker La IA lo usa s3_output_path
al compilar y no puede tomar el valor de un parámetro, propiedad o ExecutionVariable
expresión de SageMaker AI Pipeline que se utilice durante el tiempo de ejecución.
El siguiente ejemplo de salida se creó a partir de un modelo de clasificación binaria entrenado en el conjunto de datos de entrada anterior. El modelo de clasificación acepta datos CSV y genera una puntuación única entre 0
y 1
.
0.491656005382537 0.569582343101501 ...
En el siguiente ejemplo, se muestra cómo configurar el ModelConfig
objeto para implementar un modelo de SageMaker IA. En este ejemplo, un punto de conexión efímero implementa el modelo. Este punto de conexión utiliza una instancia de inferencia ml.g4dn.xlarge
equipada con una GPU para acelerar la inferencia.
nlp_model_config = clarify.ModelConfig(
model_name=your_nlp_model_name,
instance_type='ml.g4dn.xlarge',
instance_count=1,
)
El siguiente ejemplo muestra cómo configurar el objeto ModelPredictedLabelConfig
para localizar la probabilidad (puntuación) en la primera columna con un índice de 0
.
probability_config = clarify.ModelPredictedLabelConfig( probability=0, )
El siguiente ejemplo SHAP La configuración muestra cómo ejecutar un análisis de explicabilidad por token utilizando un modelo y un conjunto de datos de entrada en inglés.
text_config = clarify.TextConfig(
language='english',
granularity='token',
)
nlp_shap_config = clarify.SHAPConfig(
baseline=[[4, '[MASK]']],
num_samples=100,
text_config=text_config,
)
En el ejemplo anterior, el objeto TextConfig
activa el análisis de explicabilidad del NLP. El parámetro granularity
indica que el análisis debe analizar los tokens. En inglés, cada token es una palabra. Para otros idiomas, consulta la documentación de SpACy sobre la tokenización, que Clarify utiliza para el procesamientoRating
de para establecer un valor local 4
SHAP instancia de referencia. Se utiliza un token de máscara especial [MASK]
para reemplazar un token (palabra) en Comments
.
En el ejemplo anterior, si la instancia es 2,"Flavor needs work"
, establece la referencia en un Rating
promedio de 4
con la siguiente referencia.
4, '[MASK]'
En el ejemplo anterior, el explicador de SageMaker Clarify recorre en iteración cada token y lo reemplaza por la máscara, de la siguiente manera.
2,"[MASK] needs work"
4,"Flavor [MASK] work"
4,"Flavor needs [MASK]"
A continuación, el explicador de SageMaker Clarify enviará cada línea a su modelo para realizar predicciones. Esto es para que el explicador aprenda las predicciones con y sin las palabras enmascaradas. Luego, SageMaker el explicador de Clarify usa esta información para calcular la contribución de cada token.
El siguiente ejemplo de código inicia un trabajo de procesamiento de SageMaker Clarify para calcular SHAP valores.
clarify_processor.run_explainability( data_config=nlp_data_config, model_config=nlp_model_config, model_scores=probability_config, explainability_config=nlp_shap_config, )
Para ver un ejemplo de cuaderno con instrucciones sobre cómo ejecutar un trabajo de procesamiento de SageMaker Clarify en SageMaker Studio Classic para el análisis de la explicabilidad de la PNL, consulte Explicación del análisis de opiniones textuales mediante
SageMaker Clarify genera mapas térmicos que proporcionan información sobre cómo los modelos de visión artificial clasifican y detectan los objetos en las imágenes.
En el siguiente ejemplo de configuración, el conjunto de datos de entrada consta de imágenes 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,
)
En el ejemplo de configuración anterior, el objeto DataConfig
contiene una s3_data_input_path
establecida en un prefijo URI de Amazon S3. El trabajo SageMaker de procesamiento Clarify recopila de forma recursiva todos los archivos de imagen ubicados bajo el prefijo. El parámetro s3_data_input_path
puede ser un URI de un archivo de conjunto de datos o un prefijo URI de Amazon S3. Si proporciona un prefijo URI de S3, el trabajo de procesamiento de SageMaker Clarify recopila de forma recursiva todos los archivos S3 ubicados bajo el prefijo. El valor de s3_output_path
debe ser un prefijo URI de S3 para contener los resultados del análisis. SageMaker La IA lo usa s3_output_path
al compilar y no puede tomar el valor de un parámetro, propiedad o ExecutionVariable
expresión de SageMaker AI Pipeline que se utilice durante el tiempo de ejecución.
Cómo explicar un modelo de clasificación de imágenes
El trabajo SageMaker de procesamiento Clarify explica las imágenes mediante el algoritmo KernelShap, que trata la imagen como un conjunto de superpíxeles. Dado que se trata de un conjunto de datos formado por imágenes, el trabajo de procesamiento genera un conjunto de datos de imágenes en el que cada imagen muestra el mapa térmico de los superpíxeles pertinentes.
El siguiente ejemplo de configuración muestra cómo configurar un análisis de explicabilidad mediante un modelo de clasificación de imágenes de IA SageMaker . Para obtener más información, consulta Clasificación de imágenes - 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",
)
En el ejemplo de configuración anterior, un modelo denominado your_cv_ic_model
se ha entrenado para que clasifique los animales de las imágenes JPEG de entrada. El ModelConfig
objeto del ejemplo anterior indica al trabajo de procesamiento de SageMaker Clarify que implemente el modelo de SageMaker IA en un punto final efímero. Para acelerar la inferencia, el punto de conexión utiliza una instancia de inferencia ml.p2.xlarge
equipada con una GPU.
Después de enviar una imagen JPEG a un punto de conexión, el punto de conexión la clasifica y devuelve una lista de puntuaciones. Cada puntuación corresponde a una categoría. El objeto ModelPredictedLabelConfig
proporciona el nombre de cada categoría, de la siguiente manera.
ic_prediction_config = clarify.ModelPredictedLabelConfig(
label_headers=['bird', 'cat', 'dog'],
)
Un ejemplo de salida para la entrada anterior ['ave','gato','perro'] podría ser 0,3,0,6,0,1, donde 0,3 representa la puntuación de confianza para clasificar una imagen como ave.
El siguiente ejemplo SHAP la configuración muestra cómo generar explicaciones para un problema de clasificación de imágenes. Utiliza un objeto ImageConfig
para activar el análisis.
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 extrae las características mediante el método de agrupamiento iterativo lineal simple (SLIC)model_type
indica el tipo de problema de clasificación de imágenes. El parámetro num_segments
estima el número aproximado de segmentos que se etiquetarán en la imagen de entrada. A continuación, el número de segmentos se pasa al parámetro slic n_segments
.
Cada segmento de la imagen se considera un superpíxel y es local SHAP los valores se calculan para cada segmento. El parámetro segment_compactness
determina la forma y el tamaño de los segmentos de imagen que se generan con el método slic scikit-image. A continuación, los tamaños y las formas de los segmentos de la imagen se transfieren al parámetro slic compactness
.
El siguiente ejemplo de código inicia un trabajo SageMaker de procesamiento de Clarify para generar mapas térmicos para las imágenes. Los valores positivos del mapa térmico muestran que la característica aumentó la puntuación de confianza a la hora de detectar el objeto. Los valores negativos indican que la característica disminuyó la puntuación de confianza.
clarify_processor.run_explainability( data_config=cv_data_config, model_config=ic_model_config, model_scores=ic_prediction_config, explainability_config=ic_shap_config, )
Para ver un ejemplo de cuaderno que usa SageMaker Clarify para clasificar imágenes y explicar su clasificación, consulte Explicación de la clasificación de imágenes con SageMaker Clarify
Cómo explicar un modelo de detección de objetos
Un trabajo SageMaker de procesamiento de Clarify permite detectar y clasificar los objetos de una imagen y, a continuación, proporcionar una explicación del objeto detectado. El proceso de explicación es el siguiente.
-
Los objetos de la imagen se clasifican primero en una de las clases de una colección específica. Por ejemplo, si un modelo de detección de objetos puede reconocer gatos, perros y peces, estas tres clases forman parte de una colección. Esta colección se especifica mediante el parámetro
label_headers
de la siguiente manera.clarify.ModelPredictedLabelConfig( label_headers=object_categories, )
-
El trabajo SageMaker de procesamiento Clarify produce una puntuación de confianza para cada objeto. Una puntuación de confianza alta indica que pertenece a una de las clases de una colección específica. El trabajo SageMaker de procesamiento Clarify también produce las coordenadas de un cuadro delimitador que delimita el objeto. Para obtener más información acerca de las puntuaciones de confianza y los cuadros delimitadores, consulte Formatos de respuesta.
-
SageMaker A continuación, Clarify proporciona una explicación para la detección de un objeto en la escena de la imagen. Utiliza los métodos descritos en la sección Cómo explicar un modelo de clasificación de imágenes.
En el siguiente ejemplo de configuración, un modelo de detección de objetos mediante SageMaker IA your_cv_od_model
se basa en imágenes JPEG para identificar a los animales que aparecen en ellas.
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",
)
El ModelConfig
objeto del ejemplo de configuración anterior indica al trabajo de procesamiento de SageMaker Clarify que despliegue el modelo de SageMaker IA en un punto final efímero. Para acelerar el procesamiento de las imágenes, este punto de conexión utiliza una instancia de inferencia ml.p2.xlarge
equipada con una GPU.
En el siguiente ejemplo de configuración, el objeto ModelPredictedLabelConfig
proporciona el nombre de cada categoría para su clasificación.
ic_prediction_config = clarify.ModelPredictedLabelConfig(
label_headers=['bird', 'cat', 'dog'],
)
El siguiente ejemplo SHAP La configuración muestra cómo generar explicaciones para la detección de un objeto.
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,
)
En la configuración del ejemplo anterior, el objeto ImageConfig
activa el análisis. El parámetro model_type
indica que el tipo de problema es la detección de objetos. Para ver una descripción detallada del resto de parámetros, consulte Archivos de configuración del análisis.
El siguiente ejemplo de código inicia un trabajo SageMaker de procesamiento de Clarify para generar mapas térmicos para las imágenes. Los valores positivos del mapa térmico muestran que la característica aumentó la puntuación de confianza a la hora de detectar el objeto. Los valores negativos indican que la característica disminuyó la puntuación de confianza.
clarify_processor.run_explainability( data_config=cv_data_config, model_config=od_model_config, model_scores=od_prediction_config, explainability_config=od_shap_config, )
Para ver un ejemplo de cuaderno que usa SageMaker Clarify para detectar objetos en una imagen y explicar sus predicciones, consulte Explicación de los modelos de detección de objetos con Amazon SageMaker AI Clarify
Los siguientes ejemplos muestran cómo configurar los datos en formato denso JSON de SageMaker IA para explicar un modelo de previsión de series temporales. Para obtener más información sobre el formato JSON, consulte Formato de solicitud JSON.
[
{
"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
},
]
Configuración de datos
Utilice TimeSeriesDataConfig
para comunicar a su trabajo de explicabilidad cómo analizar correctamente los datos del conjunto de datos de entrada pasado, como se muestra en el siguiente ejemplo de configuración:
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',
)
Configuración asimétrica de valores de Shapley
Utilice AsymmetricShapleyValueConfig
para definir los argumentos del análisis de la explicación del modelo de previsión de series temporales, como la referencia, la dirección, el nivel de detalle y el número de muestras. Los valores de referencia se establecen para los tres tipos de datos: series temporales relacionadas, covariables estáticas y series temporales objetivo. La AsymmetricShapleyValueConfig
configuración indica al procesador SageMaker Clarify cómo calcular las atribuciones de características para un elemento a la vez. La siguiente configuración muestra un ejemplo de definición de 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"
},
)
Los valores que proporcione a AsymmetricShapleyValueConfig
se pasan a la configuración de análisis como una entrada en methods
con la clave asymmetric_shapley_value
.
Configuración del modelo
Puede controlar la estructura de la carga útil enviada desde el procesador SageMaker Clarify. En el siguiente ejemplo de código, un objeto de ModelConfig
configuración dirige una tarea de explicabilidad de previsión de series temporales a agregar registros mediante la JMESPath sintaxis'{"instances": $records}'
, donde la estructura de cada registro se define con la siguiente plantilla de registro. '{"start":
$start_time, "target": $target_time_series, "dynamic_feat": $related_time_series,
"cat": $static_covariates}'
Tenga en cuenta que $start_time
, $target_time_series
, $related_time_series
y $static_covariates
son símbolos internos que se utilizan para asignar los valores del conjunto de datos a los valores de las solicitudes de punto de conexión.
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]'} ) )
Del mismo modo, el atributo forecast
de TimeSeriesModelConfig
que se pasa a la configuración de análisis con la clave time_series_predictor_config
, se utiliza para extraer la previsión del modelo de la respuesta del punto de conexión. Este podría ser un ejemplo de respuesta por lotes del punto de conexión:
{
"predictions": [
{"mean": [13.4, 3.6, 1.0]},
{"mean": [23.0, 4.7, 3.0]},
{"mean": [3.4, 5.6, 2.0]}
]
}
Si la JMESPath expresión proporcionada forecast
es {'predictions [*] .mean [:2] '}}, el valor de la previsión se analiza de la siguiente manera:
[[13.4, 3.6], [23.0, 4.7], [3.4, 5.6]]
Cómo ejecutar trabajos de procesamiento de SageMaker Clarify en paralelo
Cuando trabaje con conjuntos de datos grandes, puede usar Apache Spark
El siguiente ejemplo de configuración muestra cómo SageMakerClarifyProcessor
crear un procesador SageMaker Clarify con instancias de 5
cómputo. Para ejecutar cualquier trabajo asociado alSageMakerClarifyProcessor
, SageMaker Clarify utiliza el procesamiento distribuido de Spark.
from sagemaker import clarify
spark_clarify_processor = clarify.SageMakerClarifyProcessor(
role=role,
instance_count=5,
instance_type='ml.c5.xlarge',
)
Si estableces el save_local_shap_values
parámetro enTrue
, el trabajo de SHAPConfig
Para asociar el local SHAP los valores a las instancias del conjunto de datos de entrada, utilice el joinsource
parámetro deDataConfig
. Si agrega más instancias de cómputo, le recomendamos que también aumente el instance_count
de ModelConfig