執行 SageMaker 澄清處理任務以進行偏差分析和可解釋性 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

執行 SageMaker 澄清處理任務以進行偏差分析和可解釋性

若要使用 SageMaker Clarify 分析資料和模型的偏差和可解釋性,您必須設定 SageMaker Clarify 處理任務。本指南說明如何使用 SageMaker Python SDK API 設定任務輸入、輸出、資源和分析組態SageMakerClarifyProcessor

API 充當 的 SageMaker CreateProcessingJob高階包裝函式API。它會隱藏設定 SageMaker Clarify 處理任務時涉及的許多詳細資訊。設定任務的詳細資訊包括擷取 SageMaker Clarify 容器映像URI和產生分析組態檔案。下列步驟說明如何設定、初始化和啟動 SageMaker Clarify 處理任務。

使用 設定 SageMaker Clarify 處理任務 API
  1. 為任務組態的每個部分定義設定物件。這些部分可能包含以下項目:

    SageMaker Clarify 處理任務的組態物件會因不同類型的資料格式和使用案例而有所不同。表格式資料的組態範例CSVJSON Lines格式、自然語言處理 (NLP)、 computer vision (CV) 和時間序列 (TS) 問題提供於下列各節。

  2. 建立 SageMakerClarifyProcessor 物件並使用指定任務資源的參數將其初始化。這些資源包含參數,例如要使用的運算執行個體數目。

    下列程式碼範例說明如何建立SageMakerClarifyProcessor物件,並指示物件使用一個ml.c4.xlarge運算執行個體進行分析。

    from sagemaker import clarify clarify_processor = clarify.SageMakerClarifyProcessor( role=role, instance_count=1, instance_type='ml.c4.xlarge', sagemaker_session=session, )
  3. 使用 使用案例的組態物件呼叫SageMakerClarifyProcessor物件的特定執行方法,以啟動任務。這些執行方法包含下列各項:

    • run_pre_training_bias

    • run_post_training_bias

    • run_bias

    • run_explainability

    • run_bias_and_explainability

    SageMakerClarifyProcessor可處理幕後的幾個任務。這些任務包括擷取 SageMaker Clarify 容器映像通用資源識別符 (URI)、根據提供的組態物件撰寫分析組態檔案、將檔案上傳至 Amazon S3 儲存貯體,以及設定 SageMaker Clarify 處理任務

    下列可擴展章節說明如何計算訓練前訓練後偏差指標, SHAP 值 、 和 部分相依性圖表 (PDPs)。 這些區段顯示這些資料類型的功能重要性:

    • CSV 格式或JSON行格式的表格式資料集

    • 自然語言處理 (NLP) 資料集

    • 電腦視覺資料集

使用 Spark 執行平行 SageMaker Clarify 處理任務的指南會遵循可擴展區段。

下列範例示範如何設定CSV格式的表格式資料集偏差分析和可解釋性分析。在這些範例中,內送資料集具有四個功能欄欄和一個二進位標籤欄Target。資料集的內容如下。1的標籤值表示正值結果。

Target,Age,Gender,Income,Occupation 0,25,0,2850,2 1,36,0,6585,0 1,22,1,1759,1 0,48,0,3446,1 ...

這個 DataConfig 物件指定輸入資料集和在哪裡儲存輸出。s3_data_input_path 參數可以是資料集檔案URI的 或 Amazon S3 URI字首。如果您提供 S3 URI字首, SageMaker Clarify 處理任務會遞迴收集位於字首下的所有 Amazon S3 檔案。的值s3_output_path應該是 S3 URI字首,以保留分析結果。 SageMaker 會在編譯s3_output_path時使用 ,且 無法採用在執行期間ExecutionVariable使用的 SageMaker 管道參數、屬性、表達式或 的值。下列程式碼範例說明如何指定先前範例輸入資料集的資料組態。

