みらいテックラボ

音声・画像認識や機械学習など, 週末プログラマである管理人が興味のある技術の紹介や実際にトライしてみた様子などメモしていく.

Google Colaboratory (2) ― FuseでGoogle Driveをマウントする

最近, 機械学習を始めてみようという方に, 勉強環境としてGoogle Colaboratory[1]をおススメすることがよくある.

Google Colaboratory概要
機械学習の環境構築がほぼ不要(TensorFlow, Keras, PyTorch, Chainer等インストール済)
GPUを含めて無料で利用可能(連続12hまで)
Google Driveと連携可

こう書くと, 誰でもまずは使ってみようと思うだろう.
確かに, 環境構築など必要なく, すぐにチュートリアルなどを試せて便利.


関連記事:
Google Colaboratory (1) ― ファイルをアップロード/ダウンロードする
Google Colaboratory (2) ― FuseGoogle Driveをマウントする
Google Colaboratory (3) ― ファイルブラウザで簡単アップロード!!


だが, 使っていると不便な点も少々ある.
よく聞かれるのが, 「PCのデータセット等をColab上のプログラムで扱いたい場合に, どうやればよいかわからない」 といったことである.

前回, ファイルのアップロード/ダウンロードについて少し紹介したが, 今回はGoogle ColaboratoryからGoogle Driveをマウントする手順を紹介する.


1. Google Driveのマウント[2][3]
手順:
1) google-drive-ocamlfuseのインストール

!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse

2) Colab用のAuth token生成

from google.colab import auth
auth.authenticate_user()

実行すると, Googleアカウントへのアクセス許可を求められるので, 許可してトークンを発行し, テキストボックスに張り付ける.

f:id:moonlight-aska:20180804080204p:plain:w400
f:id:moonlight-aska:20180804080229p:plain:w400
f:id:moonlight-aska:20180804080249p:plain:w400

3) Drive FUSE library用のcredential生成

from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}

実行すると, 2)と同様に, Google Driveへのアクセス許可を求められるので, 許可してトークンを発行し, テキストボックスに張り付ける.

f:id:moonlight-aska:20180804080920p:plain:w300

4) Google Driveをマウント

!mkdir -p drive
!google-drive-ocamlfuse drive

これで, Google Driveのマウント完了!!

試しに, 以下を実行すると

!ls drive
BigQuery     Colab Notebooks    Documents    images    public

これで, Google Drive上のデータセット等も自由にアクセスすることができる.

Colabでは, コードはGoogle Drive上に簡単に保存できる仕組みがあるのだから, 同じアカウントのGoogle Driveにはこんなマウント処理しなくても簡単にアクセスできるようにしてほしいものだ...

----
参照URL:
[1] Hello, Colaboratory - Colaboratory - Google
[2] Google Colaboratory で Google Drive の特定のフォルダをマウントする方法
[3] Drive FUSE example.ipynb - Corabolately





Google Cloud Platformではじめる機械学習と深層学習

Google Cloud Platformではじめる機械学習と深層学習



Google Cloudを使い倒せ!   ゲームチェンジ時代の企業改革

Google Cloudを使い倒せ! ゲームチェンジ時代の企業改革