本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
執行 SageMaker 澄清處理任務以進行偏差分析和可解釋性
若要使用 SageMaker Clarify 分析資料和模型的偏差和可解釋性,您必須設定 SageMaker Clarify 處理任務。本指南說明如何使用 SageMaker Python SDK API 設定任務輸入、輸出、資源和分析組態SageMakerClarifyProcessor
。
API 充當 的 SageMaker CreateProcessingJob
高階包裝函式API。它會隱藏設定 SageMaker Clarify 處理任務時涉及的許多詳細資訊。設定任務的詳細資訊包括擷取 SageMaker Clarify 容器映像URI和產生分析組態檔案。下列步驟說明如何設定、初始化和啟動 SageMaker Clarify 處理任務。
使用 設定 SageMaker Clarify 處理任務 API
-
為任務組態的每個部分定義設定物件。這些部分可能包含以下項目:
-
輸入資料集和輸出位置:DataConfig
。 -
要分析的模型或端點:ModelConfig
。 -
偏差分析參數:BiasConfig
。 -
SHapley 附加 exPlanations (SHAP) 分析參數:SHAPConfig
。 -
非對稱 Shapley 值分析參數 (僅適用於時間序列):AsymmetricShapleyValueConfig
。
SageMaker Clarify 處理任務的組態物件會因不同類型的資料格式和使用案例而有所不同。表格式資料的組態範例CSVJSON 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 會在編譯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
物件,以衡量先前樣本輸入對具有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="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_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 的公平性和可解釋性
如何運算 SHAP CSV 資料集的值
SageMaker Clarify 使用核心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, )
在先前的組態範例中,特徵參數會設定為 JMESPathFeatures
以便 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_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 釐清可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權杖化 的文件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 中執行 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 處理任務可以偵測和分類影像中的物件,然後為偵測到的物件提供解釋。解譯的程序如下。
-
影像物件首先分類為指定集合中的一個分類。例如,如果一個物件偵測模型可以識別貓,狗和魚,那麼這三個類是在一個集合。此集合由
label_headers
參數指定,如下所示。clarify.ModelPredictedLabelConfig( label_headers=object_categories, )
-
SageMaker Clarify 處理任務會為每個物件產生可信度分數。高可信度分數表示它屬於指定集合中的其中一個類別。 SageMaker Clarify 處理任務也會產生分隔物件的週框方塊座標。如需有關可信度分數和邊界框的更多相關資訊,請參閱回應格式。
-
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
下列組態範例示範如何使用 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
參數設定為 SHAPConfigTrue
, SageMaker Clarify 處理任務會儲存本機 SHAP 值作為任務輸出位置中的多個部分檔案。
若要關聯本機 SHAP 輸入資料集執行個體的值,請使用 的 joinsource
參數DataConfig
。如果您新增更多運算執行個體,建議您也instance_count
ModelConfig