🔥

Google Colabのローカルランタイム機能をつかって個人PC上で動かしてみた(ついでにChromeのPNAでハマった話)

に公開

1. Colab のローカルランタイムとは?

Google Colabのフロントエンド(ブラウザ)から、自分の PC 上で起動した Jupyter バックエンドにWebSocketで接続する仕組みです。
これにより、ブラウザのUIはそのままに、計算リソースとしてローカルPC(や自前のGPUサーバー)を利用することできます。

主なメリット:

  • ローカル GPU / CPU が使える: Pro/Pro+ を契約していなくても、手元の GeForce 等を活用できます。
  • Dockerで環境再現: 公式イメージを使うことで、Colab Hosted 環境に近いライブラリ構成を手元で再現できます。
  • 使い慣れたUI: デバッグ機能や変数ビューアなど、Colab の便利な UI がそのまま使えます。

2. 公式手順(Docker で起動する)

公式ドキュメント(Local runtimes)では、Jupyter を直接入れる方法と Docker を使う方法が案内されていますが、環境汚染を防げる Docker がおすすめです。

2.1 CPU 環境(まずはこれで動作確認)

docker run -p 127.0.0.1:9000:8080 us-docker.pkg.dev/colab-images/public/runtime

asia-docker.pkg.dev などのリージョン別ミラーを使っても中身は同一なので、日本から接続する場合はasia-のほうが通信速度のメリットがあります。

2.2 GPU 環境(NVIDIA)

NVIDIA Driver と NVIDIA Container Toolkit がセットアップ済みであれば、--gpus=all を付与します。

docker run --gpus=all -p 127.0.0.1:9000:8080 us-docker.pkg.dev/colab-images/public/runtime

このイメージは T4 / L4 / A100 などでテストされています。

3. Colab 側から接続する

コンテナを起動すると、ターミナルに以下のようなトークン付き URL が表示されます。

http://127.0.0.1:9000/?token=abc123xyz...

Colab の画面右上の「接続(Connect)」メニューから 「ローカル ランタイムに接続(Connect to local runtime...)」 を選択し、上記の URL をポート番号(9000)ごと入力します。


接続が成功するとローカルPCのRAMやGPU使用状況が確認できるようになります。

4. トラブルシュート:接続できない場合

今回、私のPC環境だと「接続中...」のままタイムアウトしたりエラーになるケースが発生しました。
こちらのissueで報告されている通り、おそらく、今回Google Chrome上からローカルランタイム接続を試みたことでPrivate Network Access (PNA)が悪さをしたと思われます。
ブラウザをEdgeを使うことで正常に接続できるようになりましたので、私と同じような事象が発生した方は、ブラウザを変えてみることをお勧めします。

5. まとめ

ローカルの強力な GPU を Colab の UI で使えたり、必要なライブラリーなどはインストールされており環境構築の手間が省け快適です。
ぜひ、Colabの使用制限などを気にして、使いこなせていない方は、手元のPCリソースを活用してColabを試してみてはいかがでしょうか。

Discussion