Google Colabでデータ分析の時ローカルにデータを置きたくない

data analysis エンジニアのコト

最近画像データのデータ分析コンペにチャレンジしています(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からを作成します。

画像1
画像2

そうすると、signate.jsonというファイルがダウンドードされるので、そのファイルをGoogleドライブにアップロードさせておきます。

続いてGoogle Colabを作成し、以下のようなコードを打ち、実行するとSIGNATE CLIを使えるようになります。
具体的にやっていることは4つです。

  1. SIGNATE CLIをインストール
  2. Googleドライブ上のSIGNATEのAPI Tokenの場所のIdの取得
  3. API TokenをGoogle Colabのディスクにダウンロード
  4. 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の容量を圧迫させずに大量データを扱うデータ分析コンペにも挑戦できます。

コメント

タイトルとURLをコピーしました