Google Cloud Platform への Learning Interpretability Tool(LIT)のデモのデプロイ

1. 概要

このラボでは、LIT のデモをすばやくデプロイする手順について説明します。目標は、LIT ツールに習熟し、モデルの動作を調べることです。感情分析を行い、反事実的 LIT 機能を使用して特定の単語の重要性を見つけます。デモには、分析を実行するためのデータセットが含まれています。このラボでは、Google Cloud Platform への LIT のデプロイ、データの分析、デプロイしたサービスの削除の手順を説明します。

Learning Interpretability Tool(LIT)とは

🔥?LIT は、テキスト、画像、表形式のデータをサポートする、視覚的でインタラクティブな ML モデル理解ツールです。スタンドアロン サーバーとして実行することも、Colab、Jupyter、Google Cloud Vertex AI Notebooks などのノートブック環境内で実行することもできます。

LIT は次のような疑問の解決を目的に構築されています。

  • モデルが性能を発揮しないのは、どのような種類のサンプルか?
  • この予測を行った理由この予測は敵対的行動に起因する可能性や、トレーニング セット内の望ましくない事前分布に起因する可能性があるか?
  • テキストのスタイル、動詞の時制、代名詞の性などを変えても、モデルの動作は変わらないか?

このツールは LIT GitHub リポジトリから入手できます。その論文は ArXiv でも入手できます。

ラボの内容

Google Cloud Shell を使用して、コンテナ イメージを pull、タグ付け、push、デプロイします。

統合された Google Cloud エクスペリエンスの一環として、アーティファクトを一元的に保存し、依存関係を構築できる Google Artifact Registry を使用します。Docker イメージを Artifact Registry にアップロードします。詳細については、Google Cloud Artifact Registry のドキュメントをご覧ください。

マネージド Knative サービスである Google Cloud Cloud Run を使用して、Docker イメージをデプロイします。Google のスケーラブルなインフラストラクチャ上でコンテナを直接実行できるマネージド コンピューティング プラットフォームです。

データセット

このデモでは、Stanford Sentiment Treebank データセットを使用します。

「Stanford Sentiment Treebank は、言語における感情の構成的効果の完全な分析を可能にする、完全にラベル付けされた解析ツリーを使用した初のコーパスです。このコーパスは、Pang and Lee(2005 年)によって紹介されたデータセットに基づいており、映画レビューから抽出された 11,855 個の単一文で構成されています。Stanford パーサー(Klein and Manning、2003)で解析され、これらの解析ツリーから合計 215,154 個の一意のフレーズが含まれ、それぞれに 3 人の審査員が注釈を付けています。」リファレンス ペーパー

始める前に

このリファレンス ガイドでは、Google Cloud プロジェクトが必要です。新しいプロジェクトを作成することも、すでに作成済みのプロジェクトを選択することもできます。

2. Google Cloud コンソールと Cloud Shell を起動する

この手順では、Google Cloud コンソールを起動して Google Cloud Shell を使用します。

2-a: Google Cloud コンソールを起動する

ブラウザを起動し、Google Cloud コンソールに移動します。

Google Cloud コンソールは、Google Cloud リソースをすばやく管理できる強力で安全なウェブ管理インターフェースです。どこでも利用できる DevOps ツールです。

2-b: Google Cloud Shell を起動する

Google Cloud Shell を起動します。下の画像を参考にしてください。

Google Cloud コンソールのリリース

次のように表示されます。

Google Cloud Console

次の手順でコマンド プロンプトを使用します。

Cloud Shell はオンラインの開発および運用の環境であり、どこからでもブラウザからアクセスできます。gcloud コマンドライン ツールや kubectl などのユーティリティがプリロードされたオンライン ターミナルでリソースを管理できます。オンラインの Cloud Shell エディタを使用して、クラウドベースのアプリの開発、ビルド、デバッグ、デプロイを行うこともできます。Cloud Shell はデベロッパー向けのオンライン環境を提供します。お気に入りのツールセットがプリインストールされ、5 GB の永続ストレージ容量が提供されています。

2-c: Google Cloud プロジェクトを設定する

Google Cloud プロジェクトと Google Cloud サービスを作成するロケーションを設定します。この情報を使用して、Google Cloud Workbench と Artifact Registry を作成します。前者を使用してコンテナをビルドし、push します。後者を使用してコンテナ イメージを保存します。

必須の PROJECT_ID 変数のみを設定する必要があります。他の変数も変更できますが、このラボを実行するにはデフォルト値で十分です。正しい Google Cloud プロジェクトを設定します。これは gcloud コマンドで使用されます。

# Set your GCP Project ID.
export PROJECT_ID=[Your project ID]

3. Docker イメージを Google Cloud Artifact Registry にデプロイする

3-a: Google Cloud Artifact Registry を作成する

まず、Docker イメージを保存する Artifact Registry を作成する必要があります。

# Set Google Cloud Location.
export GCP_LOCATION=us-central1
# Set image container artifact repo name.
export ARTIFACT_REPO=lit-demo
# Set lit demo name.
export DEMO_NAME=demo1

# Use below cmd to list all Google Cloud Artifact locations:
# gcloud artifacts locations list
# Create a repo to upload the docker container images.
gcloud artifacts repositories create $ARTIFACT_REPO \
    --repository-format=docker \
    --location=$GCP_LOCATION \
    --description="LIT Demos"

# Validate the repo creation.
gcloud artifacts repositories describe $ARTIFACT_REPO \
    --location=$GCP_LOCATION

3-b: Docker イメージを pull する

次に、以下のコマンドを使用して、公開リポジトリ内のすべての LIT Docker イメージを一覧表示します。

