Gere insights de IA responsável com YAML e Python

APLICA-SE A:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

Você pode gerar um painel e scorecard de IA Responsável por meio de um trabalho de pipeline usando componentes de IA Responsável. Existem seis componentes principais para criar dashboards de IA Responsável, juntamente com alguns componentes auxiliares. Aqui está um exemplo de gráfico de experimento:

Captura de tela de um gráfico de experimento de amostra.

Componentes de IA responsável

Os principais componentes para construir o painel de IA Responsável no Azure Machine Learning são:

  • RAI Insights dashboard constructor
  • Os componentes da ferramenta:
    • 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

Os componentes RAI Insights dashboard constructor e Gather RAI Insights dashboard são sempre necessários, além de, pelo menos, um dos componentes de ferramenta. No entanto, não é necessário usar todas as ferramentas em todos os painéis de IA responsável.

Nas seções a seguir estão especificações dos componentes de IA responsável e exemplos de trechos de código em YAML e Python.

Importante

Os itens marcados (visualização) neste artigo estão atualmente em visualização pública. A versão de visualização é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

Limitações

O conjunto atual de componentes tem muitas limitações em seu uso:

  • Todos os modelos devem ser registrados no Azure Machine Learning no formato MLflow com um sabor sklearn (scikit-learn).
  • Tem de ser possível carregar os modelos no ambiente do componente.
  • Os modelos devem ser decapáveis.
  • Os modelos devem ser fornecidos aos componentes de IA responsável usando o Fetch Registered Model componente, que fornecemos.
  • As entradas do conjunto de dados devem estar no mltable formato.
  • Deve ser fornecido um modelo mesmo que apenas seja realizada uma análise causal dos dados. Você pode usar os DummyClassifier e DummyRegressor estimadores de scikit-learn para este propósito.

Construtor do painel RAI Insights

Este componente tem três portas de entrada:

  • O modelo de aprendizagem automática
  • O conjunto de dados de treinamento
  • O conjunto de dados de teste

Para gerar insights de depuração de modelo com componentes como análise de erros e explicações de modelo, use o conjunto de dados de treinamento e teste que você usou quando treinou seu modelo. Para componentes como a análise causal, que não requer um modelo, você usa o conjunto de dados de treinamento para treinar o modelo causal para gerar os insights causais. Você usa o conjunto de dados de teste para preencher suas visualizações do painel de IA responsável.

A maneira mais fácil de fornecer o modelo é registrar o modelo de entrada e fazer referência ao mesmo modelo na porta de entrada do componente do RAI Insight Constructor modelo, que discutiremos mais adiante neste artigo.

Nota

Atualmente, apenas modelos em formato MLflow e com sabor sklearn são suportados.

Os dois conjuntos de dados devem estar em mltable formato. Os conjuntos de dados de treinamento e teste fornecidos não precisam ser os mesmos conjuntos de dados usados no treinamento do modelo, mas podem ser os mesmos. Por padrão, por motivos de desempenho, o conjunto de dados de teste é restrito a 5.000 linhas da interface do usuário de visualização.

O componente do construtor também aceita os seguintes parâmetros:

Nome do parâmetro Description Type
title Breve descrição do painel. String
task_type Especifica se o modelo é para classificação, regressão ou previsão. String, classification, regression, ou forecasting
target_column_name O nome da coluna nos conjuntos de dados de entrada, que o modelo está tentando prever. String
maximum_rows_for_test_dataset O número máximo de linhas permitido no conjunto de dados de teste, por motivos de desempenho. Inteiro, o padrão é 5.000
categorical_column_names As colunas nos conjuntos de dados, que representam dados categóricos. Lista opcional de cadeias de caracteres1
classes A lista completa de rótulos de classe no conjunto de dados de treinamento. Lista opcional de cadeias de caracteres1
feature_metadata Especifica informações adicionais que o painel pode precisar dependendo do tipo de tarefa. Para a previsão, isso inclui especificar qual coluna é a datetime coluna e qual coluna é a time_series_id coluna. Para visão, isso pode incluir o valor médio do pixel ou dados de localização de uma imagem. Lista opcional de cadeias de caracteres1
use_model_dependency Especifica se o modelo requer um contêiner docker separado para ser servido devido a dependências conflitantes com o painel RAI. Para a previsão, isso deve ser habilitado. Normalmente, para outros cenários, isso não é habilitado. Boolean

1 As listas devem ser fornecidas como uma única cadeia de caracteres codificada em JSON para categorical_column_names, classes, feature_metadata entradas.

O componente do construtor tem uma única saída chamada rai_insights_dashboard. Este é um painel vazio, no qual os componentes individuais da ferramenta operam. Todos os resultados são montados pelo Gather RAI Insights dashboard componente no 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"]' 

Adicionar Causal ao painel do RAI Insights