data_config = clarify.DataConfig( s3_data_input_path=dataset_s3_uri, dataset_type='text/csv', headers=['Target', 'Age', 'Gender', 'Income', 'Occupation'], label='Target', s3_output_path=clarify_job_output_s3_uri, )

如何計算CSV資料集的所有訓練前偏差指標

下列程式碼範例說明如何設定BiasConfig物件,以衡量先前樣本輸入對具有Gender0的樣本偏差。

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

下列程式碼範例示範如何使用執行陳述式來啟動 SageMaker Clarify 處理任務,以計算輸入資料集的所有訓練前偏差指標

clarify_processor.run_pre_training_bias( data_config=data_config, data_bias_config=bias_config, methods="all", )

或者,您也可以指派訓練前偏差指標清單給方法參數,以選擇要運算哪些指標。例如,methods="all"使用 取代 會methods=["CI", "DPL"]指示 SageMaker Clarify 處理器僅計算標籤比例 中的類別不平衡和差異。 https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-data-bias-metric-true-label-imbalance.html

如何計算CSV資料集的所有訓練後偏差指標

您可以在訓練前運算訓練前偏差指標。但是,若要運算訓練後偏差指標,您必須擁有訓練好的模型。下列範例輸出來自以 CSV 格式輸出資料的二進位分類模型。在此範例輸出中,每一列都包含兩欄。首欄包含預測標籤,第二欄包含該標籤的機率值。

0,0.028986845165491 1,0.825382471084594 ...

在下列範例組態中, ModelConfig 物件會指示任務將 SageMaker 模型部署到暫時端點。端點使用一個ml.m4.xlarge推論執行個體。由於參數content_typeaccept_type沒有設定,它們會自動使用參數dataset_type的值,即text/csv

model_config = clarify.ModelConfig( model_name=your_model, instance_type='ml.m4.xlarge', instance_count=1, )

下列組態範例使用標籤索引為0ModelPredictedLabelConfig物件。這會指示 SageMaker Clarify 處理任務在模型輸出的第一欄找到預測標籤。在此範例中,處理任務使用從零開始的索引。

predicted_label_config = clarify.ModelPredictedLabelConfig( label=0, )

結合先前的組態範例,下列程式碼範例會啟動 SageMaker Clarify 處理任務,以計算所有訓練後偏差指標。

clarify_processor.run_post_training_bias( data_config=data_config, data_bias_config=bias_config, model_config=model_config, model_predicted_label_config=predicted_label_config, methods="all", )

同樣地,您也可以指派訓練後偏差指標清單給methods參數,以選擇要運算哪些指標。例如,以methods=["DPPL", "DI"]取代methods=“all”,僅運算預測標籤中正值比例的差異差別影響

如何計算CSV資料集的所有偏差指標

下列組態範例說明如何在單一 SageMaker Clarify 處理任務中執行所有訓練前和訓練後偏差指標。

clarify_processor.run_bias( data_config=data_config, bias_config=bias_config, model_config=model_config, model_predicted_label_config=predicted_label_config, pre_training_methods="all", post_training_methods="all", )

如需說明如何在 SageMaker Studio Classic 中執行 SageMaker Clarify 處理任務以偵測偏差的範例筆記本,請參閱使用 SageMaker Clarify 的公平性和可解釋性

如何運算 SHAP CSV 資料集的值

SageMaker Clarify 使用核心SHAP演算法 提供功能屬性。SHAP 分析需要機率值或分數,而不是預測標籤,因此此ModelPredictedLabelConfig物件具有機率索引 1。這會指示 SageMaker Clarify 處理任務從模型輸出的第二欄擷取機率分數 (使用以零為基礎的索引)。

probability_config = clarify.ModelPredictedLabelConfig( probability=1, )

SHAPConfig 物件提供 SHAP 分析參數。在此範例中,SHAP baseline 參數被省略,且 num_clusters 參數的值為 1。這指示 SageMaker Clarify 處理器運算一個 SHAP 基準範例以 輸入資料集的叢集為基礎。如果您想要選擇基準資料集,請參閱 SHAP 可解釋性 的基準

