最近画像データのデータ分析コンペにチャレンジしています(1回提出することが目標)。私は自分のGPUの容量が小さく、GPUを積んだPCも持っていないため、Google ColabやKaggle Notebookを用いてデータ分析でコンペを行なっています。また、今まではテーブルコンペしかやったことがありませんでした。そのため、扱うデータ容量が大きくなく、KaggleやSIGNATEのサイトからダウンロードして、Googleドライブにアップロードし、Google Colabで扱っていました。
画像のコンペに挑戦しようと思い、いざデータをダウンロードし、Googleドライブにアップロードしようとしたところ、容量不足となってしまいました。
Google Colab上にデータを置く
Google ColabではCPU/TPU使用時には約100GB、GPU使用時に約68GBのディスクを使うことができます。そこでGoogle Colab上でSIGNATE CLIを使ってGoogle Colab上にデータをダウンロードしてみました。
下準備としてSIGNATEのAPI Tokenを作成します。
https://signate.jp/
にアクセスし、アカウント設定を開き、API Tokenからを作成します。


そうすると、signate.jsonというファイルがダウンドードされるので、そのファイルをGoogleドライブにアップロードさせておきます。
続いてGoogle Colabを作成し、以下のようなコードを打ち、実行するとSIGNATE CLIを使えるようになります。
具体的にやっていることは4つです。
- SIGNATE CLIをインストール
- Googleドライブ上のSIGNATEのAPI Tokenの場所のIdの取得
- API TokenをGoogle Colabのディスクにダウンロード
- API Tokenに権限を付与
!pip install signate
import io, os
from googleapiclient.discovery import build
from googleapiclient.http import MediaIoBaseDownload
from google.colab import auth
auth.authenticate_user()
drive_service = build(‘drive’, ‘v3’)
results = drive_service.files().list(q=“name = ‘signate.json’”, fields=“files(id)”).execute()
signate_api_key = results.get(‘files’, [])
filename = “/root/.signate/signate.json”
os.makedirs(os.path.dirname(filename), exist_ok=True)
request = drive_service.files().get_media(fileId=signate_api_key[0][‘id’])fh = io.FileIO(filename, ‘wb’)
downloader = MediaIoBaseDownload(fh, request)
done = False
while done is False:
status, done = downloader.next_chunk()
print(“Download %d%%.” % int(status.progress() * 100))
os.chmod(filename, 600)
SIGNATE CLIが使えるようになったので、開催しているコンペを確認したり、コンペのデータをダウンロードできたりします。
# コンペの確認
!signate list
competitionId title closing prize submitters
--------------- --------------------------------------------------------- ---------- -------------- ------------
1 【練習問題】銀行の顧客ターゲティング - 4823
24 【練習問題】お弁当の需要予測 - 5884
27 【練習問題】Jリーグの観客動員数予測 - 1210
…
# コンペのデータをダウンロード
!signate download —competition-id={competitionId}
これでGoogleドライブや自分のPCの容量を圧迫させずに大量データを扱うデータ分析コンペにも挑戦できます。
コメント