Docker Composeの有料版に、お金を払いたくない ^H^Hが使えない ため古いゲーミングPC(GeForce3080)にDocker Composeを入れてその上のコンテナでGoogle Colab相当のノート操作ができないかためしてみた:
コンテナイメージとして asia-docker.pkg.dev/colab-images を使用するが、このままだとJupyter Lab画面がないので Dockerfileを以下のように作成した。
FROM asia-docker.pkg.dev/colab-images/public/runtime:latest
# google-colab pins jupyter-server==2.14.0, so jupyterlab is pinned to a
# version that still supports it (newer jupyterlab needs jupyter-server>=2.19).
RUN pip install --no-cache-dir 'jupyterlab==4.2.7' 'jupyter-server==2.14.0' \
&& jupyter server extension enable jupyterlab
※バージョンを変えたい場合は適宜修正のこと
そしてdocker-compose.ymlでは以下の様の上のDockerfileからイメージを作成するようにした。
services:
colab-runtime:
build:
context: .
dockerfile: Dockerfile
image: colab-gpu-runtime-jupyterlab:latest
container_name: colab-gpu-runtime
ports:
- "0.0.0.0:9000:8080" # colab.research.google.com からの接続用(将来SSHトンネル等で使う場合に残す)
- "0.0.0.0:8888:9000" # LAN内から直接ブラウザでアクセスする用(Colab相当・完全ローカル)
volumes:
- ./workspace:/content/workspace
environment:
COLAB_JUPYTER_IP: 0.0.0.0
COLAB_JUPYTER_ALLOW_REMOTE_ACCESS: "true"
COLAB_JUPYTER_TOKEN: ${COLAB_JUPYTER_TOKEN:-change-this-token}
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
restart: unless-stopped
ためしていないけど、latestをColab環境バージョンにあわせたタグを指定すれば、該当バージョンのコンテナになる..かな?
上の定義にある通り、docker-compose.ymlとおなじディレクトリには、先のDockerfileとworkspaceフォルダを作成しておく。
あと、UIにアクセスする際のトークン文字列を環境変数COLAB_JUPYTER_TOKENに設定する。docker composeコマンドはカレントの.envを読んでくれるので、.envファイルをたとえば以下のように定義する。
COLAB_JUPYTER_TOKEN=my-token-hogehoge
Jupyter Lab画面を開くには http://IPアドレス:8888/lab?token=my-token-hogehoge をブラウザで開けば良い。
ひとつ..残念なことが1点。
実はGoogle Colab画面を開いて右上の逆三角形を押し「ローカルランタイムに接続」でこのURLをトークン入れればつながるかな..とおもっていたのですが、ホスト名がlocalhostでないと受け付けない仕様になっていてできませんでした。有効なバックエンドURLを入力して..だって..
...9000ポート用意したのですが...別のPC上のブラウザ操作からは、今のところ手がありません(Port Fowardしたら、IPになっちゃうだろうし..)
上記の設定ではJupyter Lab画面からColab相当の環境をつかうことで、aptやpipの環境が野良Jupyterで変わらないようにする使い方くらいしか..
研修とかだと古いColabバージョン前提のnotebookファイルなんかがあるから、それには使えるかも..
0 件のコメント:
コメントを投稿