shap_config = clarify.SHAPConfig( num_clusters=1, )

下列程式碼範例會啟動要運算的 SageMaker Clarify 處理任務 SHAP 值。

clarify_processor.run_explainability( data_config=data_config, model_config=model_config, model_scores=probability_config, explainability_config=shap_config, )

如需範例筆記本,其中包含如何在 SageMaker Studio Classic 中執行 SageMaker Clarify 處理任務以進行運算的指示 SHAP 值,請參閱 SageMaker Clarify 的公平性和可解釋性

如何運算部分相依性圖表 (PDPs) 資料集 CSV

PDPs 顯示預測目標回應對一或多個感興趣的輸入特徵的依賴性,同時保持所有其他特徵不變。向上傾斜線或 中的曲線PDP表示目標與輸入特徵之間的關係為正數,而陡度表示關係的強度。向下傾斜的直線或曲線表示如果輸入功能減少,則目標變數會增加。直覺上,您可以將部分相依解譯為對每個感興趣的輸入功能目標變數之回應。

下列組態範例適用於使用 PDPConfig 物件指示 SageMaker Clarify 處理任務計算Income功能的重要性。

pdp_config = clarify.PDPConfig( features=["Income"], grid_resolution=10, )

在先前的範例中,grid_resolution參數會將Income功能值的範圍劃分為10儲存貯體。 SageMaker Clarify 處理任務將產生 PDPs 用於在 x 軸上Income分割為10區段。Y 軸將說明對目標變數的Income邊際影響。

下列程式碼範例會啟動要運算的 SageMaker Clarify 處理任務 PDPs.

clarify_processor.run_explainability( data_config=data_config, model_config=model_config, model_scores=probability_config, explainability_config=pdp_config, )

如需範例筆記本,其中包含如何在 SageMaker Studio Classic 中執行 SageMaker Clarify 處理任務以進行運算的指示 PDPs,請參閱使用 SageMaker Clarify 解釋 - 部分相依性圖表 (PDP)

如何同時計算兩者 SHAP 值和 PDPs 針對CSV資料集

您可以同時計算 SHAP 值和 PDPs 在單一 SageMaker Clarify 處理任務中。在下列組態範例中,新PDPConfig物件的top_k_features參數設定為2。這指示 SageMaker Clarify 處理任務運算 PDPs 2 具有最大全域 SHAP 值。

shap_pdp_config = clarify.PDPConfig( top_k_features=2, grid_resolution=10, )

下列程式碼範例會啟動 SageMaker Clarify 處理任務來計算兩者 SHAP 值和 PDPs.

clarify_processor.run_explainability( data_config=data_config, model_config=model_config, model_scores=probability_config, explainability_config=[shap_config, shap_pdp_config], )

下列範例示範如何為 > Lines 密集格式的SageMaker JSON表格式資料集設定偏差分析和可解釋性分析。如需更多資訊,請參閱JSONLINES 請求格式。在這些範例中,傳入的資料集具有與上一節相同的資料,但它們採用JSON行格式。每行都是有效的JSON物件。鍵Features指向功能值的陣列,以及鍵Label指向 Ground Truth 標籤。

{"Features":[25,0,2850,2],"Label":0} {"Features":[36,0,6585,0],"Label":1} {"Features":[22,1,1759,1],"Label":1} {"Features":[48,0,3446,1],"Label":0} ...

在下列組態範例中,DataConfig物件會指定輸入資料集以及儲存輸出的位置。

data_config = clarify.DataConfig( s3_data_input_path=jsonl_dataset_s3_uri, dataset_type='application/jsonlines', headers=['Age', 'Gender', 'Income', 'Occupation', 'Target'], label='Label', features='Features', s3_output_path=clarify_job_output_s3_uri, )