# List all the public LIT docker images.
gcloud container images  list-tags  us-east4-docker.pkg.dev/lit-demos/lit-app/lit-app

使用可能なすべてのイメージとそのタグ(イメージのバージョンを参照)を確認し、デプロイするタグを選択できます。

Google Cloud Docker イメージ

以下のコマンドを使用して、選択した Docker イメージを pull します。

# Set your chosen tag.
export TAG=[Your Chosen Tag]

# Pull the chosen docker image.
docker pull us-east4-docker.pkg.dev/lit-demos/lit-app/lit-app:$TAG

3-c: Docker イメージにタグを付ける

最後に、先ほど pull したイメージにタグを付けてターゲット リポジトリにタグを付けます。

# Push the pulled docker image to target repository.
docker tag  us-east4-docker.pkg.dev/lit-demos/lit-app/lit-app:$TAG  $GCP_LOCATION-docker.pkg.dev/$PROJECT_ID/$ARTIFACT_REPO/$DEMO_NAME:$TAG

3-d: Docker イメージを push する

次に、Docker イメージをターゲット リポジトリに push します。

# Push the pulled docker image to the target repository.
docker push  $GCP_LOCATION-docker.pkg.dev/$PROJECT_ID/$ARTIFACT_REPO/$DEMO_NAME:$TAG

3-e: Docker イメージを CloudRun にデプロイする

ターゲット リポジトリから Cloud Run に Docker イメージをデプロイします。

Google Cloud Deploy Cloud Run

デプロイ オプションで、[既存のコンテナ イメージから 1 つのリビジョンをデプロイする] を選択します。

[Config] で、Service に $DEMO_NAME と同じ名前を付け、$GCP_LOCATION と同じリージョンを選択します。

[認証] では、[未認証の呼び出しを許可] を選択できます。[認証が必要]を選択します[認証が必要]を選択した場合デモにアクセスするには追加の手順が必要になることがあります。そのため、[未認証の呼び出しを許可する] を選択することをおすすめします。ご覧ください。

Google Cloud Run の構成

[コンテナの構成] で、コンテナのポートを 5432、メモリを 32 GB、CPU を 8 にそれぞれ選択します。

Google Cloud コンテナ構成

構成を設定したら、インスタンスを作成します。

4. GCP で LIT サービスを表示

サービスを作成したら、Google Cloud コンソールでログを確認できます。

ナビゲーション: Google Cloud コンソールの上部のバー → [Cloud Run](検索バー)→ demo1 アプリケーションを選択 → [ログ] を選択します。指標などを確認することもできます。

Google Cloud コンソールで、検索を使用して「Cloud Run」と入力します。下の画像を参考にしてください。

Google Cloud コンソールでの検索

「demo1」を選択します。認証情報を取得できます。下の画像を参考にしてください。

Google Cloud コンソールの Cloud Run リスト

ログセクションを確認できます。それまでの間、参照の URL を確認できます。下の画像を参考にしてください。Google Cloud コンソールの Cloud Run ログ

[指標] セクションを確認できます。下の画像を参考にしてください。Google Cloud コンソールの Cloud Run 指標

5. LIT のデモ URL を見る

Forbidden エラーにより URL にアクセスできない場合は、サービスを変更して未認証の呼び出しを許可する必要があります。

LIT Cloud Run の権限の変更

または、次のコマンドを使用して、サービスをローカルホストにプロキシすることもできます。

# Proxy the service to local host.
gcloud run services proxy $DEMO_NAME --project $PROJECT_ID

リージョンは GCP_LOCATION と同じにしてください。ローカルホストの URL を確認できます。

LIT プロキシ サービス

LIT のデモは次のスクリーンショットのようになります。

LIT デモのホーム

Stanford Sentiment Treebank データセットの感情分析を確認します。手順は次のとおりです。

  • LIT のデータテーブルの検索機能を使用して、「not」という単語を含む 56 個のデータポイントを見つけます。

LIT のデモ検索

  • 指標表で BERT モデルの精度を確認します。BERT モデルの精度は高いです。

LIT のデモの精度

  • 個々のデータポイントを選択し、説明を探してください。「うつ病」という単語を検索します。

LIT のデモの精度

  • [うつ病時代のギャング映画ではありません] を選択します。顕著性マップを確認します。顕著性マップでは「ultimate」予測に重要です

LIT のデモの精度

ご利用いただける LIT 機能は数多くあります。LIT の機能については、短い YouTube 動画または LIT ArXiv で説明しています。

6. 完了

これでこの Codelab は終了です。くつろぐ時間です!

クリーンアップ

ラボをクリーンアップするために、ラボ用に作成したすべての Google Cloud サービスを削除します。Google Cloud Shell を使用して、次のコマンドを実行します。

非アクティブな状態が原因で Google Cloud 接続が失われた場合は、変数をリセットします。2-c と 4-1 に沿ってシェル変数を設定し、Google Cloud プロジェクトを設定します。

# Delete the Cloud Run Service.
gcloud run services delete $DEMO_NAME \
--region=$GCP_LOCATION

# Delete the Artifact Registry.
gcloud artifacts repositories delete $ARTIFACT_REPO\
	--location=$GCP_LOCATION

### **Further reading**

Continue learning the LIT tool features with the below materials:

* LIT open source code base: [Git repo](https://github.com/PAIR-code/lit)
* LIT paper: [ArXiv](https://arxiv.org/pdf/2008.05122.pdf)
* LIT feature video demo: [Youtube](https://www.youtube.com/watch?v=CuRI_VK83dU)


### **License**

This work is licensed under a Creative Commons Attribution 2.0 Generic License.