0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kaggle提出前にローカル検証ループを回す話 — venv・プロファイル分離・Notebook紐づけの一般論

0
Last updated at Posted at 2026-07-13

はじめに

  • Kaggle 本家はブラウザ+クラウド前提で、手元でやるには環境を自分で足す必要がある
  • LB 提出は 失敗するとスロットを無駄にしやすい

この記事で分かること:

  • Cursor にコードを書いてもらう ためにローカルに寄せる理由
  • 手元なら venv + Jupyter + エディタプロファイル分離 のセット
  • 提出 zip を ローカル verify してから LB に出すメリット
  • Notebook 紐づけ提出 でハマりがちな点(403 時に zip-only しない、など一般論)

シリーズの読み順: 0008 プロファイル分離0010 コンペ開始の儀式0011 Skill 分離本記事(ローカル verify)。コスト周りは 0009 失敗談0012 コスト設計 を参照 (。・ω・。)

結論

ローカルで「壊れていない提出物」を作ってから、LB は確認用に使う。
環境は プロファイル分離 で軽くし、検証は 提出前の習慣 に固定するのがよさそうです ((_๑òωó)_バン

想定読者

  • Kaggle の .ipynb をローカルで触り始めた方
  • Cursor のエージェントに実装を書いてもらいながら コンペを回したい方
  • 提出エラーで LB スロットを無駄にしたくない方
  • Cursor / VS Code で Kaggle と Web 開発を行き来している方(Skill 分離は 0011

私の属性

  • エディターは Cursor がメイン(VS Code 系プロファイルの考え方は同じ)
  • 拡張機能52個でPCが重すぎた話Kaggle 用プロファイル(Kaggle-Light を分けた
  • コンペ ROOT だけを開き(0011)、ローカル verify → Notebook 紐づけ提出、の順を意識している

理由と手順

なぜローカルか

私がローカルに寄せた いちばんの理由 は、Kaggle 本家の Notebook より Cursor のエージェントに実装を書いてもらう方が速い からです。
自分でコードを書くより、エージェントに patch を出してもらい、短い verify で確認するループの方が合っています。

Kaggle Notebooks 公式 の世界はクラウド中心です。
ブラウザ上だけだと、エージェントとの共同編集や手元での短い検証がしづらいので、手元に Python + Jupyter を置いています。
0010my-notebook/(Cursor が編集)→ ローカル verify → Kaggle Notebook、という流れの 土台 です。

場所 向いていること
ローカル エージェントとの .ipynb 編集、短い verify、スクリプト整形
Kaggle Notebook コンペ公式データに近い実行、提出用 Notebook
LB 最終確認(ローカルで通ったものだけ)

全部をローカルで完結させる必要はありません。壊れた zip を LB に投げない ことが目的です。

手元環境 — venv + Jupyter + プロファイル分離

最低限、次の3つをセットにしています。

  1. コンペごとの venv(依存を他プロジェクトと混ぜない)
  2. Jupyter + Python 拡張
  3. Kaggle-Light プロファイル0010 でコンペ ROOT 用に使う名前。Web 系拡張を入れない)

プロファイル分離の詳細は 拡張機能52個でPCが重すぎた話 に任せます。
コンペ ROOT の開き方と Skill の閉じ方は Kaggle用Cursor Skillをコンペフォルダだけに閉じた話 を参照してください。

# 例: コンペ ROOT で venv 作成
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt   # あれば

ローカル verify を先に回すメリット

提出前にローカルで確認すると、次のような LB 前の脱落 を減らせます。

  • zip サイズ・形式の不一致
  • 静的チェック(shape・禁止 op など、コンペが定める条件)
  • 明らかな壊れファイル(空 zip、パス違い)
順番 やること
1 my-local-eval-notebook/ または dataset/ 配下で verify を PASS
2 問題なければ my-notebook/ を更新し、Kaggle Notebook に反映
3 Notebook 紐づけ で LB 提出

my-local-eval-notebook/0010検証専用・提出しない 置き場として定義しています。
「完走した Notebook」≠「提出できる zip」とも言えます。
verify は 提出物そのもの を見る段階だと安心です(´・ω・`)

Notebook 紐づけ提出でハマりがちな点(一般論)

コンペによって提出方式は違いますが、Notebook 紐づけが絡むときに私が踏んだ・見たパターンです。
特定コンペの解法は書きません。

症状 一般論としての対処
403 が出る zip だけ差し替えようとしない。紐づく Notebook / kernel の状態 を先に直す
Notebook と zip の不整合 提出前に「どの Notebook 版が zip を生んだか」を my-ran-notebook/run-log.md に1行残す
他人の Notebook を参照した ライセンス・ルールを確認。fork は材料、CHK には仮説だけ 載せる
ローカルで通ったのに LB で落ちる 入力データ版・実行環境差。docs-ja/kernels-runbook.md に環境メモを残す

Kaggle API / CLI で kernel を操作する場合も、token は Git に載せない のは当然として、ログに出さないよう注意します。

具体例 — 私のループ(抽象化)

  1. exp/experiment-checklist.md から 今日1仮説 を選ぶ
  2. Cursor に patch を書いてもらい、my-local-eval-notebook/ で verify PASS
  3. 通ったら my-notebook/ を更新し、Kaggle Notebook で再現(必要なら GPU)
  4. my-ran-notebook/run-log.md に結果を書く
  5. 問題なければ Notebook 紐づけ提出

解法の中身はコンペごとに違うので、ここでは 順番だけ が再現ポイントです。
フォルダ儀式の詳細は Kaggleコンペ開始の「儀式」を固定した話 を参照してください。

注意点

  • ローカルと Kaggle の データ版がズレる と verify が嘘をつくことがある
  • エージェントに「提出まで」丸投げすると、GPU時間と提出枠の浪費可能性が痛い(Kaggle×Cursor×Google Colabのコスト設計 を参照)
  • verify を通しても Public LB は別問題 — ローカルは「壊れていないか」のゲート

まとめ

  • ローカルに寄せる主因は Cursor に実装を書いてもらう こと。venv + Jupyter + Kaggle-Light プロファイル をセットにする(000800100011 と併読)
  • 提出 zip は my-local-eval-notebook/ で verify → Notebook 更新 → 紐づけ提出 の順が安全
  • API・GPU のコスト設計は 0012 を参照
  • 403 などは zip-only で逃げず、紐づく Notebook 側を直す(一般論)

LB は最後の確認役にして、無駄撃ちを減らしたい人の参考になれば幸いです (ノ´∀`*)

m(_ _)m 読んでくれてありがとうございました (´▽`)

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?