ニューラル機械翻訳の実践と理論(その1)

本当は、「ニューラル機械翻訳の理論と実装」という題にしたかったのだけど理論がついてこないだろうから、理論は後回し。。

そして、実装まで踏み込めればよいのだけれど、難しいからまずは実践ということでこの題にしてみました。

ということでは、まずは、ニューラル機械翻訳オープンソースである「OpenNMT」を動かしてみたいと思う。

opennmt.net

ニューラルネットワークを構築することになるので、行列計算をたくさん行う必要があり、GPUがあった方が都合がよい。ちょうどコロナで特別定額給付金が入ったから、グラボでも買うかと思ったが、Google様が無料で使えるGPUクラウドを用意してくれている。

UIが「jupyter notebook」ぽいので、食わず嫌いしていたが背に腹は変えられない。。

ということで、以下を参考にして動かしてみる。

qiita.com

しかし、UIでPythonを動かすのが気に食わない。。

コマンドも実行できるがめんどくさい。

学習データやモデルデータのパスを確認するのにいちいちUIからコマンド入れるのダルい。あぁ、黒い画面が欲しい。。

ということで、以下を参考にして、「Google Colaboratory」にssh接続してしまう。

qiita.com

 

まずは、「https://ngrok.com」でアカウントを作成しておく必要がある。

ngorkは、ローカルネットワーク上にあるサービスを外部公開できるようにするサービスである。最近テレワークとかで、会社のPCを自宅から触れるようにしている方が多いと思うがその類のサービスである。

これをGoogle Colaboratoryの無料GPUインスタンスに仕込んで、sshするのだ。

やり方は、さっきのページ通りでOKで、ngorkの

Your Authtoken

のページでアクセストークンを取得しておく。

そして、Google Colaboratoryにアクセスして、

colab.research.google.com

GPUインスタンスを起動しておく。

接続しただけでは、GPUインスタンスになっていない場合があるため、以下の要領で確認と設定をしておく。

www.tdi.co.jp

あとは、Google Colaboratoryのセルに以下をコピペして実行すればよい。

!pip install git+https://github.com/demotomohiro/remocolab.git
import remocolab
remocolab.setupSSHD()

ngrokのauthtokenをコピペするようメッセージが表示されるので、先程のアクセストークンとregionを入力する。regionは、jpを選んでおく。

しばらく待っていると(2分ぐらい)、sshサーバがインストールされipとパスワードを教えてくれる。

あとは、接続してやるだけだ。