3
1

More than 3 years have passed since last update.

Windows10環境でLanguage Interpretability Tool (LIT)を実行(1.環境構築編)

Posted at

Google ResearchがNLPモデルの理解と可視化をするプラットフォームLanguage Interpretability Tool (LIT)をオープンソース化しました。試しに動かしてみたいと思います。

全3記事を予定しています。
1. Windows10環境でLanguage Interpretability Tool (LIT)を実行(1.環境構築編)【本記事】
2. Windows10環境でLanguage Interpretability Tool (LIT)を実行(2.機能確認編)
3. Windows10環境でLanguage Interpretability Tool (LIT)を実行(3.独自モデル編)

本記事では、Windows10 Home環境での環境構築手順について記載します。

目次

  1. LITとは
  2. Docker Desktop for Windowsのインストール
  3. LITサンプルプログラムの実行
  4. 最後に

1. LITとは

Language Interpretability Tool (LIT)は、 NLPモデルの理解と可視化のためのツールです。
LIT.png

ブラウザベースのUIで、以下の機能が存在します。(論文抜粋)
paper.png

詳細を知りたい方は以下をご参考ください。

こういうツール系は触ってみないと何とも言えない気がするので、試しに動かしてみることにしました。

2. Docker Desktop for Windowsのインストール

今回、Dockerを用いてサーバを立てるため、Windows10 Home環境Docker Desktop for Windowsをインストールします。

2-1. Docker ID作成

※手順省略
いきなりですが、簡単なので手順を省略します。
以下のURLからDocker IDを作成してください。
https://hub.docker.com/

2-2. Windows 10 Homeのアップデート

Docker Desktop for Windowsをインストールしようとすると、私の環境では以下のエラーが発生しました。

Docker Desktop requires Windows 10 Pro/Enterprise (15063+) or Windows 10 Home (19018+).

※上記文言が画面上に表示されます。

インストール前にWindowsのアップデートが必要みたいです。

以下の手順を実行し、Windows 10 Homeのアップデートを行います。
Windowsスタートメニュー → 設定 → Windows Update からアップデートを実行
1時間ぐらい待っても終わらなかったですが、寝て起きたら終わってました。

朝見たら無事以下のバージョンに上がっていました。
windows_update.png

2-3. Docker Desktop for Windows のインストール

実際にインストールをしていきます。
以下URLからDownload for Windows(stable)をクリックし、インストーラーをダウンロードします。
https://www.docker.com/products/docker-desktop
download.png

インストーラーをダブルクリックし、手順を実行していくと、以下のエラーに遭遇しました。
何やらLinuxカーネルのアップデートをする必要があるみたいです。
指示通りにリンクをクリックします。

wls2.png

MSのマニュアルに飛ぶので、Linuxカーネル更新プログラムパッケージをダウンロードします。
wls2_2.png

ダウンロードしたwsl_update_x64.msiを実行します。
一瞬で終わります。
wls2_3.png

その後、手順に戻り、全ての手順を終わらせるとDocker Desktop for Windowsのインストールは終了です。

参考

似たようなエラーに当たった人の記事
https://tech.guitarrapc.com/entry/2020/04/21/034236

「Docker Toolbox」と「Docker Desktop for Windows」の違い
https://fumidzuki.com/knowledge/1033/

3. LITサンプルプログラムの実行

最終的には、サンプルプログラムquickstart_sst_demo.pyを実行することでDocker上にサーバを立て、
それをホスト側からブラウザで見に行くことになります。

LITのREADMEではcondaで環境を作っているため、
仮想環境の準備を行い、その後ホストからサーバにアクセスできるようにするための設定を行います。

3-1. WSL2のメモリ割り当て量の変更

仮想環境の準備に入る前に、WSL2のメモリ割り当て量の変更を行います。
これを実行しないと、デフォルトでPCのメモリの80%が割り当てられてしまい、私の場合だと16GBのPCなので約13GBもメモリを割り当ててしまう現象が発生してしまいました。

手順は簡単でホスト側の%UserProfile%.wslconfigファイルを作成し、メモリ割り当て量を指定します。
デモを動かすだけなら3GBで十分でした。