在先前的組態範例中,特徵參數會設定為 JMESPath 運算式,Features以便 SageMaker Clarify 處理任務可以從每個記錄擷取特徵陣列。label 參數設定為JMESPath表達式,Label以便 SageMaker Clarify 處理任務可以從每個記錄擷取地面實況標籤。s3_data_input_path 參數可以是資料集檔案URI的 或 Amazon S3 URI字首。如果您提供 S3 URI字首, SageMaker Clarify 處理任務會遞迴收集位於字首下的所有 S3 檔案。的值s3_output_path應該是 S3 URI字首,以保留分析結果。 SageMaker 會在編譯s3_output_path時使用 ,且 無法採用在執行期間ExecutionVariable使用的 SageMaker 管道參數、屬性、表達式或 的值。

您必須擁有訓練好的模型,才能運算訓練後的偏差指標或功能重要性。下列範例來自二進位分類模型,以範例格式輸出JSON行資料。模型輸出的每一列都是有效的JSON物件。鍵predicted_label指向預測標籤,鍵probability指向機率值。

{"predicted_label":0,"probability":0.028986845165491} {"predicted_label":1,"probability":0.825382471084594} ...

在下列組態範例中,ModelConfig物件會指示 SageMaker Clarify 處理任務將 SageMaker 模型部署至暫時端點。端點使用一個ml.m4.xlarge推論執行個體。

model_config = clarify.ModelConfig( model_name=your_model, instance_type='ml.m4.xlarge', instance_count=1, content_template='{"Features":$features}', )

在之前的組態範例中,未設定content_typeaccept_type參數。因此,它們會自動使用DataConfig物件的dataset_type參數值,即application/jsonlines。 SageMaker Clarify 處理任務使用 content_template 參數,透過一系列功能取代$features預留位置來編寫模型輸入。

下列範例組態示範如何將ModelPredictedLabelConfig物件的標籤參數設定為JMESPath表達式 predicted_label。這將從模型輸出中擷取預測標籤。

predicted_label_config = clarify.ModelPredictedLabelConfig( label='predicted_label', )

下列範例組態示範如何將ModelPredictedLabelConfig物件的probability參數設定為JMESPath表達式 probability。這將從模型輸出中擷取分數。

probability_config = clarify.ModelPredictedLabelConfig( probability='probability', )

若要以JSON行格式計算資料集的偏差指標和特徵重要性,請使用與資料集上一節相同的執行陳述式和組態物件CSV。您可以在 SageMaker Studio Classic 中執行 SageMaker Clarify 處理任務,以偵測偏差和運算功能重要性。如需指示和範例筆記本,請參閱使用 SageMaker Clarify 的公平性和可解釋性 (JSON行格式)

SageMaker Clarify 支援自然語言處理 (NLP) 模型的說明。這些說明可協助您瞭解哪些文字區段對您的模型預測最為重要。您可以說明輸入資料集的單一執行個體之模型預測,或者說明基準資料集的模型預測。若要瞭解並視覺化模型的行為,您可以指定多個精細程度的層級。要做到這一點,定義文字段的長度,例如其權杖、句子、段落。

SageMaker 釐清可NLP解釋性與分類和迴歸模型相容。您也可以使用 SageMaker Clarify 來說明模型在包含文字、類別或數值功能的多模型資料集上的行為。NLP 多模態資料集的可解釋性可協助您了解每個功能對模型輸出的重要性。 SageMaker Clarify 支援 62 種語言,並可處理包含多種語言的文字。

下列範例顯示 運算功能重要性的分析組態檔案NLP。在此範例中,傳入資料集是CSV格式為 的表格式資料集,具有一個二進位標籤欄和兩個特徵欄。

0,2,"Flavor needs work" 1,3,"They taste good" 1,5,"The best" 0,1,"Taste is awful" ...

下列組態範例顯示如何使用 DataConfig 物件以CSV格式和輸出資料路徑指定輸入資料集。

