Python
AWS
EC2
Jupyter
colaboratory

AWS EC2 上に Google Colaboratory の ローカルランタイムを作成する

Google Colaboratory の ローカルランタイムへの接続 でローカルのPCに、nvidia-docker2を使って、Google Colaboratoryのローカルランタイム環境を作成し、Google Colaboratoryから接続する方法を書きました。

ここでは、EC2 上に Google Colaboratory のローカルランタイムを作る方法を説明します。

本当は、Googleに敬意を表して、GCPを使った方法を先に書こうと思ったのですが、GPUを使うには割り当てリクエストを送らないといけないようなので、先に AWS EC2 になりました。

2018/06/16追記: 書きました

といっても、nvidia-docker2に対応したAMIを使って起動するだけです。

  1. https://console.aws.amazon.com/ec2/v2/home からインスタンス作成
  2. コミュニティAMIの "Ubuntu 16.04 Docker CE GPU"を使う。"nvidia-docker2"でコミュニティAMIを検索
    • NVIDIA公式の"NVIDIA Volta Deep Learning AMI"でも良いが、これだとP3インスタンスでしか使えないためです。P3インスタンスを使う場合は、"NVIDIA Volta Deep Learning AMI"がオススメです。
  3. インスタンスを選択。P2かP3
  4. VPCを選択。自動割り当てパブリック IP を選択しておく(その方が接続らが楽)VPCについてはこちらが参考になります
  5. 次の手順をクリックし、セキュリティグループの設定まで移動
  6. インスタンス作成

上記で、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 にアクセスできます。