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 constructorGather 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 の DummyClassifierDummyRegressor 推定器をこの目的に使用できます。

RAI Insights Dashboard Constructor

このコンポーネントには、次の 3 つの入力ポートがあります。

  • 機械学習モデル
  • トレーニング データセット
  • テスト データセット

エラー分析やモデルの説明などのコンポーネントでモデル デバッグの分析情報を生成するには、モデルのトレーニング時に使用したトレーニングとテストのデータセットを使用します。 モデルを必要としない原因分析などのコンポーネントの場合は、トレーニング データセットを使用して原因モデルをトレーニングして、原因分析情報を生成します。 テスト データセットは、責任ある AI ダッシュボードの視覚化の設定に使用します。

モデルを提供する最も簡単な方法は、入力モデルを登録し、同じモデルを、この記事の後半で説明する RAI Insight Constructor コンポーネントのモデル入力ポートで参照することです。

注意

現時点では、sklearn フレーバーを使用する MLflow 形式のモデルのみがサポートされています。

2 つのデータセットは mltable 形式にします。 提供されるトレーニング データセットとテスト データセットは、モデルのトレーニングで使用されるデータセットと同じである必要はありませんが、同じであってもかまいません。 パフォーマンス上の理由から、既定では、テスト データセットは視覚化 UI の 5,000 行に制限されています。

コンストラクター コンポーネントは、次のパラメーターも受け入れます。

パラメーター名 説明 Type
title ダッシュボードの簡単な説明。 String
task_type モデルが分類用か、回帰用か、予測用かを指定します。 文字列、classificationregression、または 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_namesclassesfeature_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。 省略可能な文字列。 randomgenetic、または 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 になるはずです。

次の手順