nlp_data_config = clarify.DataConfig( s3_data_input_path=nlp_dataset_s3_uri, dataset_type='text/csv', headers=['Target', 'Rating', 'Comments'], label='Target', s3_output_path=clarify_job_output_s3_uri, )

在先前的組態範例中, s3_data_input_path 參數可以是資料集檔案URI的 或 Amazon S3 URI字首。如果您提供 S3 URI字首, SageMaker Clarify 處理任務會遞迴收集位於字首下的所有 S3 檔案。的值s3_output_path應該是 S3 URI字首,以保留分析結果。 SageMaker 會在編譯s3_output_path時使用 ,且 不能接受在執行期間ExecutionVariable使用的管道參數、屬性、表達式或 的值 SageMaker。

下列範例輸出是根據先前以輸入資料集訓練的二進位分類模型所建立。分類模型接受CSV資料,且會在 0和 之間輸出單一分數1

0.491656005382537 0.569582343101501 ...

下列範例示範如何設定ModelConfig物件以部署 SageMaker 模型。在此範例中,臨時端點會部署模型。此端點使用一個配備 的ml.g4dn.xlarge推論執行個體GPU來加速推論。

nlp_model_config = clarify.ModelConfig( model_name=your_nlp_model_name, instance_type='ml.g4dn.xlarge', instance_count=1, )

下面的範例說明如何設定ModelPredictedLabelConfig物件定位的第一欄機率 (分數) 與索引0

probability_config = clarify.ModelPredictedLabelConfig( probability=0, )

下列範例 SHAP 組態顯示如何使用英文模型和輸入資料集執行權杖化可解釋性分析。

text_config = clarify.TextConfig( language='english', granularity='token', ) nlp_shap_config = clarify.SHAPConfig( baseline=[[4, '[MASK]']], num_samples=100, text_config=text_config, )

在上一個範例中,TextConfig物件會啟用可NLP解釋性分析。granularity參數指示分析應該解析權杖。在英語中,每個權杖都是一個單詞。如需其他語言,請參閱 SageMaker Clarify 用於NLP處理的spaCy權杖化 的文件。上一個範例也示範如何使用 的平均值Rating4來設定就地 SHAP 基準執行個體。特殊的遮蔽權杖 [MASK] 用於取代 Comments 中的權杖 (字)。

在先前的範例中,如果執行個體是2,"Flavor needs work",請將基準設定為具有下列基準4的平均值Rating

4, '[MASK]'

在上一個範例中, SageMaker Clarify 解釋程式會逐一查看每個權杖,並將其取代為遮罩,如下所示。

2,"[MASK] needs work" 4,"Flavor [MASK] work" 4,"Flavor needs [MASK]"

然後, SageMaker Clarify 解釋程式會將每行傳送至您的模型以進行預測。這樣解譯器就可以學習帶有和沒有遮蔽詞的預測。然後 SageMaker ,Clarify 解釋程式會使用此資訊來計算每個權杖的貢獻。

下列程式碼範例會啟動要運算的 SageMaker Clarify 處理任務 SHAP 值。

clarify_processor.run_explainability( data_config=nlp_data_config, model_config=nlp_model_config, model_scores=probability_config, explainability_config=nlp_shap_config, )

如需說明如何在 SageMaker Studio Classic 中執行 SageMaker Clarify 處理任務以進行可NLP解釋性分析的範例筆記本,請參閱使用 SageMaker Clarify 解釋文字情緒分析

SageMaker Clarify 會產生熱圖,提供電腦視覺模型如何分類和偵測影像中物件的洞見。

在下列組態範例中,輸入資料集由JPEG影像組成。

cv_data_config = clarify.DataConfig( s3_data_input_path=cv_dataset_s3_uri, dataset_type="application/x-image", s3_output_path=clarify_job_output_s3_uri, )

