Gerar insights da IA responsável com o YAML e o Python
APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)SDK do Python azure-ai-ml v2 (atual)
Você pode gerar um painel de IA Responsável e um scorecard por meio de um trabalho de pipeline usando componentes de IA Responsável. Há seis componentes principais para criar painéis de IA responsável, juntamente com alguns componentes auxiliares. Veja abaixo o grafo de um experimento de exemplo:
Componentes da 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 da ferramenta. No entanto, não é necessário usar todas as ferramentas em todos os painéis de IA Responsável.
Veja nas seções abaixo as especificações dos componentes de IA Responsável e os exemplos de snippets de código em YAML e Python.
Importante
Os itens marcados (versão prévia) neste artigo estão atualmente em versão prévia pública. A versão prévia é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos. Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.
Limitações
O conjunto atual de componentes tem várias limitações de uso:
- Todos os modelos devem ser registrados no Azure Machine Learning no formato MLflow com uma variante sklearn (scikit-learn).
- Os modelos precisam ser carregáveis no ambiente do componente.
- Os modelos precisam ser selecionáveis.
- Os modelos precisam ser fornecidos aos componentes de IA Responsável usando o componente
Fetch Registered Model
que fornecemos. - As entradas do conjunto de dados precisam estar no formato
mltable
. - Um modelo deve ser fornecido mesmo que apenas uma análise de causa dos dados seja executada. Use os estimadores
DummyClassifier
eDummyRegressor
do Scikit-learn para essa finalidade.
Construtor de painel do RAI Insights
Esse componente tem três portas de entrada:
- O modelo de machine learning
- O conjunto de dados de treinamento
- O conjunto de dados de teste
Para gerar insights de depuração do modelo com componentes como análise de erros e Explicações de modelo, use o conjunto de dados de treinamento e de teste usado ao treinar o modelo. Para componentes como análise de causa, que não exigem um modelo, use o conjunto de dados de treinamento para treinar o modelo de causa para gerar os insights de causa. Use o conjunto de dados de teste para preencher as visualizações do painel de IA Responsável.
A maneira mais fácil de fornecer o modelo é registrar o modelo de entrada e referenciar o mesmo modelo na porta de entrada do modelo do componente RAI Insight Constructor
, que discutiremos mais adiante neste artigo.
Observação
No momento, só há suporte para modelos no formato MLFlow e com uma variante sklearn
.
Os dois conjuntos de dados devem estar no formato mltable
. Os conjuntos de dados de treinamento e de teste fornecidos não precisam ser os mesmos conjuntos de dados usados no treinamento do modelo, mas podem ser os mesmos. Por padrão e por motivos de desempenho, o conjunto de dados de teste é restrito a 5.000 mil linhas da interface do usuário de visualização.
O componente construtor também aceita os seguintes parâmetros:
Nome do parâmetro | Descrição | Type |
---|---|---|
title |
Breve descrição do painel. | String |
task_type |
Especifica se o modelo é para classificação, regressão ou previsão. | Cadeia de caracteres, 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 permitidas no conjunto de dados de teste (por questões de desempenho). | Inteiro, o padrão é 5.000 |
categorical_column_names |
As colunas dos conjuntos de dados, que representam dados de categoria. | Lista opcional de cadeias de caracteres 1 |
classes |
A lista completa de rótulos de classe no conjunto de dados de treinamento. | Lista opcional de cadeias de caracteres 1 |
feature_metadata |
Especifica informações adicionais de que o painel pode precisar dependendo do tipo de tarefa. Para previsão, isso inclui especificar qual coluna é a coluna datetime e qual é a coluna time_series_id . Para a visão, isso pode incluir dados médios de valor de pixel ou localização de uma imagem. |
Lista opcional de cadeias de caracteres 1 |
use_model_dependency |
Especifica se o modelo requer que um contêiner do Docker separado seja atendido devido a dependências conflitantes com o painel da RAI. Para previsão, isso deve ser habilitado. Normalmente, para outros cenários, isso não está habilitado. | Booliano |
1 As listas devem ser fornecidas como uma única cadeia de caracteres codificada em JSON para as entradas categorical_column_names
, classes
e feature_metadata
.
O componente construtor tem uma única saída chamada rai_insights_dashboard
. Esse é um painel vazio em que operam os componentes individuais da ferramenta. Todos os resultados são montados pelo componente Gather RAI Insights dashboard
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"]'
Painel Adicionar Causa ao RAI Insights
Esse componente executa uma análise de causa nos conjuntos de dados fornecidos. Ele tem apenas uma 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 | Descrição | Digite |
---|---|---|
treatment_features |
Uma lista de nomes de recursos nos conjuntos de dados, que são possivelmente "tratáveis" para obter resultados diferentes. | Lista de cadeias de caracteres2. |
heterogeneity_features |
Uma lista de nomes de recursos nos conjuntos de dados, que pode afetar o comportamento dos recursos "tratáveis". Por padrão, todos os recursos serão considerados. | Lista opcional de cadeias de caracteres2. |
nuisance_model |
O modelo usado para estimar o resultado da alteração dos recursos de tratamento. | Cadeia de caracteres opcional. Deve ser linear ou AutoML , o padrão é linear . |
heterogeneity_model |
O modelo usado para estimar o efeito dos recursos de heterogeneidade no resultado. | Cadeia de caracteres opcional. Deve ser linear ou forest , o padrão é 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 dos recursos de categoria. | Inteiro opcional, o padrão é 50. |
treatment_cost |
O custo dos tratamentos. Se for 0, todos os tratamentos terão custo zero. Se uma lista for passada, cada elemento será aplicado a um dos treatment_features .Cada elemento poderá ser um valor escalar para indicar um custo constante da aplicação desse tratamento ou uma matriz que indica o custo de cada amostra. Se o tratamento for um tratamento discreto, a matriz desse recurso deverá 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 exemplos por folha na árvore de políticas. | Inteiro opcional, o padrão é 2. |
max_tree_depth |
A profundidade máxima da árvore de políticas. | 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 se ajuste de maneira robusta. Definir isso como True ignorará essas verificações. |
Booliano opcional, o padrão é False . |
categories |
As categorias a serem usadas nas colunas de categoria. Se auto , as categorias serão inferidas em todas as colunas de categoria. Caso contrário, esse argumento deverá a quantidade de entradas de acordo com as colunas categóricas.Cada entrada deve ser auto para inferir os valores dessa coluna ou a lista de valores da coluna. Se forem fornecidos valores explícitos, o primeiro valor será tratado como o valor de "controle" dessa coluna e os outros valores serão comparados em relação ao controle. |
Opcional, auto ou lista2. |
n_jobs |
O grau de paralelismo a ser usado. | Inteiro opcional, o padrão é 1. |
verbose |
Expressa se é necessário fornecer uma saída detalhada durante a computação. | Inteiro opcional, o padrão é 1. |
random_state |
Semente do PRNG (pseudorandom number generator). | Inteiro opcional. |
2 Para os parâmetros list
: vários dos parâmetros aceitam listas de outros tipos (cadeias de caracteres, números e até mesmo outras listas). Para passá-los para o componente, primeiro eles devem ser codificados em JSON em uma única cadeia de caracteres.
Esse componente tem uma só porta de saída, que pode ser conectada a uma das portas de entrada de insight_[n]
do componente 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"]'
Painel Adicionar Contrafactuais ao RAI Insights
Esse 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 de porta do RAI Insights. Ele também aceita os seguintes parâmetros:
Nome do parâmetro | Descrição | Type |
---|---|---|
total_CFs |
O número de pontos de contrafactual a ser gerados para cada linha no conjunto de dados de teste. | Inteiro opcional, o padrão é 10. |
method |
O explicador dice-ml a ser usado. |
Cadeia de caracteres opcional. random , genetic ou kdtree . Assume o padrão de random . |
desired_class |
Índice que identifica a classe contrafactual desejada. Para classificação binária, este deve ser definido como opposite . |
Cadeia de caracteres ou inteiro opcional. Assume o padrão de 0. |
desired_range |
Para problemas de regressão, identifique o intervalo desejado de resultados. | Lista opcional 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 dos dados de treinamento. | Cadeia de caracteres opcional ou lista3. |
features_to_vary |
Uma cadeia de caracteres all ou uma lista de nomes de recursos a serem alternados. |
Cadeia de caracteres opcional ou lista3. |
feature_importance |
Sinalizador para habilitar a computação das importâncias de recursos usando dice-ml . |
Booliano opcional. Assume o padrão de 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 individuais codificadas em JSON.
Esse componente tem uma só porta de saída, que pode ser conectada a uma das portas de entrada de insight_[n]
do componente 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]"
Painel Adicionar Análise de Erros ao RAI Insights
Esse componente gera uma análise de erro para o modelo. Ele tem apenas uma 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 | Descrição | Type |
---|---|---|
max_depth |
A profundidade máxima da árvore de análise de erros. | Inteiro opcional. O valor padrão é 3. |
num_leaves |
O número máximo de folhas na árvore de erros. | Inteiro opcional. O valor padrão é 31. |
min_child_samples |
O número mínimo de pontos de dados necessários para produzir uma folha. | Inteiro opcional. Assume 20 como valor padrão. |
filter_features |
Uma lista de um ou dois recursos a serem usados para o filtro de matriz. | Lista opcional a ser passada como uma cadeia de caracteres individual codificada em JSON. |
Esse componente tem uma só porta de saída, que pode ser conectada a uma das portas de entrada de insight_[n]
do componente 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"]'
Painel Adicionar Explicação ao RAI Insights
Esse componente gera uma explicação para o modelo. Ele tem apenas uma porta de entrada, que aceita a saída do RAI Insights Dashboard Constructor
. Ele aceita uma única cadeia de caracteres de comentário opcional como parâmetro.
Esse componente tem uma única porta de saída, que pode ser conectada a uma das portas de entrada insight_[n]
do componente do painel Coletar RAI Insightss.
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}}
Painel Coletar RAI Insights
Esse componente monta os insights gerados em um único painel de IA Responsável. Ele tem cinco portas de entrada:
- A porta
constructor
que deve ser conectada ao componente do construtor de painel do RAI Insights. - Quatro portas
insight_[n]
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 porta
dashboard
contém o objetoRAIInsights
concluído. - A porta
ux_json
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 (versão prévia)
A fase de configuração exige que você use sua experiência com domínios nesse problema para definir os valores de destino desejados nas métricas de desempenho e imparcialidade do modelo.
Assim como os outros componentes do painel de IA Responsável configurados no pipeline do YAML, você pode adicionar um componente para gerar o scorecard no pipeline do 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
Em que pdf_gen.json é o arquivo JSON de configuração de geração de scorecard, e predifined_cohorts_json é a ID do arquivo JSON de definição de coorte predefinido.
Esse é 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"
}
]
}
]
Esse é 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"
]
}
Esse é 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 entradas do componente do scorecard de IA responsável
Esta seção lista e define os parâmetros necessários para configurar o componente do scorecard de IA responsável.
Modelar
ModelName | Nome do modelo |
---|---|
ModelType |
Valores em [‘classification’, ‘regression’]. |
ModelSummary |
Insira um texto que resume para que serve o modelo. |
Observação
Para classificação de várias classes, primeiro você deve usar a estratégia One-vs-Rest para escolher sua classe de referência e, portanto, dividir seu modelo de classificação de várias classes em um problema de classificação binária para sua classe de referência selecionada em comparação com o restante das classes.
Métricas
Métrica de desempenho | Definição | Tipo de modelo |
---|---|---|
accuracy_score |
A fração de pontos de dados classificados corretamente. | classificação |
precision_score |
A fração de pontos de dados classificados corretamente entre aqueles classificados como 1. | classificação |
recall_score |
A fração de pontos de dados classificados corretamente entre aqueles cujo rótulo verdadeiro é 1. Nomes alternativos: taxa de verdadeiro positivo, confidencialidade. | classificação |
f1_score |
A medida f é a média harmônica de precisão e recuperação. | classificação |
error_rate |
A proporção de instâncias classificadas incorretamente em todo o conjunto de instâncias. | classificação |
mean_absolute_error |
A média de valores absolutos de erros. Mais robusto para exceções do que mean_squared_error . |
Regressão |
mean_squared_error |
A média de erros quadráticos. | Regressão |
median_absolute_error |
A mediana dos erros quadráticos. | 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 destino da métrica selecionada é maior ou igual a 0,75.
Importância do recurso
top_n: o número de recursos a serem exibidos com um máximo de 10. Inteiros positivos de até 10 são permitidos.
Imparcialidade
Métrica | Definição |
---|---|
metric |
A métrica primária para imparcialidade da avaliação. |
sensitive_features |
Uma lista de nomes de recurso do conjunto de dados de entrada a ser designada como um recurso sensível para o relatório de imparcialidade. |
fairness_evaluation_kind |
Valores em ['difference', 'ratio']. |
threshold |
Os valores de destino desejados da avaliação de imparcialidade. Os tokens matemáticos permitidos são >, <, >=, e <=, seguidos por um número real. Por exemplo, metric="accuracy", fairness_evaluation_kind="difference". <= 0,05 significa que o destino para a diferença em precisão é menor ou igual a 0,05. |
Observação
Selecionar fairness_evaluation_kind
(selecionar 'difference' em vez de 'ratio') afeta a escala do seu valor de destino. Certifique-se de escolher um valor de destino significativo na sua seleção.
É possível selecionar entre as seguintes métricas, emparelhadas com o fairness_evaluation_kind
, para configurar seu componente de avaliação de imparcialidade do scorecard:
Métrica | fairness_evaluation_kind | Definição | Tipo de modelo |
---|---|---|---|
accuracy_score |
diferença | A diferença máxima na pontuação de precisão entre dois grupos. | classificação |
accuracy_score |
ratio | A razão mínima na pontuação de precisão dois entre grupos. | classificação |
precision_score |
diferença | A diferença máxima na pontuação de precisão entre dois grupos. | classificação |
precision_score |
ratio | A razão máxima na pontuação de precisão entre dois grupos. | classificação |
recall_score |
diferença | A diferença máxima na pontuação de recall entre dois grupos. | classificação |
recall_score |
ratio | A razão máxima na pontuação de recall entre dois grupos. | classificação |
f1_score |
diferença | A diferença máxima na medida f entre dois grupos. | classificação |
f1_score |
ratio | A razão máxima na medida f entre dois grupos. | classificação |
error_rate |
diferença | A diferença máxima na taxa de erros entre dois grupos. | classificação |
error_rate |
ratio | A razão máxima na taxa de erros entre dois grupos. | classificação |
Selection_rate |
diferença | A diferença máxima na taxa de seleção entre dois grupos. | classificação |
Selection_rate |
ratio | A razão máxima na taxa de seleção entre dois grupos. | classificação |
mean_absolute_error |
diferença | A diferença máxima no erro médio absoluto entre dois grupos. | Regressão |
mean_absolute_error |
ratio | A razão máxima no erro médio absoluto entre dois grupos. | Regressão |
mean_squared_error |
diferença | A diferença máxima no erro quadrático médio entre dois grupos. | Regressão |
mean_squared_error |
ratio | A razão máxima no erro quadrático médio entre dois grupos. | Regressão |
median_absolute_error |
diferença | A diferença máxima no erro mediano absoluto entre os dois grupos. | Regressão |
median_absolute_error |
ratio | A razão máxima no erro mediano absoluto entre os dois grupos. | Regressão |
r2_score |
diferença | A diferença máxima na pontuação R2 entre dois grupos. | Regressão |
r2_Score |
ratio | A razão máxima na pontuação R2 entre dois grupos. | Regressão |
Restrições de entrada
Quais formatos e sabores variantes de modelo são compatíveis?
O modelo deve estar no diretório MLFlow com uma variante sklearn disponível. Além disso, o modelo deve ser carregado no ambiente usado pelos componentes de IA Responsável.
Quais formatos de dados são compatíveis?
Os conjuntos de dados fornecidos devem ser mltable
com os dados de tabela.
Próximas etapas
- Depois de gerar o 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 exportado em PDF.
- Saiba mais sobre os conceitos e as técnicas por trás do painel de IA Responsável.
- Saiba mais sobre como coletar dados com responsabilidade.
- Veja Notebooks YAML e Python de exemplo para gerar o painel de IA Responsável com o YAML ou o Python.
- Saiba mais sobre como usar o painel de IA Responsável e o Scorecard para depurar dados e modelos e informar melhor a tomada de decisão nesta postagem no blog da comunidade técnica.
- Veja como o painel de IA Responsável e o scorecard foram usados pelo NHS (Serviço Nacional de Saúde do Reino Unido) em uma história real de cliente.
- Explore os recursos do painel de IA Responsável nesta demonstração interativa da Web do AI Lab.