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:
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
eDummyRegressor
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 , genetic ou 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ídoRAIInsights
. - 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.