Este componente realiza uma análise causal nos conjuntos de dados fornecidos. Ele tem uma única porta de entrada, que aceita a saída do RAI Insights dashboard constructor. Ele também aceita os seguintes parâmetros:

Nome do parâmetro Description Escreva
treatment_features Uma lista de nomes de recursos nos conjuntos de dados, que são potencialmente "tratáveis" para obter resultados diferentes. Lista de cadeias de caracteres2.
heterogeneity_features Uma lista de nomes de recursos nos conjuntos de dados, que podem afetar como os recursos "tratáveis" se comportam. Por padrão, todos os recursos serão considerados. Lista opcional de cadeias de caracteres2.
nuisance_model O modelo utilizado para estimar o resultado da alteração das características do tratamento. Cadeia de caracteres opcional. Deve ser linear ou AutoML, inadimplente para linear.
heterogeneity_model O modelo utilizado para estimar o efeito das características de heterogeneidade no desfecho. Cadeia de caracteres opcional. Deve ser linear ou forest, inadimplente para linear.
alpha Nível de confiança dos intervalos de confiança. Número de ponto flutuante opcional, o padrão é 0,05.
upper_bound_on_cat_expansion A expansão máxima de características categóricas. Inteiro opcional, o padrão é 50.
treatment_cost O custo dos tratamentos. Se 0, todos os tratamentos terão custo zero. Se uma lista for passada, cada elemento será aplicado a um dos treatment_features.

Cada elemento pode ser um valor escalar para indicar um custo constante de aplicação desse tratamento ou uma matriz indicando o custo para cada amostra. Se o tratamento for um tratamento discreto, a matriz para esse recurso deve ser bidimensional, com a primeira dimensão representando amostras e a segunda representando a diferença de custo entre os valores não padrão e o valor padrão.
Inteiro opcional ou lista2.
min_tree_leaf_samples O número mínimo de amostras por folha na árvore política. Inteiro opcional, o padrão é 2.
max_tree_depth A profundidade máxima da árvore política. Inteiro opcional, o padrão é 2.
skip_cat_limit_checks Por padrão, os recursos categóricos precisam ter várias instâncias de cada categoria para que um modelo seja ajustado de forma robusta. Definir isso como True ignorará essas verificações. Booleano opcional, o padrão é False.
categories As categorias a serem usadas para as colunas categóricas. Se auto, as categorias serão inferidas para todas as colunas categóricas. Caso contrário, esse argumento deve ter tantas entradas quanto as colunas categóricas.

Cada entrada deve ser auto para inferir os valores para essa coluna ou a lista de valores para a coluna. Se forem fornecidos valores explícitos, o primeiro valor é tratado como o valor "controlo" para a coluna com a qual outros valores são comparados.
Opcional auto ou lista2.
n_jobs O grau de paralelismo a utilizar. Inteiro opcional, o padrão é 1.
verbose Expressa se a saída detalhada deve ser fornecida durante o cálculo. Inteiro opcional, o padrão é 1.
random_state Semente para o gerador de números pseudoaleatórios (PRNG). Inteiro opcional.

2 Para os list parâmetros: Vários dos parâmetros aceitam listas de outros tipos (strings, números, até mesmo outras listas). Para passá-los para o componente, eles devem primeiro ser codificados em JSON em uma única cadeia de caracteres.

Este componente tem uma única porta de saída, que pode ser conectada a uma das portas de insight_[n] entrada do Gather RAI Insights Dashboard componente.

  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"]' 

Adicionar contrafactuais ao painel do RAI Insights

Este componente gera pontos contrafactuais para o conjunto de dados de teste fornecido. Ele tem uma única porta de entrada, que aceita a saída do construtor do painel RAI Insights. Ele também aceita os seguintes parâmetros:

Nome do parâmetro Description Type
total_CFs O número de pontos contrafactuais a gerar para cada linha no conjunto de dados de teste. Inteiro opcional, o padrão é 10.
method O dice-ml explicador a usar. Cadeia de caracteres opcional. Ou random, geneticou kdtree. O padrão é random.
desired_class Índice que identifica a classe contrafactual pretendida. Para a classificação binária, isso deve ser definido como opposite. String ou inteiro opcional. O padrão é 0.
desired_range Para problemas de regressão, identifique a gama desejada de resultados. Lista facultativa de dois números3.
permitted_range Dicionário com nomes de recursos como chaves e o intervalo permitido em uma lista como valores. O padrão é o intervalo inferido a partir dos dados de treinamento. String opcional ou lista3.
features_to_vary Uma cadeia de caracteres all ou uma lista de nomes de recursos para variar. String opcional ou lista3.
feature_importance Sinalizador para permitir o cálculo de importâncias de recursos usando dice-ml. Booleano opcional. O padrão é True.

