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:

Captura de pantalla de 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 y DummyRegressor 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 completado RAIInsights.
  • 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