~/.wslconfig
[wsl2]
memory=3GB

3-2. 仮想環境の準備

Anacondaが入ったDockerコンテナをpullし、立ち上げます。
コマンドラインから以下を実行します。
(コンテナ名のlit_envは任意変更可です。)
参考:https://hub.docker.com/r/continuumio/anaconda3

docker pull continuumio/anaconda3
docker run -it --name lit_env continuumio/anaconda3 /bin/bash

Dockerコンテナを立ち上げるとデフォルトの仮想環境名であるbaseがactivateされた状態となっています。

次に、必要なパッケージのインストール等を行います。
基本的にREADMEの手順に沿って進めますが、そのままだとエラーが発生するので少し変更しています。
参考:https://github.com/pair-code/lit/issues
参考:https://github.com/yarnpkg/yarn/issues/7329
※rootユーザのまま実行するのもどうなんだろうと思いつつも、結局rootのまま実行しました。。

git clone https://github.com/PAIR-code/lit.git ~/lit

# Set up Python environment
cd ~/lit
conda env create -f environment.yml
conda activate lit-nlp
conda install cudnn cupti  # optional, for GPU support
conda install -c pytorch pytorch  # optional, for PyTorch

# Build the frontend
cd ~/lit/lit_nlp/client
######yarnがないのでインストールします
# 単純に"apt-get install yarn" だと後続でエラーが発生するので以下を実行
curl https://deb.nodesource.com/setup_12.x | bash
curl https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
apt-get update && apt-get install -y nodejs yarn postgresql-client
######
yarn && yarn build

パッケージのインストール等が完了し、仮想環境の準備が終わりました。

3-3. ホストからサーバにアクセスするための設定変更

あとは基本的にサンプルプログラムを叩くだけなのですが、
サンプルのままではDockerコンテナのlocalhost上にLISTENするサーバを立ち上げてしまい、
ホストからアクセスできない
ので、0.0.0.0にサーバを立てるようにサンプルプログラムを書き換えます。

まず、vimをインストールします。

apt-get install vim

以下のコマンドを実行しserver_flags.pyファイルを開きます。
(必要に応じて編集前にバックアップを取得してください。)

vi /root/lit/lit_nlp/server_flags.py

以下の部分を書き換え、保存します。

#flags.DEFINE_string('host', '127.0.0.1', 'What host address to serve on.')
flags.DEFINE_string('host', '0.0.0.0', 'What host address to serve on.')

後々ポートフォワードオプションを入れてdocker runコマンドを打つので、コンテナをイメージとして保存します。
まずはexitします。

exit

docker commitコマンドを実行し、lit_envという名前のコンテナをイメージとして保存します。
(lit_env_imgという名前で保存していますが、名前はもちろん任意です。)

docker commit lit_env lit_env_img

3-4. サンプルプログラムの実行

LITのREADME通りに実行すると、後々サーバを--port5432で立ち上げることになります。
なので、コンテナ側のポートを5432に指定したポートフォワードオプションをつけてdocker runコマンドを実行します。
(ホスト側のポート番号はもちろん任意です。)

docker run -it -p 5432:5432 lit_env_img /bin/bash

サンプルプログラムである感情分類タスクのデモを実行します。
何やら3epochぐらいfine tuningしているようです。

conda activate lit-nlp
cd ~/lit
python -m lit_nlp.examples.quickstart_sst_demo --port=5432

以下のメッセージが出力されたら完了です。

Starting Server on port 5432
You can navigate to 0.0.0.0:5432

ホスト側のブラウザから以下のURLにアクセスします。

http://127.0.0.1:5432/

正常にアクセスできるはずです。
LIT.png

以上でWindows10 Home環境下での環境構築手順は終了です。

4. 最後に

今回エラーを回避するために色々設定を変えました。
LITのIssueを見てもらうとわかると思いますが、
その内容も含めてここ1週間で結構やりとりが行われているため、
近いうちにアップデートがあるかもしれません。
そうなったらもっと楽に環境構築できると思います。

次回はLITの機能を色々見ていきたいと思います!

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1