本指南說明如何在 Vertex AI 中從 Model
資源取得說明。您可以透過下列兩種方式取得說明:
線上解釋:向 Vertex AI API 提出同步要求,類似於線上預測,會傳回附有特徵歸因的預測結果。
批次說明:對 Vertex AI API 提出的非同步要求,會傳回包含特徵歸因的預測結果。批次說明是批次預測要求的選用部分。
事前準備
取得說明前,請務必完成下列步驟:
這個步驟會因所使用的機器學習模型類型而有所不同:
如果您想從自訂訓練模型取得說明,請按照「設定以範例為基礎的說明」或「設定以特徵為基礎的說明」的說明,建立支援 Vertex Explainable AI 的
Model
。如果您想從 AutoML 表格分類或迴歸模型取得說明,請在表格資料集上訓練 AutoML 模型。使用 Vertex Explainable AI 不需要任何特定設定。不支援預測模型的說明。
如果您想從 AutoML 圖片分類模型取得說明,請在圖片資料集上訓練 AutoML 模型,並在部署模型時啟用說明。使用 Vertex Explainable AI 不需要進行特定設定。系統不支援物件偵測模型的說明。
如要取得線上說明,請將先前步驟中建立的
Model
部署至Endpoint
資源。
取得線上說明
如要取得線上說明,請按照取得線上預測結果的步驟操作,不過,請不要向 Vertex AI API 傳送 projects.locations.endpoints.predict
要求,而是傳送 projects.locations.endpoints.explain
要求。
如要進一步瞭解如何準備及傳送線上說明要求,請參閱下列指南:
AutoML 圖片分類模型:請參閱「透過 AutoML 模型取得線上預測結果」。
如為 AutoML 表格分類和迴歸模型,請參閱「從 AutoML 模型取得預測結果」。
如為自訂訓練模型,請參閱「透過自訂訓練模型取得線上預測」。
取得批次說明
系統僅支援特徵式批次解釋,無法提供以範例為基礎的批次解釋。
如要取得批次說明,請在建立批次預測工作時,將 generateExplanation
欄位設為 true
。
如需準備及建立批次預測工作的詳細操作說明,請參閱「取得批次預測」。
在 Vertex AI Workbench 使用者自行管理的筆記本中,在本機取得解釋
在 Vertex AI Workbench 使用者管理的筆記本中,您可以透過在筆記本的本機核心或執行階段中執行 Vertex Explainable AI,為自訂訓練模型產生說明,而無須將模型部署至 Vertex AI 以取得說明。使用本機說明功能,您就能嘗試不同的 Vertex Explainable AI 設定,而無須針對每次變更調整 Vertex AI 模型部署作業。這樣一來,您就能更輕鬆快速地評估使用不同基準值、嘗試不同的視覺化設定來說明,或調整用於演算法的步驟或路徑數量所帶來的影響。
本機說明僅適用於使用者管理的筆記本,因此這項功能無法在使用者管理的筆記本執行個體以外執行的 Jupyter 筆記本中運作。
如要在使用者自行管理的筆記本執行個體中,在本機產生說明,請按照下列步驟操作:
- 建立由使用者管理的筆記本執行個體
- 從使用者管理的筆記本執行個體啟動 JupyterLab 環境,然後建立或匯入筆記本。
- 將模型構件儲存至 Notebook 的本機環境或 Cloud Storage 值區。
- 產生並儲存中繼資料,以便說明模型並設定說明要求。
取得並行說明
Explainable AI 支援並行說明。透過並行解釋功能,您可以從同一個已部署的模型端點要求特徵式和範例式解釋,而無須針對每種解釋方法分別部署模型。
如要同時取得解釋,請上傳模型,並設定以範例為基礎或以特徵為基礎的解釋。接著,按照平常的方法部署模型。
模型部署完成後,您可以照常要求已設定的說明。此外,您也可以指定 concurrent_explanation_spec_override
,要求並行解釋。
使用並行說明時,請注意下列事項:
- 並行說明功能僅適用於
v1beta1
API 版本。如果您使用 Vertex Python SDK,就必須使用preview
模型才能使用並行說明。 - 在以功能為基礎的解釋中部署後,就無法要求以範例為基礎的解釋。如果您想同時使用範例式解釋和特徵式解釋,請使用範例式解釋部署模型,並使用並行解釋欄位要求特徵式解釋。
- 並行解釋不支援批次解釋。線上說明是使用這項功能的唯一方式。
在使用者管理的筆記本中使用 Explainable AI SDK
Explainable AI SDK 已預先安裝在使用者管理的 Notebook 執行個體中。您可以在筆記本中使用 Explainable AI SDK 儲存模型構件,並自動識別模型輸入內容和輸出內容的中繼資料,以便提供說明要求。您也可以指定其他參數來設定說明要求,然後將說明結果以圖形呈現。
您可以將模型和中繼資料儲存在 Notebook 的本機環境,或儲存在 Cloud Storage 值區中。如果您使用 TensorFlow,可以使用 save_model_with_metadata()
方法推斷模型的輸入和輸出內容,並將這項說明中繼資料儲存至模型。
接著,請使用 load_model_from_local_path()
將模型載入 Explainable AI SDK。如有需要,您可以調整特定 Vertex Explainable AI 演算法的設定。舉例來說,您可以變更用於取樣夏普利路徑的數量,或用於整合梯度或 XRAI 的步驟數量。
最後,請使用資料例項呼叫 explain()
,並以圖表呈現地圖項目歸因。
您可以使用以下程式碼範例,在使用者管理的筆記本執行個體中取得 TensorFlow 2 模型的本機說明:
# This sample code only works within a user-managed notebooks instance.
import explainable_ai_sdk
from explainable_ai_sdk.metadata.tf.v2 import SavedModelMetadataBuilder
metadata_and_model_builder = SavedModelMetadataBuilder('LOCAL_PATH_TO_MODEL')
metadata_and_model_builder.save_model_with_metadata('LOCAL_PATH_TO_SAVED_MODEL_ARTIFACT')
# Load the model and adjust the configuration for Explainable AI parameters
num_paths = 20
model_artifact_with_metadata = explainable_ai_sdk.load_model_from_local_path(
'LOCAL_PATH_TO_SAVED_MODEL_ARTIFACT',
explainable_ai_sdk.SampledShapleyConfig(num_paths))
# Explainable AI supports generating explanations for multiple predictions
instances = [{feature_a: 10, feature_2: 100,...}, ... ]
explanations = model_artifact_with_metadata.explain(instances)
explanations[0].visualize_attributions()
如要進一步瞭解 Explainable AI SDK,包括各種設定和參數,請參閱 GitHub 上的 SDK config.py 檔案。進一步瞭解 Vertex AI Workbench 使用者管理的筆記本。
疑難排解
本節說明疑難排解步驟,解決您在取得說明時遇到的問題。
錯誤:清單索引超出範圍
如果您在要求說明時收到下列錯誤訊息:
"error": "Explainability failed with exception: listindex out of range"
請確認您並未將空陣列傳遞至預期物件陣列的欄位。舉例來說,如果 field1
接受物件陣列,下列要求主體可能會導致錯誤:
{
"instances": [
{
"field1": [],
}
]
}
請改為確認陣列並非空白,例如:
{
"instances": [
{
"field1": [
{}
],
}
]
}