リモートPCのdocker環境をGoogle Colabに接続する方法
概要
Google Colabはローカル環境を接続して使うことができます。ローカルのWindowsPCをColabに接続するのは簡単なのですが、これがリモートのdocker環境となると少し複雑になってきます。こちらが接続できるようになったので、メモとして残しておきます。
参考にしたのはこちらの記事です。こちらをdockerで動かせば動きました。
私の普段の自宅の環境はWindowsPCのターミナルからUbuntuのマシンにSSH接続して、docker環境を立ち上げてから、WindowsPCのブラウザからUbuntuのJupyter Notebookに接続する構成を取っています。
手順1 Ubuntu側の設定
Ubuntu側では通常通りdockerを起動して、指定したポートでJupyterNotebookが起動するようにしておきます。私の場合、Dockerfileでnotebookを起動しているので、以下のように起動方法を変えています。
RUN pip install jupyter_http_over_ws
RUN jupyter serverextension enable --py jupyter_http_over_ws
...
CMD custom-start.sh # 別に用意したファイルからnotebookを起動
custom-start.sh内部でjupyter notebookを起動している部分
jupyter notebook --ip=0.0.0.0 --port=8888 --NotebookApp.allow_origin='https://colab.research.google.com' --NotebookApp.port_retries=0 --no-browser --NotebookApp.token='0123456789'
WindowsPCのほうから以下のURLで接続できるか確認します。UbuntuのIPが192.168.1.2の場合
http://192.168.1.2:8888/?token=0123456789
手順2 WindowsPC側の設定
Google Colabに接続できるのはlocalhostだけなので、先ほどの192.168.1.2:8888をsshでポート転送します。TeraTermをインストールして起動します。UbuntuのほうにSSHでログインします。ログイン後にメニューの「設定」>「SSH転送」を選びます。「追加」ボタンを押して、ローカルのポートに8888、リモート側ホストに192.168.1.2、ポートに8888を入力します。
これでポート転送できるようになりました。WindowsPCのほうでlocalhostにアクセスしてnotebookが見れることを確認します。
http://localhost:8888/?token=0123456789
手順3 Colabから接続
あとはColabからローカル環境へ接続するだけです。右上の接続のところから「ローカルランタイムに接続」を選びます。URLは同じです。
http://localhost:8888/?token=0123456789
これで接続ができたはずなので、Colab上でnvidia-smiを実行して確認します。
!nvisia-smi
ローカルのGPUが表示されていれば成功です。
Discussion