Google Colaboratory の ローカルランタイムへの接続 でローカルのPCに、nvidia-docker2を使って、Google Colaboratoryのローカルランタイム環境を作成し、Google Colaboratoryから接続する方法を書きました。
ここでは、EC2 上に Google Colaboratory のローカルランタイムを作る方法を説明します。
本当は、Googleに敬意を表して、GCPを使った方法を先に書こうと思ったのですが、GPUを使うには割り当てリクエストを送らないといけないようなので、先に AWS EC2 になりました。
2018/06/16追記: 書きました
といっても、nvidia-docker2に対応したAMIを使って起動するだけです。
- https://console.aws.amazon.com/ec2/v2/home からインスタンス作成
- コミュニティAMIの "Ubuntu 16.04 Docker CE GPU"を使う。"nvidia-docker2"でコミュニティAMIを検索
- NVIDIA公式の"NVIDIA Volta Deep Learning AMI"でも良いが、これだとP3インスタンスでしか使えないためです。P3インスタンスを使う場合は、"NVIDIA Volta Deep Learning AMI"がオススメです。
- インスタンスを選択。P2かP3
- VPCを選択。自動割り当てパブリック IP を選択しておく(その方が接続らが楽)VPCについてはこちらが参考になります
- 次の手順をクリックし、セキュリティグループの設定まで移動
- インスタンス作成
上記で、nvidia-docker2が起動したEC2インスタンスができました。
そして、インスタンス一覧から右クリックし、接続をクリックします。
以下のようなコマンドが書いてあるはずです。
ssh -i "XXX.pem" ubuntu@ec2-XX-XX-XXX-XX.compute-1.amazonaws.com
これをコピーして、-L 8081:localhost:8081
を加えて実行してください。以下のようになります。
$ ssh -L 8081:localhost:8081 -i "XXX.pem" ubuntu@ec2-XX-XX-XXX-XX.compute-1.amazonaws.com
つながったら、以下のように入力し、GNU Screenを起動してから、dockerインスタンスを起動します。初回起動はイメージのダウンロードで時間がかかります。
$ screen
$ docker run --runtime=nvidia -it --rm -p 8081:8081 --cap-add SYS_ADMIN --device /dev/fuse \
--security-opt apparmor=unconfined ikeyasu/colab-local:latest
ここまでできたら、Colaboratory から接続できます。Colaboratoryの右上の接続の右にある▼をクリックし、ローカルランタイムに接続をクリックし、Docker起動時に指定したポート番号(8081)をしていして、接続をクリックしてください。
なお、ローカルに8081ポートをForwardingしているので、 http://127.0.0.1:8081/ で、Jupyter notebook にアクセスできます。