自分的Kaggleの教訓
自分がKaggleをやっていて、何度も同じミスを犯したり、勉強を重ねて行く中で痛感したことをおおまかにまとめています。なお、下記のスライドに載っていることにもある程度被りますし、実際僕はこのスライドにとてもお世話になっています。
Pathは最初からきちんと変数に。
- どうせKaggle notebookだけじゃ足りないので、Kaggle notebook以外でも(最低限)同じように動くnotebookにする。
INPUT_DIR = "/kaggle/input"
- pathの結合は、必ず
os.path.join(PATH1,PATH2)
from os.path import join as j
でj(PATH1,PATH2)
が楽。
モデル管理はW&B、もしくはnow
&preffix
- ベースラインのノートブックに依存するが、WandBをササっと実装できたら理想。
- 時間がない時は、
{preffix}+{now}+{model_name}
で保存。 - いろいろ試して実験的に訓練を回す環境を作るのは難しい
- きちんとCVできる環境も必須
- scoreは
colorama
でハイライトするのが良い
まず、preprocess->train->infer->submitのパイプラインを自分で再現すること。
- 自分の依拠するpreprocess, train, inferのノートブックが分かれている場合が多い
- コンペによっては、部分ごとに別の人のノートブックを使うことになるが、それらをまず統合&submitまでするのを第一優先に。
- 訓練済みモデルや、前処理済みデータセットは用意されている状態で、他の部分だけを自分でいじってsubmitしがちだが、どうせ別の部分もいじることになる&いじることになって初めて全体のパイプラインを通すことに苦労しがちなので。
- でも、依拠するノートブックを変えた時に、骨折り損になるかも(?)
- パイプラインを組みやすい形を意識して、各部分が構成されているはずなので、結局骨折り損にはならない(?)
訓練を自分で回すとき
- まず自分でデバッグモードを実装
- 使うデータ数を少なく、foldも1つで