在先前的組態範例中,DataConfig物件包含設定為 Amazon S3 URI字首的 s3_data_input_path 集。 SageMaker Clarify 處理任務會遞迴收集位於字首下的所有影像檔案。s3_data_input_path 參數可以是資料集檔案URI的 或 Amazon S3 URI字首。如果您提供 S3 URI字首, SageMaker Clarify 處理任務會遞迴收集位於字首下的所有 S3 檔案。的值s3_output_path應該是 S3 URI字首,以保留分析結果。 SageMaker 會在編譯s3_output_path時使用 ,且 不能接受在執行期間ExecutionVariable使用的 SageMaker 管道參數、屬性、表達式或 的值。

如何解譯影像分類模型

SageMaker Clarify 處理任務使用核心SHAP演算法解釋影像,該演算法會將影像視為超像素集合。在有由影像組成的資料集的情況下,處理任務會輸出影像資料集,其中每個影像都會說明相關超像素的熱度圖。

下列組態範例示範如何使用 SageMaker 影像分類模型設定可解釋性分析。如需更多資訊,請參閱影像分類-MXNet

ic_model_config = clarify.ModelConfig( model_name=your_cv_ic_model, instance_type="ml.p2.xlarge", instance_count=1, content_type="image/jpeg", accept_type="application/json", )

在先前的組態範例中,名為 的模型your_cv_ic_model已受過訓練,可在輸入JPEG映像上分類動物。上一個範例中的ModelConfig物件會指示 SageMaker Clarify 處理任務將 SageMaker 模型部署到暫時端點。對於加速推論,端點會使用一個配備 的ml.p2.xlarge推論執行個體GPU。

JPEG 映像傳送至端點後,端點會將其分類並傳回分數清單。每個分數適用於一個類別。ModelPredictedLabelConfig物件提供每個類別的名稱,如下所示。

ic_prediction_config = clarify.ModelPredictedLabelConfig( label_headers=['bird', 'cat', 'dog'], )

['鳥','貓','狗'] 先前的輸入範例輸出可以是 0.3,0.6,0.1,其中 0.3 代表將圖像分類為鳥的可信度分數。

下列範例 SHAP 組態顯示如何產生影像分類問題的解釋。它使用一個ImageConfig物件來啟動分析。

ic_image_config = clarify.ImageConfig( model_type="IMAGE_CLASSIFICATION", num_segments=20, segment_compactness=5, ) ic_shap_config = clarify.SHAPConfig( num_samples=100, image_config=ic_image_config, )

SageMaker Clarify 使用 scikit-learn 程式庫中的簡易線性疊代叢集 (SLIC) 方法來擷取特徵,以進行影像分割。之前的組態範例model_type參數會指出影像分類問題的類型。參數num_segments會估計要將標示多少個近似區段數量到輸入影像中。然後將區段數量傳遞至 slic n_segments 參數。

影像的每個區段都被視為超像素,而本機 SHAP 會計算每個區段的值。參數segment_compactness可決定由 scikit-image slic 方法所產生的影像區段形狀和大小。然後將影像區段的大小和形狀傳遞至 slic compactness 參數。

下列程式碼範例會啟動 SageMaker Clarify 處理任務,為您的映像產生熱圖。正熱度圖值說明該功能提高了偵測物件的可信度分數。負值表示該功能降低了可信度分數。

clarify_processor.run_explainability( data_config=cv_data_config, model_config=ic_model_config, model_scores=ic_prediction_config, explainability_config=ic_shap_config, )

如需使用 SageMaker Clarify 對影像進行分類並解釋其分類的範例筆記本,請參閱使用 SageMaker Clarify 解釋影像分類

如何解譯物件檢測模型

