YAML と Python を使用して責任ある AI 分析情報を生成する
適用対象:Azure CLI ml extension v2 (現行)
Python SDK azure-ai-ml v2 (現行)
責任ある AI コンポーネントを使用して、パイプライン ジョブを介して責任ある AI ダッシュボードとスコアカードを生成できます。 責任ある AI ダッシュボードを作成するための 6 つのコア コンポーネントと、いくつかのヘルパー コンポーネントがあります。 サンプル実験グラフは次のとおりです。
責任ある AI コンポーネント
Azure Machine Learning で責任ある AI ダッシュボードを構築するためのコア コンポーネントは次のとおりです。
RAI Insights dashboard constructor
- ツール コンポーネント:
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
RAI Insights dashboard constructor
と Gather RAI Insights dashboard
のコンポーネントは常に必要であり、さらに少なくとも 1 つのツール コンポーネントが必要です。 ただし、すべての責任ある AI ダッシュボードのすべてのツールを使用する必要はありません。
責任ある AI コンポーネントの仕様と YAML および Python のコード スニペットの例を以下のセクションに示します。
重要
この記事で "(プレビュー)" と付記されている項目は、現在、パブリック プレビュー段階です。 プレビュー バージョンはサービス レベル アグリーメントなしで提供されています。運用環境のワークロードに使用することはお勧めできません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。
制限事項
コンポーネントの現在のセットには、使用に関して多くの制限があります。
- すべてのモデルは、sklearn (scikit-learn) フレーバーを使用して MLflow 形式で Azure Machine Learning に登録されている必要があります。
- モデルは、コンポーネント環境で読み込み可能である必要があります。
- モデルは pickleable である必要があります。
- モデルは、用意されている
Fetch Registered Model
コンポーネントを使用して、責任ある AI コンポーネントに提供する必要があります。 - データセットの入力は
mltable
形式である必要があります。 - データの原因分析のみが実行される場合でも、モデルを指定する必要があります。 scikit-learn の
DummyClassifier
とDummyRegressor
推定器をこの目的に使用できます。
RAI Insights Dashboard Constructor
このコンポーネントには、次の 3 つの入力ポートがあります。
- 機械学習モデル
- トレーニング データセット
- テスト データセット
エラー分析やモデルの説明などのコンポーネントでモデル デバッグの分析情報を生成するには、モデルのトレーニング時に使用したトレーニングとテストのデータセットを使用します。 モデルを必要としない原因分析などのコンポーネントの場合は、トレーニング データセットを使用して原因モデルをトレーニングして、原因分析情報を生成します。 テスト データセットは、責任ある AI ダッシュボードの視覚化の設定に使用します。
モデルを提供する最も簡単な方法は、入力モデルを登録し、同じモデルを、この記事の後半で説明する RAI Insight Constructor
コンポーネントのモデル入力ポートで参照することです。
注意
現時点では、sklearn
フレーバーを使用する MLflow 形式のモデルのみがサポートされています。
2 つのデータセットは mltable
形式にします。 提供されるトレーニング データセットとテスト データセットは、モデルのトレーニングで使用されるデータセットと同じである必要はありませんが、同じであってもかまいません。 パフォーマンス上の理由から、既定では、テスト データセットは視覚化 UI の 5,000 行に制限されています。
コンストラクター コンポーネントは、次のパラメーターも受け入れます。
パラメーター名 | 説明 | Type |
---|---|---|
title |
ダッシュボードの簡単な説明。 | String |
task_type |
モデルが分類用か、回帰用か、予測用かを指定します。 | 文字列、classification 、regression 、または forecasting |
target_column_name |
モデルが予測しようとしている入力データセット内の列の名前。 | String |
maximum_rows_for_test_dataset |
パフォーマンス上の理由から、テスト データセットで許可される行の最大数。 | 整数、既定値は 5,000 |
categorical_column_names |
カテゴリ データを表すデータセット内の列。 | 省略可能な文字列の一覧1 |
classes |
トレーニング データセット内のクラス ラベルの完全な一覧。 | 省略可能な文字列の一覧1 |
feature_metadata |
タスクの種類に応じてダッシュボードで必要になる可能性がある追加情報を指定します。 予測の場合、これには、どの列が datetime 列で、どの列が time_series_id 列であるかの指定が含まれます。 ビジョンの場合、これには、平均ピクセル値またはイメージの位置情報データが含まれる場合があります。 |
省略可能な文字列の一覧1 |
use_model_dependency |
RAI ダッシュボードとの依存関係の競合が原因で、モデルの提供のために別の Docker コンテナーが必要かどうかを指定します。 予測の場合、これを有効にする必要があります。 通常、他のシナリオでは、これは有効になっていません。 | Boolean |
1 リストは、categorical_column_names
、classes
、feature_metadata
の入力のための単一の JSON でエンコードされた文字列として指定する必要があります。
コンストラクター コンポーネントには、rai_insights_dashboard
という名前の 1 つの出力があります。 これは、個々のツール コンポーネントが操作される空のダッシュボードです。 すべての結果は、最後に Gather RAI Insights dashboard
コンポーネントによってアセンブルされます。
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"]'
RAI Insights Dashboard に原因分析を追加する
このコンポーネントでは、指定されたデータセットに対して原因分析が実行されます。 これには RAI Insights dashboard constructor
の出力を受け入れる単一の入力ポートがあります。 また、次のパラメーターも受け取ります。
パラメーター名 | 説明 | 「」と入力します |
---|---|---|
treatment_features |
データセット内の特徴名の一覧。異なる結果を得るために "取り扱いできる" 可能性があります。 | 文字列の一覧2。 |
heterogeneity_features |
データセット内の特徴名の一覧。これは、"取り扱いできる" 特徴の動作方法に影響を与える可能性があります。 既定では、すべての特徴が考慮されます。 | 省略可能な文字列の一覧2。 |
nuisance_model |
処理の特徴を変更した結果を推定するために使用されるモデル。 | 省略可能な文字列。 linear または AutoML でなければなりません。既定値は linear です。 |
heterogeneity_model |
結果に関する異種の特徴の影響を推定するために使用されるモデル。 | 省略可能な文字列。 linear または forest でなければなりません。既定値は linear です。 |
alpha |
信頼区間の信頼度。 | 省略可能な浮動小数点数。既定値は 0.05 です。 |
upper_bound_on_cat_expansion |
カテゴリ特徴の最大の拡張。 | 省略可能な整数。既定値は 50 です。 |
treatment_cost |
処理のコスト。 0 の場合、すべての処理のコストは 0 になります。 リストが渡された場合、各要素は treatment_features のいずれかに適用されます。各要素には、その処理を適用する定数コストを示すスカラー値、または各サンプルのコストを示す配列を指定できます。 処理が不連続処理の場合、その特徴の配列は 1 番目の次元でサンプルを表し、2 番目の次元で既定値以外の値と既定値の間のコストの差を表す 2 次元である必要があります。 |
省略可能な整数またはリスト2。 |
min_tree_leaf_samples |
ポリシー ツリー内のリーフごとの最小サンプル数。 | 省略可能な整数。既定値は 2 です。 |
max_tree_depth |
ポリシー ツリーの最大深度。 | 省略可能な整数。既定値は 2 です。 |
skip_cat_limit_checks |
既定では、モデルを確実に適合させるには、カテゴリ特徴に各カテゴリの複数のインスタンスが必要です。 これを True に設定すると、これらのチェックはスキップされます。 |
省略可能なブール値。既定値は False です。 |
categories |
カテゴリ列に使用するカテゴリ。 auto の場合、すべてのカテゴリ列に対してカテゴリが推論されます。 それ以外の場合、この引数にはカテゴリ列と同じ数のエントリが必要です。各エントリは、その列の値を推測するための auto であるか、列の値のリストである必要があります。 明示的な値が指定されている場合、最初の値は、他の値が比較されるその列の "制御" 値として扱われます。 |
省略可能、auto または list2。 |
n_jobs |
使用する並列処理の次数。 | 省略可能な整数。既定値は 1 です。 |
verbose |
計算中に詳細な出力を提供するかどうかを表します。 | 省略可能な整数。既定値は 1 です。 |
random_state |
擬似乱数ジェネレーター (PRNG) のシード。 | 省略可能な整数。 |
2list
パラメーターの場合: いくつかのパラメーターは、他の型のリスト (文字列、数値、その他のリスト) を受け入れます。 これらをコンポーネントに渡すには、最初に JSON でエンコードして 1 つの文字列にする必要があります。
このコンポーネントには 1 つの出力ポートがあり、Gather RAI Insights Dashboard
コンポーネントのいずれかの insight_[n]
入力ポートに接続できます。
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"]'
RAI Insights Dashboard に反事実条件を追加する
このコンポーネントでは、指定されたテスト データセットの反事実条件ポイントが生成されます。 1 つの入力ポートがあり、ここでは RAI Insights Dashboard Constructor の出力を受け入れます。 また、次のパラメーターも受け取ります。
パラメーター名 | 説明 | Type |
---|---|---|
total_CFs |
テスト データセットの各行に対して生成する反事実条件ポイントの数。 | 省略可能な整数。既定値は 10 です。 |
method |
使用する dice-ml Explainer。 |
省略可能な文字列。 random 、genetic 、または kdtree のいずれか。 既定値は random です。 |
desired_class |
目的の反事実条件クラスを識別するインデックス。 二項分類の場合は、これを opposite に設定する必要があります。 |
省略可能な文字列または整数。 既定値は 0 です。 |
desired_range |
回帰の問題の場合は、目的の結果範囲を特定します。 | 2 つの数値の省略可能なリスト3。 |
permitted_range |
キーとして特徴名を持ち、値としてリスト内の許可範囲を持つディクショナリ。 既定値は、トレーニング データから推論された範囲です。 | 省略可能な文字列またはリスト3。 |
features_to_vary |
文字列 all または変更する特徴名の一覧。 |
省略可能な文字列またはリスト3。 |
feature_importance |
dice-ml を使用して特徴量の重要度の計算を有効にするフラグ。 |
省略可能なブール。 既定値は True です。 |
3 非スカラー パラメーターの場合: リストまたはディクショナリであるパラメーターは、単一の JSON でエンコードされた文字列として渡す必要があります。
このコンポーネントには 1 つの出力ポートがあり、Gather RAI Insights dashboard
コンポーネントのいずれかの insight_[n]
入力ポートに接続できます。
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]"
RAI Insights Dashboard にエラー分析を追加する
このコンポーネントでは、モデルのエラー分析を生成します。 これには RAI Insights Dashboard Constructor
の出力を受け入れる単一の入力ポートがあります。 また、次のパラメーターも受け取ります。
パラメーター名 | 説明 | Type |
---|---|---|
max_depth |
エラー分析ツリーの最大深度。 | 省略可能な整数。 既定値は 3 です。 |
num_leaves |
エラー ツリー内のリーフの最大数。 | 省略可能な整数。 既定値は 31 です。 |
min_child_samples |
リーフを生成するために必要なデータポイントの最小数。 | 省略可能な整数。 既定値は 20 です。 |
filter_features |
マトリックス フィルターに使用する 1 つまたは 2 つの特徴の一覧。 | 単一の JSON でエンコードされた文字列として渡される省略可能なリスト。 |
このコンポーネントには 1 つの出力ポートがあり、Gather RAI Insights Dashboard
コンポーネントのいずれかの insight_[n]
入力ポートに接続できます。
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"]'
RAI Insights Dashboard に説明を追加する
このコンポーネントでは、モデルの説明を生成します。 これには RAI Insights Dashboard Constructor
の出力を受け入れる単一の入力ポートがあります。 1 つの省略可能なコメント文字列をパラメーターとして受け入れます。
このコンポーネントには 1 つの出力ポートがあり、Gather RAI Insights Dashboard コンポーネントのいずれかの insight_[n]
入力ポートに接続できます。
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}}
Gather RAI Insights Dashboard
このコンポーネントでは、生成された分析情報を 1 つの責任ある AI ダッシュボードに組み立てます。 次の 5 つの入力ポートがあります。
- RAI Insights Dashboard Constructor コンポーネントに接続する必要がある
constructor
ポート。 - ツール コンポーネントの出力に接続できる 4 つの
insight_[n]
ポート。 これらのポートの少なくとも 1 つが接続されている必要があります。
出力ポートは 2 つあります。
dashboard
ポートには、完了したRAIInsights
オブジェクトが含まれています。ux_json
ポートには、最小限のダッシュボードを表示するために必要なデータが含まれています。
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}}
責任ある AI のスコアカードを生成する方法 (プレビュー)
構成ステージでは、問題に関するドメインの専門知識を使用して、モデルのパフォーマンスと公平性のメトリックに目標のターゲット値を設定する必要があります。
YAML パイプラインで構成された他の責任ある AI ダッシュボード コンポーネントと同様に、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
ここで、pdf_gen.json はスコアカード生成構成の JSON ファイルで、predifined_cohorts_json ID は事前構築済みのコホート定義 JSON ファイルです。
コーホート定義とスコアカード生成構成のサンプル JSON ファイルを次に示します。
コーホートの定義:
[
{
"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"
}
]
}
]
回帰の例としてのスコアカード生成構成ファイルを次に示します。
{
"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"
]
}
分類の例としてのスコアカード生成構成ファイルを次に示します。
{
"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"
}
}
責任ある AI のスコアカード コンポーネントの入力定義
このセクションでは、責任ある AI のスコアカード コンポーネントを構成するために必要なパラメーターを一覧表示して定義します。
モデル
ModelName | モデルの名前 |
---|---|
ModelType |
['classification', 'regression'] の値。 |
ModelSummary |
モデルの目的をまとめたテキストを入力します。 |
注意
複数クラス分類の場合は、まず One-vs-Rest 戦略を使用して参照クラスを選択する必要があります。したがって、複数クラス分類モデルを、選択した参照クラスと残りのクラスの二項分類の問題に分割する必要があります。
メトリック
パフォーマンス基準 | 定義 | モデルの種類 |
---|---|---|
accuracy_score |
正しく分類されたデータ ポイントの割合。 | 分類 |
precision_score |
1 に分類されたデータ ポイントの中で正しく分類されたデータ ポイントの割合。 | 分類 |
recall_score |
true ラベルが 1 のデータ ポイントの中で正しく分類されたデータ ポイントの割合。 代替名: 真陽性率、感度。 | 分類 |
f1_score |
F1 スコアは、適合率と再現率の調和平均です。 | 分類 |
error_rate |
インスタンス セット全体に対する誤って分類されたインスタンスの割合。 | 分類 |
mean_absolute_error |
誤差の絶対値の平均。 mean_squared_error よりも外れ値に対して堅牢です。 |
回帰 |
mean_squared_error |
二乗誤差の平均値。 | 回帰 |
median_absolute_error |
二乗誤差の中央値。 | 回帰 |
r2_score |
モデルによって説明されているラベルの差異の割合。 | 回帰 |
しきい値: 選択したメトリックに望ましいしきい値。 使用できる数学トークンは、>、<、>=、<=m (後に実数が続く) です。 たとえば、>= 0.75 は、選択したメトリックのターゲットが 0.75 以上であることを意味します。
特徴の重要度
top_n: 表示する特徴の数 (最大 10)。 10 までの正の整数を使用できます。
公平性
メトリック | 定義 |
---|---|
metric |
評価の公平性に関する主要メトリック。 |
sensitive_features |
公平性レポートのセンシティブ特徴として指定される、入力データセットの特徴名の一覧。 |
fairness_evaluation_kind |
['difference', 'ratio'] の値。 |
threshold |
公平性評価の "目標値"。 使用できる数学トークンは、>、<、>=、<= (後に実数が続く) です。 たとえば、metric="accuracy"、fairness_evaluation_kind="difference"、 <= 0.05 は、精度の差のターゲットが 0.05 以下であることを意味します。 |
注意
fairness_evaluation_kind
の選択 ("difference" と "difference" の選択) は、ターゲット値のスケールに影響します。 意味のあるターゲット値を選択するようにしてください。
スコアカードの公平性評価コンポーネントを構成するために、次のメトリックを fairness_evaluation_kind
と組み合わせて選択できます。
メトリック | fairness_evaluation_kind | 定義 | モデルの種類 |
---|---|---|---|
accuracy_score |
相違点 | 任意の 2 つのグループ間の正確性スコアの最大差分です。 | 分類 |
accuracy_score |
比率 | 任意の 2 つのグループ間の正確性スコアの最小比率です。 | 分類 |
precision_score |
相違点 | 任意の 2 つのグループ間の精度スコアの最大差分です。 | 分類 |
precision_score |
比率 | 任意の 2 つのグループ間の精度スコアの最大比率です。 | 分類 |
recall_score |
相違点 | 任意の 2 つのグループ間の再現率スコアの最大差分です。 | 分類 |
recall_score |
比率 | 任意の 2 つのグループ間の再現率スコアの最大比率です。 | 分類 |
f1_score |
相違点 | 任意の 2 つのグループ間の f1 スコアの最大差分です。 | 分類 |
f1_score |
比率 | 任意の 2 つのグループ間の f1 スコアの最大比率です。 | 分類 |
error_rate |
相違点 | 任意の 2 つのグループ間のエラー率の最大差分です。 | 分類 |
error_rate |
比率 | 任意の 2 つのグループ間のエラー率の最大比率です。 | 分類 |
Selection_rate |
相違点 | 任意の 2 つのグループ間の選択率の最大差分です。 | 分類 |
Selection_rate |
比率 | 任意の 2 つのグループ間の選択率の最大比率です。 | 分類 |
mean_absolute_error |
相違点 | 任意の 2 つのグループ間の平均絶対誤差の最大差分です。 | 回帰 |
mean_absolute_error |
比率 | 任意の 2 つのグループ間の平均絶対誤差の最大比率です。 | 回帰 |
mean_squared_error |
相違点 | 任意の 2 つのグループ間の平均二乗誤差の最大差分です。 | 回帰 |
mean_squared_error |
比率 | 任意の 2 つのグループ間の平均二乗誤差の最大比率です。 | 回帰 |
median_absolute_error |
相違点 | 任意の 2 つのグループ間の中央絶対誤差の最大差分です。 | 回帰 |
median_absolute_error |
比率 | 任意の 2 つのグループ間の中央絶対誤差の最大比率です。 | 回帰 |
r2_score |
相違点 | 任意の 2 つのグループ間の R2 スコアの最大差分です。 | 回帰 |
r2_Score |
比率 | 任意の 2 つのグループ間の R2 スコアの最大比率です。 | 回帰 |
入力制約
どのモデル形式とフレーバーがサポートされていますか?
モデルは sklearn フレーバーを使用できる MLflow ディレクトリに存在する必要があります。 さらに、このモデルは、責任ある AI コンポーネントによって使用される環境で読み込み可能である必要があります。
どのデータ形式がサポートされますか?
提供されるデータセットは、表形式データの mltable
になるはずです。
次の手順
- 責任ある AI ダッシュボードを生成したら、Azure Machine Learning スタジオでそれにアクセスして使用する方法を確認します。
- PDF エクスポートとしての責任ある AI スコアカードで、責任ある AI の分析情報をまとめて共有します。
- 責任ある AI ダッシュボードの背後にある概念と手法の詳細について確認します。
- 責任を持ってデータを収集する方法の詳細を確認します。
- サンプル YAML と Python ノートブックを表示して、YAML または Python を使用して責任ある AI ダッシュボードを生成します。
- 責任ある AI ダッシュボードとスコアカードを使用してデータとモデルをデバッグし、この技術コミュニティのブログ投稿で、より良い意思決定を通知する方法について学習します。
- 実際の顧客事例で、責任ある AI ダッシュボードとスコアカードが英国の国民保健サービス (NHS) によってどのように使用されたかについて学習します。
- この対話型 AI ラボ Web デモを使用して、責任ある AI ダッシュボードの機能を確認します。