LoginSignup
27
23

More than 3 years have passed since last update.

kaggleのkernelコンペを快適に過ごす方法

Last updated at Posted at 2019-06-02

概要

colaboratoryをkaggleのnotebookみたいに扱って, kaggleのkernelコンペに挑戦する際にできるだけ快適に過ごしたい.
僕が実践している方法を紹介します.

kaggleのkernelここがつらい

kaggleのkernel(notebookの方)使っててここがつらいなーと感じます. 逆に僕が無知でここらへんがふつうにkernelでできるならもうこの記事の意味がないので, 解決法あったら教えてほしいです.

  • 処理に時間がかかる前処理をpickle化して置いておけない(またkernel再開するとき消えちゃう)
  • セルのコピペやマージができない

大きくはこの二点です.
別にGPU使わないコンペとかなら手元とかでjupyterで作ったものをuploadすればいいだけなのですが, GPU使いたいからkernelで...と思っても上記の理由でしんどかったのです.
そんなときに「あ, colaboratory使えばいいじゃん」ってなったわけです.

colaboratoryとは?

  • google driveに保存されるjupyter notebookだよ
  • google様の力でGPUも使えるよ
  • RAMは13GBくらいでオーバーするとセッションがリセットされるよ
  • くわしくはこちらの動画を見てね

kernelのnotebooksと似たような環境(若干colaboratoryのほうが強いのかな?)なのでcolaboratoryで死ぬとか, 実行時間が足りないならkernelの方もだめって考えてます.
手元のjupyterとまではいかなくてもセルの操作のショートカットとかもあるし, google driveにpickleを保存すればあとから呼び出して, 前処理の時間等を削減できるしいいかんじです.
あとダークモードもあるよ.みんなダークモード好きだよね.

実践

データの準備とディレクトリ構成

google driveにディレクトリを作ります.
僕はkaggleというディレクトリの配下にコンペごとにディレクトリを用意しています.
hogeコンペとfugaコンペがあったらこんな感じです.

My Drive/
  ├─ kaggle/
      ├─ hoge_competition/ 
      │   ├─ input/
      │   └─ working/
      └─ fuga_competition/
          ├─ input/
          └─ working/ 

今回はhogeコンペに参加することを想定してさらに詳しくディレクトリ構成を説明します.
ノートブックとinputはこんな感じ.

My Drive/
  ├─ kaggle/
      └─ hoge_competition/ 
          ├─ input/
          │   ├─ hoge_competition
          │   │    ├─ train.csv
          │   │    ├─ test.csv
          │   │    └─ sample_submission.csv
          │   └─ other_datasource/
          │          └─hogehoge.vec
          └─ working/
               └─ hoge.ipynb

input配下は外部のdatasetを使うかどうかで少し変わりますので注意してください(使わない場合input配下にtrainやらがいるようになる).
notebookはinputと同じ階層にあるworking配下にできるようです.
以上でディレクトリ構成が完成です.

Google Driveをマウントする

colaboratory側から自分のgoogle driveを認識できるようにします.
これはcolaboratoryで,

use_colaboratory = True
if use_colaboratory:
    import os
    from google.colab import drive
    drive.mount('/content/drive')
    os.chdir('drive/My Drive/kaggle/hoge_competition/working')

このセルを実行すると「どのアカウントのgoogle drive使うか」ってのを聞かれて, 選んで認証すると, 認証コードが画面に表示されます.
それをコピペして, 上記のセルに戻ると実行待ちになっているので, そこに認証コードを貼り付けてエンターキーでマウントされて, working配下のnotebookと認識されます.
毎日この認証しなきゃいけないのなんとかならないかなぁと若干思っております.
use_colaboratoryフラッグをオフにすれば, kernelでも使えます.
他にpickle等からロードするかどうかのフラッグも使うようにして, kernelではオフにして使っています.

kernelにupload

kernelのnotebookを開いて, 左上のFileからuploadできます

スクリーンショット 2019-06-02 20.56.49.png

注意点

  • 繰り返しになりますが, 外部ソースを使う場合 input配下のディレクトリ構成が変わるのは注意してください
  • けっこう大きなデータセットを使う場合, あっという間にgoogle drive無料の範囲の15GBまで行くので注意してください(gmailが届かなくなるかもとか怖いこと言われます)

まとめ

以上が現在僕が実践しているkernelコンペを快適に過ごす方法です.
他にもいい方法があったら教えてほしいです!
kernelコンペがんばるぞ!

27
23
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
23