Python
GoogleCloudPlatform
gcp
Jupyter
colaboratory

Google Compute Engine(GEC) 上に Google Colaboratory の ローカルランタイムを作成する

この記事は、AWS EC2 上に Google Colaboratory の ローカルランタイムを作成すると同じ事をGoogle Cloud Platform(GCP)で行う記事です。

GCPには、NVIDIAの公式イメージがあるのでそれを使います。
また、GPUを使うために申請が必要なので、その日のうちに使いはじめることはできません。

  1. https://cloud.google.com/sdk/ を参考に、Google Cloud SDKをインストール
  2. $ gcloud auth login を実行し、ログインしておく
  3. https://ngc.nvidia.com にサインアップ
  4. https://ngc.nvidia.com/configuration/api-key でAPIキーを作成(後で使うのでメモっておく)
  5. https://console.cloud.google.com/ を開く
  6. 上部のプロジェクトの選択 https://gyazo.com/457446e136220a77f17f5dafe98df46d で▼を押し、今回使うプロジェクトを選択、または新規作成
  7. quotaのページ か利用するZONEにチェックを入れる(例によって、usのZONEの方が料金が安いです)
  8. 上部の「割り当てを編集」をクリック
  9. 電話番号を入れ、次へをクリック
  10. 新しい割り当て上限を入力。とりあえず、1にする
  11. リクエストの説明は、"For machine learning"で十分。(たぶん数が少ない場合は)
  12. 申請が通るのを待つ。。。
  13. Cloud Launcher の NVIDIA GPU Cloud Imageのページを開く
  14. COMPUTE ENGINE 上で起動、をクリック
  15. ZONEから、申請の通ったZONEを選ぶ
  16. GPUの下にある、"Did you check for GPU quota?"のテキストボックスにYESと入力
  17. 必要なら、CPU、メモリー、ストレージなどを選ぶ
  18. デプロイをクリック
  19. デプロイが完了するのを待つ
  20. VMインスタンスのコンソールを開き、gcloudコマンドを表示をクリックし、gcloudコマンドをコピー
    • https://gyazo.com/e0fd368717d8fdb84baa18e2b1a2d7dd
  21. $ gcloud compute --project "colab-local-1" ssh --zone "us-west1-b" "nvidia-ngc-image-1-vm" のようなコマンドがコピーされるので、ターミナルに貼り付け、末尾に-- -L 8081:localhost:8081を追加
    • 例) $ gcloud compute --project "colab-local-1" ssh --zone "us-west1-b" "nvidia-ngc-image-1-vm" -- -L 8081:localhost:8081
  22. つながると、"Please enter your NGC APIkey to login to the NGC Registry:"と聞かれるので、 https://ngc.nvidia.com/configuration/api-key で作成したAPIキーを貼り付け
  23. $ screen でGNU Screenを起動
  24. docker で cloab のローカルインスタンスを起動
$ docker run --runtime=nvidia -it --rm -p 8081:8081 --cap-add SYS_ADMIN --device /dev/fuse \
             --security-opt apparmor=unconfined ikeyasu/colab-local:latest