SageMaker Clarify 處理任務可以偵測和分類影像中的物件,然後為偵測到的物件提供解釋。解譯的程序如下。

  1. 影像物件首先分類為指定集合中的一個分類。例如,如果一個物件偵測模型可以識別貓,狗和魚,那麼這三個類是在一個集合。此集合由label_headers參數指定,如下所示。

    clarify.ModelPredictedLabelConfig( label_headers=object_categories, )
  2. SageMaker Clarify 處理任務會為每個物件產生可信度分數。高可信度分數表示它屬於指定集合中的其中一個類別。 SageMaker Clarify 處理任務也會產生分隔物件的週框方塊座標。如需有關可信度分數和邊界框的更多相關資訊,請參閱回應格式

  3. SageMaker 然後,Clarify 提供在影像場景中偵測物件的說明。它會使用如何解譯影像分類模型一節中所述的方法。

在下列組態範例中, SageMaker 物件偵測模型your_cv_od_model會針對JPEG映像進行訓練,以識別其上的動物。

od_model_config = clarify.ModelConfig( model_name=your_cv_ic_model, instance_type="ml.p2.xlarge", instance_count=1, content_type="image/jpeg", accept_type="application/json", )

上一個組態範例中的ModelConfig物件會指示 SageMaker Clarify 處理任務將 SageMaker 模型部署到暫時端點。對於加速成像,此端點使用一個配備 的ml.p2.xlarge推論執行個體GPU。

在下列範例組態中,ModelPredictedLabelConfig物件會提供分類的每個類別名稱。

ic_prediction_config = clarify.ModelPredictedLabelConfig( label_headers=['bird', 'cat', 'dog'], )

下列範例 SHAP 組態顯示如何產生物件偵測的說明。

od_image_config = clarify.ImageConfig( model_type="OBJECT_DETECTION", num_segments=20, segment_compactness=5, max_objects=5, iou_threshold=0.5, context=1.0, ) od_shap_config = clarify.SHAPConfig( num_samples=100, image_config=image_config, )

在前面的範例組態中,ImageConfig物件會啟動分析。model_type參數表示問題的類型是物件偵測。如需有關其他參數的詳細描述,請參閱分析組態檔案

下列程式碼範例會啟動 SageMaker Clarify 處理任務,為您的映像產生熱圖。正熱度圖值說明該功能提高了偵測物件的可信度分數。負值表示該功能降低了可信度分數。

clarify_processor.run_explainability( data_config=cv_data_config, model_config=od_model_config, model_scores=od_prediction_config, explainability_config=od_shap_config, )

如需使用 SageMaker Clarify 偵測影像中物件並解釋其預測的範例筆記本,請參閱使用 Amazon SageMaker Clarify 解釋物件偵測模型

下列範例示範如何以 SageMaker JSON密集格式設定資料,以解釋時間序列預測模型。如需JSON格式化的詳細資訊,請參閱 JSON 請求格式

[ { "item_id": "item1", "timestamp": "2019-09-11", "target_value": 47650.3, "dynamic_feature_1": 0.4576, "dynamic_feature_2": 0.2164, "dynamic_feature_3": 0.1906, "static_feature_1": 3, "static_feature_2": 4 }, { "item_id": "item1", "timestamp": "2019-09-12", "target_value": 47380.3, "dynamic_feature_1": 0.4839, "dynamic_feature_2": 0.2274, "dynamic_feature_3": 0.1889, "static_feature_1": 3, "static_feature_2": 4 }, { "item_id": "item2", "timestamp": "2020-04-23", "target_value": 35601.4, "dynamic_feature_1": 0.5264, "dynamic_feature_2": 0.3838, "dynamic_feature_3": 0.4604, "static_feature_1": 1, "static_feature_2": 2 }, ]

資料組態

使用 與您的可解釋性任務TimeSeriesDataConfig通訊,了解如何從傳遞的輸入資料集正確剖析資料,如下列範例組態所示:

time_series_data_config = clarify.TimeSeriesDataConfig( target_time_series='[].target_value', item_id='[].item_id', timestamp='[].timestamp', related_time_series=['[].dynamic_feature_1', '[].dynamic_feature_2', '[].dynamic_feature_3'], static_covariates=['[].static_feature_1', '[].static_feature_2'], dataset_format='timestamp_records', )

