📑

リモートPCのdocker環境をGoogle Colabに接続する方法

2023/12/11に公開

概要

Google Colabはローカル環境を接続して使うことができます。ローカルのWindowsPCをColabに接続するのは簡単なのですが、これがリモートのdocker環境となると少し複雑になってきます。こちらが接続できるようになったので、メモとして残しておきます。

参考にしたのはこちらの記事です。こちらをdockerで動かせば動きました。
https://webbigdata.jp/post-9729/

私の普段の自宅の環境は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