Kaggle -> Colab の面倒なこと

最近、Kaggle 用に Colab Pro 契約しました。GPU 使いまくれるのが最高です。 ただ、既存 kaggle ノートブックを Colab に移行するのは若干面倒です。 zip のデータセットを落としてきて、解凍して、所定の位置に置き、パスを置き換えるといった手順が必要になります。 今回、これらを半自動でやってくれるスクリプトを作成したので紹介します。

前提

  • Colab にマウントした Google Drive 上の、以下の位置に kaggle.json を置いてあること
    • /content/drive/MyDrive/colab/kaggle.json
  • Kaggle ノートブックが Colab にコピー済みであること

リポジトリ

簡単な使い方

以下を貼り付けて、所望のデータセット名をdataset_nameに指定して実行する。データセット名はデータセット画面の URL か、Copy API Command から取得可能。

dataset_name = "<dataset name or competition dataset name>"

!pip install -q kaggle
!mkdir /root/.kaggle
!cp /content/drive/MyDrive/colab/kaggle.json /root/.kaggle/

!git clone https://github.com/tttza/kaggle_dataset_downloader.git
from kaggle_dataset_downloader import download_dataset
download_dataset.get_dataset(dataset_name)

以上で、Colab の VM 上の../input/フォルダに、Kaggle Notebook と同じフォルダ構成でデータが配置される。簡単。

コードの内訳

  • kaggle.json の配置
  • kaggle ライブラリのインストール
  • データセットダウンロード (zip)
  • ../input/<dataset名>ディレクトリの作成
  • zip 解凍&データ配置

例: データセット名

  • CommonLit Readability Prize のコンペデータ: dataset_name = "commonlitreadabilityprize"
  • その他のデータセット: dataset_name = "xxxxx/yyyyy"

コンペデータとその他のデータセットって名前の/の有無で見分けられると思ってるけども、あってるだろうか。。。違ったら別のコンペでは動かないかも。

感想

  • 毎回、Kaggle API の使い方をググって、zip 解凍して置いて、、、を繰り返してたので、手間が減って非常にいい感じ。既存の Kaggle ノートブックに 1 セル足すだけなので、Kaggle 環境とほぼ互換性を保ったまま Colab が使える。
  • すでに誰かが開発して公開してくれている気がしてならないが、私のググり力では見つけられなかった。。。もっといい仕組みあればコメントもらえると嬉しいです。