非對稱 Shapley 值組態

使用 AsymmetricShapleyValueConfig定義時間序列預測模型解釋分析的引數,例如基準、方向、精細度和樣本數量。會針對所有三種類型的資料設定基準值:相關時間序列、靜態共變數和目標時間序列。此AsymmetricShapleyValueConfig組態會通知 SageMaker Clarify 處理器如何一次計算一個項目的特徵屬性。下列組態顯示 的範例定義AsymmetricShapleyValueConfig

asymmetric_shapley_value_config = AsymmetricShapleyValueConfig( direction="chronological", granularity="fine-grained", num_samples=10, baseline={ "related_time_series": "zero", "static_covariates": { "item1": [0, 0], "item2": [0, 0] }, "target_time_series": "zero" }, )

您提供給 的值AsymmetricShapleyValueConfig會傳遞至 的分析組態,作為 中methods具有索引鍵 的項目asymmetric_shapley_value

模型組態

您可以控制從 SageMaker Clarify 處理器傳送的承載結構。在下列程式碼範例中,ModelConfig組態物件會引導時間序列預測可解釋性任務,使用JMESPath語法將記錄彙總至 '{"instances": $records}' ,其中每個記錄的結構都以下列 record_template 定義'{"start": $start_time, "target": $target_time_series, "dynamic_feat": $related_time_series, "cat": $static_covariates}'。請注意,$start_time$related_time_series、 和 $target_time_series$static_covariates是用於將資料集值映射至端點請求值的內部字符。

model_config = clarify.ModelConfig( model_name=your_model, instance_type='ml.m4.xlarge', instance_count=1, record_template='{"start": $start_time, "target": $target_time_series, "dynamic_feat": $related_time_series, "cat": $static_covariates}', content_template='{"instances": $records}',, time_series_model_config=TimeSeriesModelConfig( forecast={'forecast': 'predictions[*].mean[:2]'} ) )

同樣地,使用金鑰 TimeSeriesModelConfig傳遞至分析組態的 forecast中的 屬性time_series_predictor_config,用於從端點回應擷取模型預測。例如,端點批次回應的範例如下:

{ "predictions": [ {"mean": [13.4, 3.6, 1.0]}, {"mean": [23.0, 4.7, 3.0]}, {"mean": [3.4, 5.6, 2.0]} ] }

如果為 提供的JMESPath表達式forecast{'predictions【*】.mean【:2】'}},則預測值會剖析如下:

[[13.4, 3.6], [23.0, 4.7], [3.4, 5.6]]

如何執行平行 SageMaker Clarify 處理任務

使用大型資料集時,您可以使用 Apache Spark 來提高 SageMaker Clarify 處理任務的速度。Spark 是用於大規模資料處理的統一分析引擎。當您為每個 SageMaker Clarify 處理器請求多個執行個體時, SageMaker Clarify 會使用 Spark 的分散式運算功能。

下列組態範例示範如何使用 SageMakerClarifyProcessor 建立具有5運算執行個體的 SageMaker Clarify 處理器。若要使用 Spark 分散式處理執行與 SageMakerClarifyProcessor、 SageMaker Clarify 相關聯的任何任務。

from sagemaker import clarify spark_clarify_processor = clarify.SageMakerClarifyProcessor( role=role, instance_count=5, instance_type='ml.c5.xlarge', )

如果您將 save_local_shap_values 參數設定為 SHAPConfig True, SageMaker Clarify 處理任務會儲存本機 SHAP 值作為任務輸出位置中的多個部分檔案。

若要關聯本機 SHAP 輸入資料集執行個體的值,請使用 的 joinsource 參數DataConfig。如果您新增更多運算執行個體,建議您也instance_countModelConfig為暫時端點增加 的 。這樣可以防止 Spark 工作者的並行推論請求產生過多端點。具體而言,我們建議您使用 one-to-one執行個體的 endpoint-to-processing比率。