Help us understand the problem. What is going on with this article?

KaggleのKernelOnlyコンペのすゝめ

はじめに

当初書く予定だったネタが、まだあまり深く理解できていないのと、
自分の経験のなさから、ちょっと書くにはデカすぎる内容なのかなと思い、
こちらを書くことになりました。

Kernelオンリーコンペとは?

本来Kaggleではsubmissionはcsvにして提出すれば良いのですが、
最近のKaggleではほとんどがKernelオンリーコンペとなっています。

Kernelオンリーコンペとは、submission.csvの代わりにプログラムを提出する
コンペティションとなっております。

どうやって提出するの?

基本的な流れは以下の通りです。

Kernel

コンペページから、submit predictionをクリック後、
このような画面が出てくるので、New notebookで
Kaggle専用のJupyterNotebookが出現します。

そのJupyterNotebook上で何らかの処理をさせたあと、
submission.csvを出力する動作を書けばOKです。

Kernelコンペで大事なこと

Kernelコンペでは基本的に、個別データセットOKのコンペがほとんどです。
データセットを持ち込めるということは、
実は学習済みモデルの重みやPickleデータをも持ってこれるということです。

つまり、Kernelコンペでは、事前に学習したモデルを持ってきて
推論だけ提出するといったことも可能です。
もちろん、No Internet Accessでも使用することができます。

Datasetについて

こうした、Kernelオンリーコンペに使われる追加データに関しては、
Dataset項目として扱われ、OpenでもCloseでも持つことができます。
Closeの場合、全体で20GB以内であればCloseデータも持つことができます。

Datasetのアップロード

ローカルのMacからデータセットをあげるのは、WebUI上のドラッグ&ドロップでいいのですが、
容量も逼迫しますし、GCPやオンプレサーバから直でアップロードしたいですよね。

そういう時の方法は二つあって、KaggleAPIかGCSを使用するの二通りになります。

Kaggle API

Kaggle APIを使えばリモートサーバから直接データをKaggleサーバの方に転送することが出来ます。
しかし、KaggleAPIでは現在PrivateDatasetでの利用は出来ないので、
PublicなDatasetでいいなら、KaggleAPIを利用しましょう。
容量とかも気にしなくていいですし、Openになったところでどうせ見ないでしょ。という感じもします。

GCSを利用する方法

とはいえ、コンペティションなので、OpenDatasetだと誰かに学習済みモデルを取られてしまうかも。
なので、Privateなデータセットをローカルに落とさずに行う方法をここに記載します。
その方法がGCSを利用する方法です。

GCSはGoogleCloudStrageのことで、AWSで言う所のS3バケットに相当します。
リモートサーバにGoogleCloudSDKをインストールして、
gcloud initして認証情報を追加しておきましょう。

その後、gsutilコマンドを使って、学習モデルデータをバケットに送信します。

そして、学習モデルデータをバケットに入れたら、当該ファイルだけ、
Authなしで見られる状態に権限追加をします。

その後、Notebookに戻って、Dataset→一番上に出てる自分のデータセットを使うを選択
そして、リンクからDownloadするで、GCSリンクを指定してあげれば
読み込ませることが出来ます。

これでローカルを介さずにKaggle上にPrivateDatasetを登録することができます。
(かなりややこしいですが...)

Kernelオンリーコンペの時間は、学習時間ではなく、予測制限時間

自分も勘違いしていたのですが、CPU<=6hourとか表記されてるコンペは
6時間以内に学習を終わらせるコンペだと思っていましたが、
本当は推論を6時間以内に終わらせるという意味です。
(でもKaggleやってたら、1subに正味そんな長いこと待ってられないので、
大抵そこまで使わずとも高速で推論してしまって終わりということが多いような気もします)

おわりに

急に忙しくなってちょっと残念な記事になってしまって申し訳ないです。
時間があったらもっとリッチで画像とか入れた記事にしたいと思います。
メリークリスマス!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした