まひろ量子のハックログ

プログラミングや機械学習などの知識を記録・共有します

Google Colaboratory に大量データをアップロードする方法

Google Driveをマウントする

Colab上で以下を実行。/content/driveというディレクトリにGoogle Driveがマウントされる。

!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

from google.colab import auth
from oauth2client.client import GoogleCredentials
import getpass
auth.authenticate_user()
creds = GoogleCredentials.get_application_default()

!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}

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

Google Driveにアップロードする

xxxxx.zipのようにzipで圧縮してGoogle Driveに普通にアップロードする。

Google DriveからGoogle Colaboratoryにファイルを移動し展開

Colab上で以下を実行。/content/dataというディレクトリに大量データが展開される。

!mkdir /content/data
!unzip /content/drive/train.zip -d /content/data > /dev/null 2>&1 &

ポイントは、> /dev/null 2>&1 &で、標準出力を捨てているところだ。

そうしないと、unzipで大量データを展開したときに大量の標準出力が表示されてしまい、Chromeがクラッシュして落ちてしまうことがある。

解凍後のファイル数を確認するには以下を実行する。

!echo /content/data/train/* | xargs ls | wc

出力例。27308個のファイルが展開されていることがわかる。

  27308   27308 1119628

以上、本日は「Google Colaboratory に大量データをアップロードする方法」を紹介しました。 良い記事だと思っていただいた方は下の「★+」ボタンのクリック、SNSでのシェア、「読者になる」ボタンのクリックをお願いします! それではまたー

Kozuko Mahiro's Hacklog ―― Copyright © 2018 Mahiro Kazuko