3 Para os parâmetros não escalares: Os parâmetros que são listas ou dicionários devem ser passados como cadeias de caracteres codificadas em JSON únicas.

Este componente tem uma única porta de saída, que pode ser conectada a uma das portas de insight_[n] entrada do Gather RAI Insights dashboard componente.

 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]" 

Adicionar análise de erros ao painel do RAI Insights

Este componente gera uma análise de erro para o modelo. Ele tem uma única porta de entrada, que aceita a saída do RAI Insights Dashboard Constructor. Ele também aceita os seguintes parâmetros:

Nome do parâmetro Description Type
max_depth A profundidade máxima da árvore de análise de erros. Inteiro opcional. O padrão é 3.
num_leaves O número máximo de folhas na árvore de erro. Inteiro opcional. O padrão é 31.
min_child_samples O número mínimo de pontos de dados necessários para produzir uma folha. Inteiro opcional. O padrão é 20.
filter_features Uma lista de um ou dois recursos a serem usados para o filtro de matriz. Lista opcional, a ser passada como uma única cadeia de caracteres codificada em JSON.

Este componente tem uma única porta de saída, que pode ser conectada a uma das portas de insight_[n] entrada do Gather RAI Insights Dashboard componente.

  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"]' 

Adicionar explicação ao painel do RAI Insights

Este componente gera uma explicação para o modelo. Ele tem uma única porta de entrada, que aceita a saída do RAI Insights Dashboard Constructor. Ele aceita uma única cadeia de comentários opcional como parâmetro.

Esse componente tem uma única porta de saída, que pode ser conectada a uma das portas de insight_[n] entrada do componente do painel Reunir RAI Insights.

  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}} 

Reunir painel do RAI Insights

Este componente reúne os insights gerados em um único painel de IA responsável. Tem cinco portas de entrada:

  • A constructor porta que deve ser conectada ao componente construtor do painel do RAI Insights.
  • Quatro insight_[n] portas que podem ser conectadas à saída dos componentes da ferramenta. Pelo menos uma dessas portas deve estar conectada.

Existem duas portas de saída:

  • A dashboard porta contém o objeto concluído RAIInsights .
  • A ux_json porta contém os dados necessários para exibir um painel 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}} 

Como gerar um scorecard de IA Responsável (visualização)

O estágio de configuração exige que você use sua experiência de domínio em torno do problema para definir os valores-alvo desejados nas métricas de desempenho e equidade do modelo.

Como outros componentes do painel de IA responsável configurados no pipeline YAML, você pode adicionar um componente para gerar o scorecard no pipeline 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 

Onde pdf_gen.json é o arquivo json de configuração de geração de cartão de pontuação e ID de predifined_cohorts_json o arquivo json de definição de coortes pré-construído.

Aqui está um arquivo JSON de exemplo para definição de coortes e configuração de geração de scorecard:

Definição de coortes:

[ 
  { 
    "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" 
      } 
    ] 
  } 
] 

Aqui está um arquivo de configuração de geração de scorecard como um exemplo de regressão:

{ 
  "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" 
  ]  
} 

Aqui está um arquivo de configuração de geração de scorecard como um exemplo de classificação:

{
  "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"
  }
}

Definição de inputs para o componente Responsible AI scorecard

Esta seção lista e define os parâmetros necessários para configurar o componente Scorecard de IA Responsável.

Modelo

ModelName Nome do modelo
ModelType Valores em ['classificação', 'regressão'].
ModelSummary Insira um texto que resuma para que serve o modelo.

Nota

Para classificação de várias classes, você deve primeiro usar a estratégia One-vs-Rest para escolher sua classe de referência e, em seguida, dividir seu modelo de classificação multiclasse em um problema de classificação binária para sua classe de referência selecionada versus o resto das classes.

Métricas

Métrica de desempenho Definição Tipo de modelo
accuracy_score A fração de pontos de dados que são classificados corretamente. Classificação
precision_score A fração de pontos de dados que são classificados corretamente entre aqueles classificados como 1. Classificação
recall_score A fração de pontos de dados que são classificados corretamente entre aqueles cujo verdadeiro rótulo é 1. Nomes alternativos: taxa positiva verdadeira, sensibilidade. Classificação
f1_score A pontuação F1 é a média harmônica de precisão e recordação. Classificação
error_rate A proporção de instâncias que são classificadas incorretamente em todo o conjunto de instâncias. Classificação
mean_absolute_error A média dos valores absolutos dos erros. Mais robusto para outliers do que mean_squared_error. Regressão
mean_squared_error A média dos erros ao quadrado. Regressão
median_absolute_error A mediana dos erros quadrados. Regressão
r2_score A fração de variância nos rótulos explicada pelo modelo. Regressão

