2
1

More than 3 years have passed since last update.

Colab Proを用いたsshログイン→GitHubからクローンして実験再現

Last updated at Posted at 2021-04-17

なんの記事?

これまでPaperSpaceで自然言語処理の実験用に使用していたのですが、

  • 高い
  • 安く何度も実験したい。
  • 自分が行った実験を、他の人でも手軽に再現できるようにしたい。

などの理由から、Colabを使ってみようと思い、この記事を書きました。

本記事では、メイン実験サブ実験をColab-Proで再現することを目標にします。(本記事を通して、より多くの人にエンティティ・リンキングの面白さを手軽に体感してもらえたら、とても嬉しいです。)

【注】Colab-Proが契約してあることが本記事の前提になります。契約状態であれば、ここにアクセスした場合、左上のアイコンがPro使用になっています。
image.png

gitを用いたDeepLearningの実験再現

実際に、実験リポジトリをColab環境に落とし、sshでColab-Pro(GPU)にログインして実験を完了させることを目的とします。

Colab-Proのセッション開始

Colab-Proの使用には月額1,000円程度が必要です。事前に契約してあることを前提にします。

  • ここにアクセスし、左上からノートブックの新規作成をクリック
    image.png

  • ランタイム→セッションの管理をクリック
    image.png

  • 「他のセッションをすべて終了」をクリック。
    image.png

他のセッションが生きている場合、本記事はエラーが出る可能性が高いです。事前に他のセッションをすべて終了させて下さい。

GPUランタイムへの変更

  • ランタイム→ランタイムのタイプを変更 をクリック
    image.png

  • ハードウェアアクセラレータをGPUに変更→保存 image.png

作製したノートブックセッションへのsshログイン

!pip install colab_ssh --upgrade
from colab_ssh import launch_ssh

ngrokToken = "your_authtoken" # 先にコピーしたトークン
launch_ssh(ngrokToken, password="your_password")

成功した場合、以下のようなsshログイン情報が与えられます。

image.png

  • 先程の情報を元に、ローカルのターミナルからssh ログイン

    ssh root@8.tcp.ngrok.io -p 14082

    Are you sure you want to continue connecting? -> yes でOK.

    パスワードを聞かれるので、先程記入したyour_passwordを使用します。

  • ログインしてnvidia-smiしてみる。
    image.png

 ここまででログインが確認できました。

GitHubからのリポジトリクローンと環境構築

今回は、P100を用いて以下のリポジトリの実験を行います。

本実験についての解説は、以下のページからシリーズになっているので、当記事では説明は省略します。

$ git clone https://github.com/izuna385/Entity-Linking-Tutorial
$ cd https://github.com/izuna385/Entity-Linking-Tutorial
$ pip3 install -r requirements.txt

特に問題なく進めば、以下のようにライブラリのインストールが完了する。
image.png

前処理ファイルの配置(本実験のみに必要)

今回使用するリポジトリでは、いくつか前処理ファイルの配置が事前に必要です。
README に従いファイルを配置します。

ローカルで解凍して scp -P 14082 -r hogehoge root@8.tcp.ngrok.io:/root/Entity-Linking-Tutorial/ などとして転送しましょう。

実験

python3 main.py

  • 精度を無視し、実験完了のみを一度通したい人はpython3 main.py -debug True image.png

実験が走ります。自動でevaluationまで完了します。

dev evaluation result
recall@50 ** %
detail recall@1, @5, @10, @50 ** % ** % ** % ** %
accuracy: ** 
test evaluation result
recall@50 ** %
detail recall@1, @5, @10, @50 ** % ** % ** % ** %

本記事を書いたもう一つの背景

本記事を書いたもう一つの背景としては、In-batch trainingにおけるバッチサイズの増加で、実験の精度改善を狙いたかったからです。

P100を用いることで、訓練時のバッチサイズを16(GPU 8GB~時)から48まで増やすことが可能になります。

image.png

In-batch trainingではバッチサイズを増加させることで、それがそのまま負例の増加につながります。結果として、より多くの負例から一つだけの正解を予測できるように、よりモデルを厳しく訓練させることになります。本実験でなぜIn-batch trainingを用いるかについては、下記を御覧ください。

実際にバッチサイズを16 -> 48 とすることにより、本実験では大幅に精度が向上することが確認できます。

nohup python3 main.py -num_epochs 10 -batch_size_for_train 48 > b48.log &

などとすることで、手軽に実験から評価までが完了します。
image.png
P100をフルに使っていますね。

まとめ

Colab-Pro を用いてsshで自然言語処理の実験を行うチュートリアルについて書きました。requirements.txt から環境を手軽に再現し、P100を用いた実験を行うことが出来ました。

2
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
2
1