取得說明

本指南說明如何在 Vertex AI 中從 Model 資源取得說明。您可以透過下列兩種方式取得說明:

  • 線上解釋:向 Vertex AI API 提出同步要求,類似於線上預測,會傳回附有特徵歸因的預測結果。

  • 批次說明:對 Vertex AI API 提出的非同步要求,會傳回包含特徵歸因的預測結果。批次說明是批次預測要求的選用部分。

事前準備

取得說明前,請務必完成下列步驟:

  1. 這個步驟會因所使用的機器學習模型類型而有所不同:

  2. 如要取得線上說明,請將先前步驟中建立的 Model 部署至 Endpoint 資源

取得線上說明

如要取得線上說明,請按照取得線上預測結果的步驟操作,不過,請不要向 Vertex AI API 傳送 projects.locations.endpoints.predict 要求,而是傳送 projects.locations.endpoints.explain 要求

如要進一步瞭解如何準備及傳送線上說明要求,請參閱下列指南:

取得批次說明

系統僅支援特徵式批次解釋,無法提供以範例為基礎的批次解釋。

如要取得批次說明,請在建立批次預測工作時,將 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": [
        {}
      ],
    }
  ]
}

後續步驟