本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要使用 SageMaker Clarify分析您的資料和模型是否存在偏差和解釋性,您必須設定 SageMaker Clarify 處理任務。本指南說明如何設定 SageMaker Python SDK API SageMakerClarifyProcessor
來設定任務輸入、輸出、資源和分析組態。
API 做為 SageMaker AI CreateProcessingJob
API 的高階包裝函式。它會隱藏設定 SageMaker Clarify 處理任務所涉及的許多詳細資料。設定任務的詳細資訊包含擷取 SageMaker Clarify 容器映像 URI 和產生分析組態檔案。下列步驟會示範如何設定、初始化和啟動 SageMaker Clarify 處理任務。
使用 API 設定 SageMaker Clarify 處理任務
-
為任務組態的每個部分定義設定物件。這些部分可能包含以下項目:
-
輸入資料集和輸出位置:DataConfig
。 -
分析模型或端點:ModelConfig
。 -
偏差分析參數:BiasConfig
。 -
SHapley Additive exPlanations (SHAP) 分析參數:SHAPConfig
。 -
非對稱 Shapley 值分析參數 (僅適用於時間序列):AsymmetricShapleyValueConfig
。
SageMaker Clarify 處理任務的組態物件會因不同類型的資料格式和使用案例而有所不同。下列各節提供表格式資料的組態範例,包括 CSV和 JSON Lines 格式、自然語言處理 (NLP)、 computer vision (CV) 和時間序列 (TS) 問題。
-
-
建立
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, )
-
使用組態物件呼叫 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 AI 會在編譯s3_output_path
時使用 ,且無法取得 SageMaker AI Pipeline 參數、屬性、表達式或 的值ExecutionVariable
,這些參數會在執行期間使用。下列程式碼範例說明如何指定先前範例輸入資料集的資料組態。
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
物件,以衡量先前樣本輸入對具有Gender
值0
的樣本偏差。
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=["CI", "DPL"]
取代methods="all"
,指示 SageMaker Clarify 處理器僅運算等級不平衡和標籤比例差異。
如何運算 CSV 資料集的所有訓練後偏差指標
您可以在訓練前運算訓練前偏差指標。但是,若要運算訓練後偏差指標,您必須擁有訓練好的模型。下列範例輸出來自二進位分類模型,該模型以 CSV 格式輸出資料。在此範例輸出中,每一列都包含兩欄。首欄包含預測標籤,第二欄包含該標籤的機率值。
0,0.028986845165491 1,0.825382471084594 ...
在下列範例組態中, ModelConfig
物件會指示任務將 SageMaker AI 模型部署到暫時性端點。端點使用一個ml.m4.xlarge
推論執行個體。由於參數content_type
和accept_type
沒有設定,它們會自動使用參數dataset_type
的值,即text/csv
。
model_config = clarify.ModelConfig(
model_name=your_model,
instance_type='ml.m4.xlarge',
instance_count=1,
)
下列組態範例使用標籤索引為0
的ModelPredictedLabelConfig
物件。這會指示 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 的公平性和可解釋性
如何運算CSV 資料集的 SHAP 值
SageMaker Clarify 使用 KernelSHAPModelPredictedLabelConfig
物件具有機率索引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 的公平性和可解釋性
如何運算 CSV 資料集的部分相依圖 (PDPs)
PDPs說明預測目標對一個或多個感興趣的輸入功能的回應依賴,同時保持所有其他功能不變。向上傾斜線或 PDP 中的曲線表示目標與輸入功能之間的關係為正值,陡度表示關係的強度。向下傾斜的直線或曲線表示如果輸入功能減少,則目標變數會增加。直覺上,您可以將部分相依解譯為對每個感興趣的輸入功能目標變數之回應。
下列組態範例適用於使用PDPConfig
物件指示 SageMaker Clarify 處理任務,來運算Income
功能的重要性。
pdp_config = clarify.PDPConfig(
features=["Income"],
grid_resolution=10,
)
在先前的範例中,grid_resolution
參數會將Income
功能值的範圍劃分為10
儲存貯體。SageMaker Clarify 處理任務會在 X 軸上針對Income
產生PDPs分割為10
區段。Y 軸將說明對目標變數的Income
邊際影響。
下列程式碼範例會啟動要運算PDPs的 SageMaker Clarify 處理任務。
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)
如何運算和 CSV 資料集的SHAP值和PDPs
您可以在單一 SageMaker Clarify 處理任務中運算PDPs值和SHAP。在下列組態範例中,新PDPConfig
物件的top_k_features
參數設定為2
。這會指示 SageMaker Clarify 處理任務為了具有最大整體SHAP值的功能2
,運算PDPs。
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], )
下列範例示範如何為 >SageMaker AI JSON Lines 密集格式的表格式資料集設定偏差分析和可解釋性分析。如需更多資訊,請參閱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,
)
在先前的組態範例中,功能參數設定為 JMESPathFeatures
以便 SageMaker Clarify 處理任務可以從每個記錄擷取功能陣列。label
參數設定為 JMESPath 運算式Label
,以便 SageMaker Clarify 處理任務可以從每個記錄中擷取 Ground Truth 標籤。s3_data_input_path
參數可以是資料集檔案的 URI,也可以是 Amazon S3 URI 前置。如果您提供 S3 URI 字首,SageMaker Clarify 處理工作會以遞迴方式收集位於字首下的所有 S3 檔案。s3_output_path
的值應為 S3 URI 前置,以保存分析結果。SageMaker AI 會在編譯s3_output_path
時使用 ,且無法取得 SageMaker AI Pipeline 參數、屬性、表達式或 的值ExecutionVariable
,這些參數會在執行時間期間使用。
您必須擁有訓練好的模型,才能運算訓練後的偏差指標或功能重要性。下列範例來自二進位分類模型,該模型會以範例的格式輸出 JSON 行資料。模型輸出的每一列都是有效的 JSON 物件。鍵predicted_label
指向預測標籤,鍵probability
指向機率值。
{"predicted_label":0,"probability":0.028986845165491}
{"predicted_label":1,"probability":0.825382471084594}
...
在下列組態範例中,ModelConfig
物件會指示 SageMaker Clarify 處理任務將 SageMaker AI 模型部署到暫時性端點。端點使用一個ml.m4.xlarge
推論執行個體。
model_config = clarify.ModelConfig(
model_name=your_model,
instance_type='ml.m4.xlarge',
instance_count=1,
content_template='{"Features":$features}',
)
在之前的組態範例中,未設定content_type
和accept_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 Clarify 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"
...
下列組態範例說明如何指定 CSV 格式的輸入資料集,以及使用DataConfig
物件的輸出資料路徑。
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 AI 會在編譯s3_output_path
時使用 ,且無法取得 SageMaker AI Pipeline 參數、屬性、表達式或 的值ExecutionVariable
,這些參數會在執行時間期間使用。
下列範例輸出是根據先前以輸入資料集訓練的二進位分類模型所建立。分類模型會接受 CSV 資料,並在0
和1
之間輸出單一分數。
0.491656005382537 0.569582343101501 ...
下列範例示範如何設定 ModelConfig
物件以部署 SageMaker AI 模型。在此範例中,臨時端點會部署模型。此端點使用一個配備 GPU 的ml.g4dn.xlarge
推論執行個體來加速推論。
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
參數指示分析應該解析權杖。在英語中,每個權杖都是一個單詞。如需其他語言,請參閱 針對權杖化的 spaCy 文件Rating
的平均值4
來設定就地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 for NLP 可解釋性分析中執行 SageMaker Clarify 處理任務的範例筆記本,請參閱使用 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 AI 會在編譯s3_output_path
時使用 ,且無法取得 SageMaker AI Pipeline 參數、屬性、表達式或 的值ExecutionVariable
,這些參數會在執行時間期間使用。
如何解譯影像分類模型
SageMaker Clarify 處理任務會使用 KernelSHAP 演算法解譯影像,該演算法會將影像視為超像素的集合。在有由影像組成的資料集的情況下,處理任務會輸出影像資料集,其中每個影像都會說明相關超像素的熱度圖。
下列組態範例示範如何使用 SageMaker AI 影像分類模型設定可解釋性分析。如需更多資訊,請參閱影像分類 - 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 AI 模型部署到暫時性端點。為了加速推斷,端點使用一個配備 GPU 的ml.p2.xlarge
推論執行個體。
將 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 使用簡單線性疊代叢集 (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 處理任務可以偵測並分類影像中的物件,然後為偵測到的物件提供說明。解譯的程序如下。
-
影像物件首先分類為指定集合中的一個分類。例如,如果一個物件偵測模型可以識別貓,狗和魚,那麼這三個類是在一個集合。此集合由
label_headers
參數指定,如下所示。clarify.ModelPredictedLabelConfig( label_headers=object_categories, )
-
SageMaker Clarify 處理任務會為每個物件產生可信度分數。高可信度分數表示它屬於指定集合中的其中一個類別。SageMaker Clarify 處理任務也會產生分隔物件的邊界框座標。如需有關可信度分數和邊界框的更多相關資訊,請參閱回應格式。
-
然後,SageMaker Clarify 會提供在影像場景中偵測物件的說明。它會使用如何解譯影像分類模型一節中所述的方法。
在下列組態範例中,SageMaker AI 物件偵測模型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 AI 模型部署到暫時性端點。為了加速成像,此端點使用一個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 AI Clarify 解釋物件偵測模型
下列範例示範如何以 SageMaker AI 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
下列組態範例說明如何使用SageMakerClarifyProcessor
建立具有5
運算執行個體的 SageMaker Clarify 處理器。若要執行與SageMakerClarifyProcessor
相關聯的任何工作,SageMaker Clarify 使用 Spark 分散式處理。
from sagemaker import clarify
spark_clarify_processor = clarify.SageMakerClarifyProcessor(
role=role,
instance_count=5,
instance_type='ml.c5.xlarge',
)
如果您將 SHAPConfigsave_local_shap_values
參數設定為True
,SageMaker Clarify 處理任務會將本地SHAP值儲存為工作輸出位置的多個部分檔案。
若要將本地SHAP值與輸入資料集執行個體產生關聯,請使用的joinsource
參數DataConfig
。如果您新增更多運算執行個體,建議您同時增加臨時端點instance_count
的 ModelConfig