Limite: o limite desejado para a métrica selecionada. Os tokens matemáticos permitidos são >, <, >=, e <=m, seguidos por um número real. Por exemplo, >= 0,75 significa que o alvo para a métrica selecionada é maior ou igual a 0,75.

Importância do recurso

top_n: O número de recursos a mostrar, com um máximo de 10. São permitidos números inteiros positivos até 10.

Justiça

Métrico Definição
metric A principal métrica para a equidade da avaliação.
sensitive_features Uma lista de nomes de recursos do conjunto de dados de entrada a serem designados como recursos confidenciais para o relatório de equidade.
fairness_evaluation_kind Valores em [«diferença», «rácio»].
threshold Os valores-alvo desejados para a avaliação da equidade. Os tokens matemáticos permitidos são >, <, >=, e <=, seguidos por um número real.
Por exemplo, metric="precisão", fairness_evaluation_kind="diferença".
<= 0,05 significa que o objetivo para a diferença de precisão é inferior ou igual a 0,05.

Nota

A sua escolha ( fairness_evaluation_kind selecionar 'diferença' versus 'rácio') afeta a escala do seu valor-alvo. Na sua seleção, certifique-se de escolher um valor-alvo significativo.

Você pode selecionar entre as seguintes métricas, emparelhadas com fairness_evaluation_kind, para configurar seu componente de avaliação de equidade do scorecard:

Metric fairness_evaluation_kind Definição Tipo de modelo
accuracy_score diferença A diferença máxima na pontuação de precisão entre quaisquer dois grupos. Classificação
accuracy_score rácio A razão mínima na pontuação de precisão entre quaisquer dois grupos. Classificação
precision_score diferença A diferença máxima na pontuação de precisão entre quaisquer dois grupos. Classificação
precision_score rácio A razão máxima na pontuação de precisão entre quaisquer dois grupos. Classificação
recall_score diferença A diferença máxima na pontuação de recordação entre quaisquer dois grupos. Classificação
recall_score rácio A razão máxima na pontuação de recordação entre quaisquer dois grupos. Classificação
f1_score diferença A diferença máxima na pontuação f1 entre quaisquer dois grupos. Classificação
f1_score rácio A razão máxima na pontuação f1 entre quaisquer dois grupos. Classificação
error_rate diferença A diferença máxima na taxa de erro entre quaisquer dois grupos. Classificação
error_rate rácio O rácio máximo na taxa de erro entre quaisquer dois grupos. Classificação
Selection_rate diferença A diferença máxima na taxa de seleção entre quaisquer dois grupos. Classificação
Selection_rate rácio A razão máxima na taxa de seleção entre quaisquer dois grupos. Classificação
mean_absolute_error diferença A diferença máxima no erro absoluto médio entre quaisquer dois grupos. Regressão
mean_absolute_error rácio A razão máxima em erro absoluto médio entre quaisquer dois grupos. Regressão
mean_squared_error diferença A diferença máxima no erro quadrado médio entre quaisquer dois grupos. Regressão
mean_squared_error rácio A razão máxima no erro quadrado médio entre quaisquer dois grupos. Regressão
median_absolute_error diferença A diferença máxima no erro absoluto mediano entre quaisquer dois grupos. Regressão
median_absolute_error rácio A razão máxima no erro absoluto mediano entre quaisquer dois grupos. Regressão
r2_score diferença A diferença máxima na pontuação R2 entre quaisquer dois grupos. Regressão
r2_Score rácio A razão máxima na pontuação R2 entre quaisquer dois grupos. Regressão

Restrições de entrada

Que formatos e sabores de modelo são suportados?

O modelo deve estar no diretório MLflow com um sabor sklearn disponível. Além disso, o modelo precisa ser carregável no ambiente usado pelos componentes de IA responsável.

Que formatos de dados são suportados?

Os conjuntos de dados fornecidos devem ser mltable com dados tabulares.

Próximos passos

  • Depois de gerar seu painel de IA responsável, veja como acessá-lo e usá-lo no estúdio do Azure Machine Learning.
  • Resuma e compartilhe seus insights de IA Responsável com o scorecard de IA Responsável como uma exportação de PDF.
  • Saiba mais sobre os conceitos e técnicas por trás do painel de IA responsável.
  • Saiba mais sobre como recolher dados de forma responsável.
  • Veja exemplos de blocos de anotações YAML e Python para gerar o painel de IA responsável com YAML ou Python.
  • Saiba mais sobre como usar o painel e o scorecard da IA Responsável para depurar dados e modelos e informar uma melhor tomada de decisão nesta postagem do blog da comunidade de tecnologia.
  • Saiba mais sobre como o painel e o scorecard da IA Responsável foram usados pelo Serviço Nacional de Saúde do Reino Unido (NHS) em uma história de cliente da vida real.
  • Explore os recursos do painel de IA responsável por meio desta demonstração interativa da web do laboratório de IA.