バイアス分析と説明可能性のための SageMaker Clarify 処理ジョブを実行する - アマゾン SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

バイアス分析と説明可能性のための SageMaker Clarify 処理ジョブを実行する

SageMaker Clarify 処理ジョブを使って、トレーニングデータの潜在的なバイアスの原因を分析し、トレーニング済みモデルのバイアスをチェックします。 SageMaker Studio でデータを分析する手順については、を参照してください SageMaker Studio でトレーニング前のデータのバイアスに関するレポートを生成する。ここでの焦点は、トレーニング後のバイアスメトリクスと説明可能性のための SHAP 値にあります。モデルの予測は、バイアスの原因となる可能性があります (例えば、あるグループに別のグループよりも頻繁に負の結果をもたらす予測を行う場合) 。 SageMaker Clarify は SageMaker Experiments と統合されているため、モデルのトレーニング後に、バイアスをチェックする属性 (収入など) を特定できます。 SageMaker 一連のアルゴリズムを実行してトレーニングされたモデルをチェックし、高所得所得者が低所得所得者と比較してより肯定的な予測を受けるかどうかなど、各属性のさまざまなタイプのバイアスに関する視覚的なレポートを提供します。

SageMaker Clarify の処理ジョブに必要なコンピューティングリソース

SageMaker Clarify 処理ジョブを実行するために必要なコンピューティングリソースを決定する際には、次の点を考慮してください。

  • 処理ジョブの完了には、数分以上かかることがあります。

  • 説明の計算は、実際の推論よりも時間がかかることがあります。これには、コンピューティングリソースを起動する時間も含まれます。

  • 説明の計算は、実際の推論よりも計算負荷が高くなる可能性があります。 SageMakerリソースの使用によって発生する可能性のある料金を確認し、モニタリングします。詳細については、Amazon SageMaker 料金を参照してください

Clarify 処理ジョブを実行する

Studio で SageMaker Clarify 処理ジョブを実行して、トレーニング後のモデルのバイアスを検出する方法を説明したノートブックの例については、「Amazon SageMaker Clarify による説明可能性とバイアス検出」を参照してください。

Amazon SageMaker Studio でノートブックを開く方法の手順については、「」を参照してくださいAmazon SageMaker Studio ノートブックを作成する、または開く。次のコードサンプルは、前述のノートブックの例から抜粋したものです。

モデルをトレーニングした後、次のコマンドを使って SageMaker Clarify プロセッサをインスタンス化します。

from sagemaker import clarify clarify_processor = clarify.SageMakerClarifyProcessor( role=role, instance_count=1, instance_type='ml.c4.xlarge', sagemaker_session=session)

次に、入力データセット、出力の格納場所、対象となるラベル列を DataConfig オブジェクトで設定し、トレーニング済みモデルに関する情報を ModelConfig で指定し、予測の形式に関する情報を ModelPredictedLabelConfig で提供します。

bias_report_output_path = 's3://{}/{}/clarify-bias'.format(bucket, prefix) bias_data_config = clarify.DataConfig( s3_data_input_path=train_uri, s3_output_path=bias_report_output_path, label='Target', headers=training_data.columns.to_list(), dataset_type='text/csv') model_config = clarify.ModelConfig( model_name=model_name, instance_type='ml.c5.xlarge', instance_count=1, accept_type='text/csv') predictions_config = clarify.ModelPredictedLabelConfig(probability_threshold=0.8)

BiasConfig を使用して、ファセット (機密性の高いグループ、Sex) を含む列、機密性の高い特徴 (facet_values_or_threshold)、望ましい結果 (label_values_or_threshold) に関する情報を提供します。

bias_config = clarify.BiasConfig( label_values_or_threshold=[1], facet_name='Sex', facet_values_or_threshold=[0])

を使用して、処理ジョブでトレーニング前とトレーニング後の両方の分析を同時に実行できますrun_bias()

clarify_processor.run_bias( data_config=bias_data_config, bias_config=bias_config, model_config=model_config, model_predicted_label_config=predictions_config, pre_training_methods='all', post_training_methods='all')

Studio で結果を表示するか、bias_report_output_path S3 バケットから結果をダウンロードします。

Spark で Clarify 処理ジョブを実行する

Apache Spark は、大規模データ処理のための統合分析エンジンです。大規模なデータセットを操作する場合は、 SageMaker Clarify の Spark 処理機能を使用することで、Clarify 処理ジョブを高速に実行できます。Clarify ジョブで Spark 処理を使用するには、インスタンス数を 1 より大きい数に設定します。Clarify は、Clarify プロセッサごとに複数のインスタンスがある場合に Spark 分散コンピューティングを使用します。

次の例は、SageMakerClarifyProcessorを使用して、5 つのインスタンスを持つ Clarify プロセッサを作成する方法を示しています。

Clarify は、このプロセッサに関連するすべてのジョブを Spark 分散処理を使用して実行します。

from sagemaker import clarify clarify_processor = clarify.SageMakerClarifyProcessor( role=role, instance_count=5, instance_type='ml.c5.xlarge', max_runtime_in_seconds=1200, volume_size_in_gb=100)

ローカル SHAP 値を ShapConfig クラスに保存するように Clarify ジョブを設定した場合、Spark はローカル SHAP 値を複数のパーツファイルとして同時に保存します。

インスタンスを増やす場合は、ModelConfigシャドウエンドポイントのモデル構成でもインスタンス数を増やすことを推奨します。これは、処理インスタンスがシャドウエンドポイントによってボトルネックになるのを防ぐためです。具体的には、 one-to-one エンドポイントと処理インスタンスの比率の使用をお勧めします。

分析結果を取得する

処理ジョブが終了したら、出力ファイルをダウンロードして、Studio で結果を検査または視覚化できます。出力ディレクトリには、次のファイルが含まれています。

  • analysis.json - JSON 形式のバイアスメトリクスと SHAP 値。

  • report.ipynb - バイアスメトリクスと SHAP 値を視覚化するための静的ノートブック。

  • explanations_shap/out.csv - 入力データセットと同じ形式のデータセット内の各行のローカル (インスタンス別) SHAP 値。各行の出力ファイルには、各特徴と予測ラベルの SHAP 値が含まれています。

分析 JSON ファイルでは、バイアスメトリクスと SHAP 値が 3 つの別々のセクションに整理されています。

{ "explanations": { . . . } "pre_training_bias_metrics": { . . . } "post_training_bias_metrics": { . . . } }

SHAP 値は、“explanations” セクションにあります。値は、各特徴列のグローバル SHAP 値に対応します。

"explanations": { "kernel_shap": { "label0": { "global_shap_values": { "feature_0": 0.022486410860333206, "feature_1": 0.007381025261958729, "feature_2": 0.006843906804137847 }, "expected_value": 0.508233428001 } } }

バイアスメトリクスは、トレーニング前とトレーニング後のバイアスメトリクスセクションにあります。

{ "post_training_bias_metrics": { "label": "target", "label_value_or_threshold": "1", "facets": { "feature_2": [ { "value_or_threshold": "1", "metrics": [ { "name": "DI", "description": "Disparate Impact (DI)", "value": 0.711340206185567 }, { "name": "DCR", "description": "Difference in Conditional Rejections (DCR)", "value": -0.34782608695652184 } { . . . } ] } ] } } }

バイアスメトリクスと SHAP 値の詳細、それらの解釈方法の詳細については、「Amazon AI の公平性と説明可能性に関するホワイトペーパー」を参照してください。

上位の SHAP 値を示す棒グラフとバイアスメトリクスを示すテーブルは、レポートノートブックに記載されています。