What-If ツールの使用

ノートブック環境内で What-If Tool(WIT)を使用すると、インタラクティブ ダッシュボードを介して AI Platform Prediction モデルを検査できます。What-If ツールは、TensorBoard、Jupyter ノートブック、Colab ノートブック、JupyterHub に統合されています。また、Vertex AI Workbench ユーザー管理ノートブックの TensorFlow インスタンスにもプリインストールされています。

このページでは、AI Platform にデプロイされているトレーニング済みモデルで What-If ツールを使用する方法について説明します。モデルをデプロイする方法を学習します。

What-If ツールをインストールする

さまざまなノートブック環境で witwidget をインストールする方法をご紹介します。

ユーザー管理のノートブック

witwidget は、ユーザー管理のノートブック インスタンスにすでにインストールされています。

WIT チュートリアル リポジトリのクローンをインスタンスに作成して、ノートブック インスタンスに What-If ツールのチュートリアルを読み込むことができます。ユーザー管理のノートブック インスタンスに GitHub リポジトリのクローンを作成する方法をご覧ください。

Jupyter ノートブック

次のコマンドを実行して Jupyter 用 WIT をインストールして有効にします。

pip install witwidget
jupyter nbextension install --py --symlink --sys-prefix witwidget
jupyter nbextension enable --py --sys-prefix witwidget

GPU のサポート付き TensorFlow(tensorflow-gpu)を使用する場合は、GPU 対応バージョンの witwidget をインストールします。

pip install witwidget-gpu
jupyter nbextension install --py --symlink --sys-prefix witwidget
jupyter nbextension enable --py --sys-prefix witwidget

Jupyter 環境で上記のインストール コマンドを実行する必要があるのは一度だけです。一度実行すると、Jupyter カーネルを起動するたびに、What-If ツールが利用できます。

Colab ノートブック

以下を含むセルを実行し、ウィジェットをノートブック カーネルのランタイムにインストールします。

!pip install witwidget

GPU のサポート付き TensorFlow(tensorflow-gpu)を使用する場合は、GPU 対応バージョンの witwidget をインストールします。

!pip install witwidget-gpu

JupyterLab

ユーザー管理のノートブックの外部で JupyterLab の手順を行います。

以下を含むセルを実行し、JupyterLab 用の WIT をインストールして有効にします。

!pip install witwidget
!jupyter labextension install wit-widget
!jupyter labextension install @jupyter-widgets/jupyterlab-manager

TensorFlow の GPU のサポートについては、以下のように witwidget-gpu パッケージを使用します。

!pip install witwidget-gpu
!jupyter labextension install wit-widget
!jupyter labextension install @jupyter-widgets/jupyterlab-manager

ノートブックの設定によっては、!sudo jupyter labextension ... コマンドの実行が必要になる場合があります。

What-If ツールの予測出力を調整する

出力が What-If Tool に必要な出力と一致しないモデルでは、コード内に予測調整関数を定義する必要があります。

What-If ツールには次の入力形式が必要です。

  • 分類モデル: クラススコアのリスト
  • 回帰モデル: 回帰スコア

たとえば、XGBoost バイナリ分類モデルからは陽性クラスのスコアのみが戻ります。What-If ツールはクラスごとのスコアを必要とするため、次の予測調整関数で陰性スコアと陽性スコアの両方を含むリストを取得する必要があります。

def adjust_prediction(pred):
  return [1 - pred, pred]

ノートブック コードセル内に予測調整関数を定義してから、What-If ツールを構成します。

What-If ツールを構成する

What-If ツールを使用すると、1 つのモデルを検査することや、2 つのモデルを比較することができます。WitConfigBuilder に、ご使用の Google Cloud プロジェクト、AI Platform Prediction のモデルとバージョンに合った値と、モデルに対応したその他の値を入力します。

  1. witwidget をインポートします。

    import witwidget
    
  2. WitConfigBuilder を作成し、モデルと AI Platform プロジェクトに関するさまざまなパラメータを What-If ツールに渡します。What-If ツールを使用すると、1 つのモデルを検査することや、2 つのモデルを比較することができます。ご使用の Google Cloud プロジェクト、AI Platform Prediction のモデルとバージョンに合った値と、モデルに対応したその他の値を入力します。

    モデルを検査する

    こちらの構成ビルダーは、What-If ツールによる 1 つのモデルの検査方法を示しています。デプロイされた XGBoost モデルを含むノートブックの完全な例をご覧ください。

    各メソッドの詳細については、WitConfigBuilder のコードをご覧ください。

    PROJECT_ID = 'YOUR_PROJECT_ID'
    MODEL_NAME = 'YOUR_MODEL_NAME'
    VERSION_NAME = 'YOUR_VERSION_NAME'
    TARGET_FEATURE = 'mortgage_status'
    LABEL_VOCAB = ['denied', 'approved']
    
    config_builder = (WitConfigBuilder(test_examples.tolist(), features.columns.tolist() + ['mortgage_status'])
      .set_ai_platform_model(PROJECT_ID, MODEL_NAME, VERSION_NAME, adjust_prediction=adjust_prediction)
      .set_target_feature(TARGET_FEATURE)
      .set_label_vocab(LABEL_VOCAB))
    

    モデルを比較する

    こちらの構成ビルダーは、What-If Tool による 2 つのモデルの調査方法と比較方法を示しています。デプロイされた Keras モデルと scikit-learn モデルを比較したノートブックの完全な例をご覧ください。

    各メソッドの詳細については、WitConfigBuilder のコードをご覧ください。

    PROJECT_ID = 'YOUR_PROJECT_ID'
    KERAS_MODEL_NAME = 'YOUR_KERAS_MODEL_NAME'
    KERAS_VERSION_NAME = 'VERSION_NAME_OF_YOUR_KERAS_MODEL'
    SKLEARN_MODEL_NAME = 'YOUR_SKLEARN_MODEL_NAME'
    SKLEARN_VERSION_NAME = 'VERSION_NAME_OF_YOUR_SKLEARN_MODEL'
    TARGET_FEATURE = 'quality'
    
    config_builder = (WitConfigBuilder(test_examples.tolist(), features.columns.tolist() + [TARGET_FEATURE])
     .set_ai_platform_model(PROJECT_ID, KERAS_MODEL_NAME, KERAS_VERSION_NAME)
     .set_predict_output_tensor('sequential').set_uses_predict_api(True)
     .set_target_feature(TARGET_FEATURE)
     .set_model_type('regression')
     .set_compare_ai_platform_model(PROJECT_ID, SKLEARN_MODEL_NAME, SKLEARN_VERSION_NAME))
    
  3. WitWidget にこの構成ビルダーを渡し、表示の高さを設定します。ノートブック内に What-If ツールがインタラクティブに表示されます。

    WitWidget(config_builder, height=800)
    

次のステップ