Generación de información detallada de inteligencia artificial responsable con YAML y Python
SE APLICA A:Extensión ML de la CLI de Azure v2 (actual)SDK de Python azure-ai-ml v2 (actual)
Puede generar un panel y un cuadro de mandos de inteligencia artificial responsable a través de un trabajo de canalización mediante componentes de inteligencia artificial responsable. Hay seis componentes principales para crear paneles de inteligencia artificial responsable, junto con un par de componentes auxiliares. Este es un gráfico de experimentos de ejemplo:
Componentes de la inteligencia artificial responsable
Estos son los componentes principales para construir el panel de inteligencia artificial responsable en Azure Machine Learning:
RAI Insights dashboard constructor
- Componentes de la herramienta:
Add Explanation to RAI Insights dashboard
Add Causal to RAI Insights dashboard
Add Counterfactuals to RAI Insights dashboard
Add Error Analysis to RAI Insights dashboard
Gather RAI Insights dashboard
Gather RAI Insights score card
Los componentes RAI Insights dashboard constructor
y Gather RAI Insights dashboard
siempre son necesarios, además de al menos uno de los componentes de la herramienta. Sin embargo, no es necesario usar todas las herramientas de todos los paneles de inteligencia artificial responsable.
En las siguientes secciones se muestran las especificaciones de los componentes de inteligencia artificial responsable y ejemplos de fragmentos de código en YAML y Python.
Importante
Los elementos marcados (versión preliminar) en este artículo se encuentran actualmente en versión preliminar pública. Se ofrece la versión preliminar sin Acuerdo de Nivel de Servicio y no se recomienda para cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.
Limitaciones
El conjunto actual de componentes tiene varias limitaciones de uso:
- Todos los modelos se deben registrar en Azure Machine Learning en formato MLflow con un tipo sklearn (scikit-learn).
- Los modelos deben poder cargarse en el entorno de componentes.
- Los modelos deben poder seleccionarse.
- Los modelos deben proporcionarse a los componentes de IA responsable mediante el componente
Fetch Registered Model
que proporcionamos. - Las entradas del conjunto de datos deben estar en formato
mltable
. - Se debe proporcionar un modelo aunque solo se haga un análisis causal de los datos. Para este fin, puede usar los estimadores
DummyClassifier
yDummyRegressor
de SciKit-Learn.
Constructor del panel de información de RAI
Este componente tiene tres puertos de entrada:
- Un modelo de Machine Learning
- Conjunto de datos de entrenamiento
- Conjunto de datos de prueba
Use el conjunto de datos de entrenamiento y prueba que usó al entrenar el modelo para generar información de depuración de modelos con componentes como el análisis de errores y las explicaciones del modelo. En el caso de los componentes como el análisis causal, que no requiere un modelo, se usa el conjunto de datos de entrenamiento para entrenar el modelo causal y así generar la información causal. El conjunto de datos de prueba se usa para rellenar las visualizaciones del panel de inteligencia artificial responsable.
La manera más fácil de proporcionar el modelo es registrar el modelo de entrada y hacer referencia al mismo modelo en el puerto de entrada del modelo del componente RAI Insight Constructor
, que se describe más adelante en este artículo.
Nota
Actualmente solo se admiten modelos con formato MLFlow, con un tipo sklearn
.
Los dos conjunto de datos deben estar en formato mltable
. Los conjuntos de datos de entrenamiento y prueba proporcionados no tienen que ser los mismos que se utilizan en el entrenamiento del modelo, pero pueden serlo. De manera predeterminada, el conjunto de datos de prueba está restringido a 5000 filas por motivos de rendimiento de la interfaz de usuario de visualización.
El componente del constructor también acepta los parámetros siguientes:
Nombre de parámetro | Descripción | Tipo |
---|---|---|
title |
Descripción breve del panel. | Cadena |
task_type |
Especifica si el modelo es para clasificación, regresión o previsión. | Cadena, classification , regression o forecasting |
target_column_name |
Nombre de la columna de los conjuntos de datos de entrada, que el modelo intenta predecir. | String |
maximum_rows_for_test_dataset |
Número máximo de filas permitidas en el conjunto de datos de prueba (por motivos de rendimiento). | Entero, el valor predeterminado es 5000 |
categorical_column_names |
Columnas de los conjuntos de datos, que representan datos categóricos. | Lista opcional de cadenas1 |
classes |
Lista completa de etiquetas de clase en el conjunto de datos de entrenamiento. | Lista opcional de cadenas1 |
feature_metadata |
Especifica información adicional que el panel podría necesitar en función del tipo de tarea. Para la previsión, esto incluye especificar qué columna es la columna datetime y qué columna es la columna time_series_id . En el caso de la visión, esto puede incluir el valor medio de píxel o los datos de ubicación de una imagen. |
Lista opcional de cadenas1 |
use_model_dependency |
Especifica si el modelo requiere que se sirva un contenedor de Docker independiente debido a dependencias en conflicto con el panel RAI. Para la previsión, esto debe habilitarse. Por lo general, para otros escenarios, esto no está habilitado. | Booleano |
1 Las listas deben proporcionarse como una única cadena codificada en JSON para las entradascategorical_column_names
, classes
y feature_metadata
.
El componente del constructor tiene una única salida denominada rai_insights_dashboard
. Se trata de un panel vacío en el que funcionan los componentes de herramientas individuales. Todos los resultados se ensamblan mediante el componente de Gather RAI Insights dashboard
al final.
create_rai_job:
type: command
component: azureml://registries/azureml/components/microsoft_azureml_rai_tabular_insight_constructor/versions/<get current version>
inputs:
title: From YAML snippet
task_type: regression
type: mlflow_model
path: azureml:<registered_model_name>:<registered model version>
train_dataset: ${{parent.inputs.my_training_data}}
test_dataset: ${{parent.inputs.my_test_data}}
target_column_name: ${{parent.inputs.target_column_name}}
categorical_column_names: '["location", "style", "job title", "OS", "Employer", "IDE", "Programming language"]'
Agregar causal al panel de información de RAI
Este componente lleva a cabo un análisis causal en los conjuntos de datos proporcionados. Tiene un único puerto de entrada, que acepta la salida de RAI Insights dashboard constructor
. También acepta los siguientes parámetros:
Nombre de parámetro | Descripción | Escriba |
---|---|---|
treatment_features |
Lista de nombres de características en los conjuntos de datos que son potencialmente “tratables” para obtener resultados diferentes. | Lista de cadenas2. |
heterogeneity_features |
Lista de nombres de características de los conjuntos de datos, que podrían afectar al comportamiento de las características “tratables”. De manera predeterminada, se considerarán todas las características. | Lista opcional de cadenas2. |
nuisance_model |
Modelo utilizado para calcular el resultado de cambiar las características del tratamiento. | Cadena opcional. Debe ser linear o AutoML , con el valor predeterminado en linear . |
heterogeneity_model |
Modelo utilizado para calcular el efecto de las características de heterogeneidad en el resultado. | Cadena opcional. Debe ser linear o forest , con el valor predeterminado en linear . |
alpha |
Nivel de confianza de los intervalos de confianza. | Número de punto flotante opcional, el valor predeterminado es 0,05. |
upper_bound_on_cat_expansion |
Expansión máxima de características categóricas. | Entero opcional, el valor predeterminado es 50. |
treatment_cost |
El costo de los tratamientos. Si es 0, todos los tratamientos tendrán un costo de cero. Si se pasa una lista, cada elemento se aplica a una de las treatment_features .Cada elemento puede ser un valor escalar para indicar un costo constante de la aplicación de ese tratamiento o una matriz que indique el costo de cada muestra. Si se trata de un tratamiento, la matriz de esa característica debe ser bidimensional,con la primera dimensión en representación de las muestras y la segunda en representación de la diferencia de costo entre los valores no predeterminados y el valor predeterminado. |
Lista o entero opcionales2. |
min_tree_leaf_samples |
Número mínimo de muestras por hoja en el árbol de directivas. | Entero opcional, el valor predeterminado es 2. |
max_tree_depth |
Profundidad máxima del árbol de directivas. | Entero opcional, el valor predeterminado es 2. |
skip_cat_limit_checks |
De manera predeterminada, las características categóricas deben tener varias instancias de cada categoría para que un modelo se ajuste de manera sólida. Si se establece en True , se omitirán estas comprobaciones. |
Boolean opcional, el valor predeterminado es False . |
categories |
Las categorías que se van a usar para las columnas categóricas. Si es auto , las categorías se deducirán para todas las columnas categóricas. De lo contrario, este argumento debe tener tantas entradas como haya columnas categóricas.Cada entrada debe ser auto para deducir los valores de esa columna o la lista de valores de la columna. Si se proporcionan valores explícitos, el primero se trata como el valor de “control” de esa columna con la que se comparan otros valores. |
Opcional, auto o lista2. |
n_jobs |
Grado de paralelismo que se va a usar. | Entero opcional, el valor predeterminado es 1. |
verbose |
Expresa si se debe proporcionar una salida detallada durante el cálculo. | Entero opcional, el valor predeterminado es 1. |
random_state |
Inicialización para el generador de números pseudoaleatorios (PRNG). | Entero opcional. |
2 Para los parámetros list
: varios de los parámetros aceptan listas de otros tipos (cadenas, números, incluso otras listas). Para pasarlos al componente, primero deben estar codificados en JSON en una sola cadena.
Este componente tiene un único puerto de salida, que se puede conectar a uno de los puertos de entrada insight_[n]
del componente de Gather RAI Insights Dashboard
.
causal_01:
type: command
component: azureml://registries/azureml/components/microsoft_azureml_rai_tabular_causal/versions/<version>
inputs:
rai_insights_dashboard: ${{parent.jobs.create_rai_job.outputs.rai_insights_dashboard}}
treatment_features: `["Number of GitHub repos contributed to", "YOE"]'
Agregar contrafactuales al panel de información de RAI
Este componente genera puntos contrafactuales del conjunto de datos de prueba proporcionado. Tiene un único puerto de entrada, que acepta la salida del constructor del panel de información de RAI. También acepta los siguientes parámetros:
Nombre de parámetro | Descripción | Tipo |
---|---|---|
total_CFs |
Número de puntos contrafactuales que se van a generar por cada fila del conjunto de datos de prueba. | Entero opcional, el valor predeterminado es 10. |
method |
Explicación dice-ml que se va a usar. |
Cadena opcional. random , genetic o kdtree . Tiene como valor predeterminado random . |
desired_class |
Índice que identifica la clase contrafactual deseada. La clasificación binaria se debe establecer en opposite . |
Cadena o entero opcionales. El valor predeterminado es 0. |
desired_range |
En el caso de los problemas de regresión, identifique el rango de resultados deseado. | Lista opcional de dos números3. |
permitted_range |
Diccionario con los nombres de características como claves y el rango permitido en una lista como valores. El valor predeterminado es el rango inferido de los datos de entrenamiento. | Lista o cadena opcionales3. |
features_to_vary |
Una cadena all o una lista de nombres de características para variar. |
Lista o cadena opcionales3. |
feature_importance |
Marca para habilitar el cálculo de las importancia de las características mediante dice-ml . |
Opcional booleano. Tiene como valor predeterminado True . |
3 Para los parámetros no escalares: los parámetros que son listas o diccionarios deben pasarse como cadenas codificadas en JSON únicas.
Este componente tiene un único puerto de salida, que se puede conectar a uno de los puertos de entrada insight_[n]
del componente de Gather RAI Insights dashboard
.
counterfactual_01:
type: command
component: azureml://registries/azureml/components/microsoft_azureml_rai_tabular_counterfactual/versions/<version>
inputs:
rai_insights_dashboard: ${{parent.jobs.create_rai_job.outputs.rai_insights_dashboard}}
total_CFs: 10
desired_range: "[5, 10]"
Agregar análisis de errores al panel de información de RAI
Este componente genera un análisis de errores del modelo. Tiene un único puerto de entrada, que acepta la salida de RAI Insights Dashboard Constructor
. También acepta los siguientes parámetros:
Nombre de parámetro | Descripción | Tipo |
---|---|---|
max_depth |
Profundidad máxima del árbol de análisis de errores. | Entero opcional. El valor predeterminado es 3. |
num_leaves |
Número máximo de hojas en el árbol de errores. | Entero opcional. El valor predeterminado es 31. |
min_child_samples |
Número mínimo de puntos de datos que se necesitan para producir una hoja. | Entero opcional. El valor predeterminado es 20. |
filter_features |
Lista de una o dos características que se van a usar para el filtro de matriz. | Lista opcional, que se va a pasar como una única cadena codificada en JSON. |
Este componente tiene un único puerto de salida, que se puede conectar a uno de los puertos de entrada insight_[n]
del componente de Gather RAI Insights Dashboard
.
error_analysis_01:
type: command
component: azureml://registries/azureml/components/microsoft_azureml_rai_tabular_erroranalysis/versions/<version>
inputs:
rai_insights_dashboard: ${{parent.jobs.create_rai_job.outputs.rai_insights_dashboard}}
filter_features: `["style", "Employer"]'
Agregar explicación al panel de información de RAI
Este componente genera una explicación del modelo. Tiene un único puerto de entrada, que acepta la salida de RAI Insights Dashboard Constructor
. Acepta una única cadena de comentario opcional como parámetro.
Este componente tiene un único puerto de salida, que se puede conectar a uno de los puertos de entrada insight_[n]
del componente de recopilación del panel de información de RAI.
explain_01:
type: command
component: azureml://registries/azureml/components/microsoft_azureml_rai_tabular_explanation/versions/<version>
inputs:
comment: My comment
rai_insights_dashboard: ${{parent.jobs.create_rai_job.outputs.rai_insights_dashboard}}
Recopilación del panel de información de RAI
Este componente ensambla la información generada en un único panel de inteligencia artificial responsable. Tiene cinco puertos de entrada:
- El puerto
constructor
que se debe conectar al componente del constructor del panel de información de RAI. - Cuatro puertos
insight_[n]
que se pueden conectar a la salida de los componentes de la herramienta. Al menos uno de estos puertos debe estar conectado.
Hay dos puertos de salida:
- El puerto
dashboard
contiene el objeto completadoRAIInsights
. - El puerto
ux_json
contiene los datos necesarios para mostrar un panel mínimo.
gather_01:
type: command
component: azureml://registries/azureml/components/microsoft_azureml_rai_tabular_insight_gather/versions/<version>
inputs:
constructor: ${{parent.jobs.create_rai_job.outputs.rai_insights_dashboard}}
insight_1: ${{parent.jobs.causal_01.outputs.causal}}
insight_2: ${{parent.jobs.counterfactual_01.outputs.counterfactual}}
insight_3: ${{parent.jobs.error_analysis_01.outputs.error_analysis}}
insight_4: ${{parent.jobs.explain_01.outputs.explanation}}
Cómo generar un cuadro de mandos de IA responsable (versión preliminar)
La fase de configuración requiere que use su experiencia en el dominio para resolver el problema de establecer los valores de destino deseados en las métricas de equidad y rendimiento del modelo.
Al igual que otros componentes del panel de inteligencia artificial responsable configurados en la canalización de YAML, puede agregar un componente para generar el cuadro de mandos en la canalización de YAML:
scorecard_01:
type: command
component: azureml:rai_score_card@latest
inputs:
dashboard: ${{parent.jobs.gather_01.outputs.dashboard}}
pdf_generation_config:
type: uri_file
path: ./pdf_gen.json
mode: download
predefined_cohorts_json:
type: uri_file
path: ./cohorts.json
mode: download
En el que pdf_gen.json es el archivo JSON de configuración de generación de cuadros de mandos y predifined_cohorts_json es el archivo JSON de definición de cohortes predefinidas.
Este es un archivo JSON de ejemplo para la definición de cohortes y la configuración de generación de cuadros de mandos:
Definición de cohortes:
[
{
"name": "High Yoe",
"cohort_filter_list": [
{
"method": "greater",
"arg": [
5
],
"column": "YOE"
}
]
},
{
"name": "Low Yoe",
"cohort_filter_list": [
{
"method": "less",
"arg": [
6.5
],
"column": "YOE"
}
]
}
]
Este es un archivo de configuración de generación de cuadros de mandos como ejemplo de regresión:
{
"Model": {
"ModelName": "GPT-2 Access",
"ModelType": "Regression",
"ModelSummary": "This is a regression model to analyze how likely a programmer is given access to GPT-2"
},
"Metrics": {
"mean_absolute_error": {
"threshold": "<=20"
},
"mean_squared_error": {}
},
"FeatureImportance": {
"top_n": 6
},
"DataExplorer": {
"features": [
"YOE",
"age"
]
},
"Fairness": {
"metric": ["mean_squared_error"],
"sensitive_features": ["YOUR SENSITIVE ATTRIBUTE"],
"fairness_evaluation_kind": "difference OR ratio"
},
"Cohorts": [
"High Yoe",
"Low Yoe"
]
}
Este es un archivo de configuración de generación de cuadros de mandos como ejemplo de clasificación:
{
"Model": {
"ModelName": "Housing Price Range Prediction",
"ModelType": "Classification",
"ModelSummary": "This model is a classifier that predicts whether the house will sell for more than the median price."
},
"Metrics" :{
"accuracy_score": {
"threshold": ">=0.85"
},
}
"FeatureImportance": {
"top_n": 6
},
"DataExplorer": {
"features": [
"YearBuilt",
"OverallQual",
"GarageCars"
]
},
"Fairness": {
"metric": ["accuracy_score", "selection_rate"],
"sensitive_features": ["YOUR SENSITIVE ATTRIBUTE"],
"fairness_evaluation_kind": "difference OR ratio"
}
}
Definición de entradas del componente de cuadros de mando de inteligencia artificial responsable
En esta sección se muestran y se definen los parámetros necesarios para configurar el componente de cuadro de mandos de inteligencia artificial responsable.
Modelo
ModelName | Nombre del modelo |
---|---|
ModelType |
Valores de ["clasificación", "regresión"]. |
ModelSummary |
Escriba un texto que resuma la finalidad del modelo. |
Nota
Para la clasificación de varias clases, primero debe usar la estrategia de uno frente al resto para elegir la clase de referencia y, por tanto, dividir el modelo de clasificación de varias clases en un problema de clasificación binaria para la clase de referencia seleccionada frente al resto de clases.
Métricas
Métrica de rendimiento | Definición | Tipo de modelo |
---|---|---|
accuracy_score |
Fracción de puntos de datos que están clasificados correctamente. | clasificación |
precision_score |
Fracción de puntos de datos que están clasificados correctamente entre aquellos clasificados como 1. | clasificación |
recall_score |
Fracción de puntos de datos que están clasificados correctamente entre aquellos cuya etiqueta verdadera es 1. Nombres alternativos: tasa de verdaderos positivos, sensibilidad. | clasificación |
f1_score |
La puntuación F1 es la media armónica de precisión y recuperación. | clasificación |
error_rate |
Proporción de instancias clasificadas erróneamente en todo el conjunto de instancias. | clasificación |
mean_absolute_error |
Promedio de valores absolutos de errores. Más sólido para valores atípicos que mean_squared_error . |
Regresión |
mean_squared_error |
Promedio de errores cuadráticos. | Regresión |
median_absolute_error |
Mediana de errores cuadráticos. | Regresión |
r2_score |
Fracción de varianza en las etiquetas que explica el modelo. | Regresión |
Umbral: umbral deseado de la métrica seleccionada. Los tokens matemáticos permitidos son >, <, >= y <=m, seguidos de un número real. Por ejemplo, >= 0,75 significa que el objetivo de la métrica seleccionada es mayor o igual que 0,75.
Importancia de característica
top_n: número de características que se van a mostrar con un máximo de 10. Se permiten enteros positivos de hasta 10.
Imparcialidad
Métrica | Definición |
---|---|
metric |
Métrica principal para la equidad de la evaluación. |
sensitive_features |
Lista de nombres de características del conjunto de datos de entrada que se designan como características confidenciales del informe de equidad. |
fairness_evaluation_kind |
Valores de ["diferencia", "relación"]. |
threshold |
Valores objetivo deseados de la evaluación de equidad. Los tokens matemáticos permitidos son >, <, >= y <= seguidos de un número real. Por ejemplo, metric="accuracy", fairness_evaluation_kind="difference". <= 0,05 significa que el objetivo de la diferencia de precisión es menor o igual a 0,05. |
Nota
La elección de fairness_evaluation_kind
(seleccionar "diferencia" en lugar de "relación") afecta a la escala del valor del objetivo. En la selección, asegúrese de elegir un valor de destino significativo.
Puede seleccionar entre las métricas siguientes, emparejadas con fairness_evaluation_kind
para configurar el componente de evaluación de equidad del cuadro de mandos:
Métrica | fairness_evaluation_kind | Definición | Tipo de modelo |
---|---|---|---|
accuracy_score |
diferencia | La diferencia máxima en la puntuación de precisión entre dos grupos. | clasificación |
accuracy_score |
relación | La relación mínima en la puntuación de precisión entre los dos grupos. | clasificación |
precision_score |
diferencia | La diferencia máxima en la puntuación de precisión entre dos grupos. | clasificación |
precision_score |
relación | La relación máxima en la puntuación de precisión entre dos grupos. | clasificación |
recall_score |
diferencia | La diferencia máxima en la puntuación de coincidencia entre dos grupos. | clasificación |
recall_score |
relación | La relación máxima en la puntuación de coincidencia entre dos grupos. | clasificación |
f1_score |
diferencia | La diferencia máxima en la puntuación F1 entre dos grupos. | clasificación |
f1_score |
relación | La relación máxima en la puntuación F1 entre dos grupos. | clasificación |
error_rate |
diferencia | La diferencia máxima en la tasa de errores entre dos grupos. | clasificación |
error_rate |
relación | La relación máxima en la tasa de errores entre dos grupos. | clasificación |
Selection_rate |
diferencia | La diferencia máxima en la tasa de selección entre dos grupos. | clasificación |
Selection_rate |
relación | La relación máxima en la tasa de selección entre dos grupos. | clasificación |
mean_absolute_error |
diferencia | La diferencia máxima en el error absoluto medio entre dos grupos. | Regresión |
mean_absolute_error |
relación | La relación máxima en el error absoluto medio entre dos grupos. | Regresión |
mean_squared_error |
diferencia | La diferencia máxima en el error cuadrático medio entre dos grupos. | Regresión |
mean_squared_error |
relación | La relación máxima en el error cuadrático medio entre dos grupos. | Regresión |
median_absolute_error |
diferencia | La diferencia máxima en el error absoluto de mediana entre dos grupos. | Regresión |
median_absolute_error |
relación | La relación máxima en el error absoluto de mediana entre dos grupos. | Regresión |
r2_score |
diferencia | La diferencia máxima en la puntuación R2 entre dos grupos. | Regresión |
r2_Score |
relación | La relación máxima en la puntuación R2 entre dos grupos. | Regresión |
Restricciones de entrada
¿Qué formatos y tipos de modelo se admiten?
El modelo debe estar en el directorio MLflow con un tipo sklearn disponible. Además, el modelo debe poder cargarse en el entorno que usan los componentes de inteligencia artificial responsable.
¿Qué formatos de datos se admiten?
Los conjuntos de datos proporcionados deben tener el formato mltable
con datos tabulares.
Pasos siguientes
- Cuando se genere el panel de inteligencia artificial responsable, vea cómo acceder a él y usarlo en Estudio de Azure Machine Learning.
- Resuma y comparta sus conclusiones de inteligencia artificial responsable con el cuadro de mandos de IA responsable en forma de exportación a PDF.
- Obtenga más información sobre los conceptos y técnicas detrás del panel de inteligencia artificial responsable.
- Más información sobre cómo recopilar datos de forma responsable.
- Consulte los cuadernos de YAML y Python de muestra para generar un panel de IA responsable con YAML o Python.
- Más información sobre cómo usar el panel de IA responsable y el cuadro de mandos para depurar datos y modelos, e informar sobre la mejor toma de decisiones en esta entrada de blog de la comunidad tecnológica.
- Más información sobre cómo el Servicio Nacional de Salud del Reino Unido (NHS) ha usado el panel de inteligencia artificial responsable y el cuadro de mandos en una historia de cliente real.
- Explore las características del panel de inteligencia artificial responsable mediante esta demostración web interactiva de AI Lab.