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

OpenNMT

本当は、「ニューラル機械翻訳の理論と実装」という題にしたかったのだけど理論がついてこないだろうから、理論は後回し。。
そして、実装まで踏み込めればよいのだけれど、難しいからまずは実践ということでこの題にしてみました。
ということでは、まずは、ニューラル機械翻訳のオープンソースである「OpenNMT」を動かしてみたいと思う。

OpenNMT external_link

Google Colaboratory

Google Colaboratory external_link
ニューラルネットワークを構築することになるので、行列計算をたくさん行う必要があり、GPUがあった方が都合がよい。ちょうどコロナで特別定額給付金が入ったから、グラボでも買うかと思ったが、Google様が無料で使えるGPUクラウドを用意してくれている。
UIが「jupyter notebook」ぽいので、食わず嫌いしていたが背に腹は変えられない。。
ということで、以下を参考にして動かしてみる。

OpenNMT-py (PyTorch) をGoogle Colabで実行する。 external_link

しかし、UIでPythonを動かすのが気に食わない。。
コマンドも実行できるがめんどくさい。
学習データやモデルデータのパスを確認するのにいちいちUIからコマンド入れるのダルい。あぁ、黒い画面が欲しい。。
ということで、以下を参考にして、「Google Colaboratory」にssh接続してしまう。

Google Colaboratoryにsshログインをしてお手軽GPU実験環境を作ってみた external_link

ngrok

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

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

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

やり方は、さっきのページ通りでOKで、ngorkの「Your Authtoken」のページでアクセストークンを取得しておく。
そして、Google Colaboratoryにアクセスして、GPUインスタンスを起動しておく。

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

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

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

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

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

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