コードコンペティション
学習済みモデルと推論コードをノートブックとして提出する形式のコンペです。
実行時間制限やインターネット接続の遮断といった制約があるなかで、開発と提出のサイクルをいかに効率化するかが成果を左右します。
押さえどころ
- 提出ノートブックには実行時間の制限、インターネット遮断、依存ライブラリの事前準備といった制約があり、学習と推論のコードを分離したワークフローの設計が求められる
- 提出ノートブックの採点がコンペ終了時刻までに完了していない提出は最終順位の集計対象外となる仕様(公式アナウンス)が標準化された。終了直前の駆け込み提出ではなく、推論所要時間を逆算した計画的な提出が必要になる
- ローカル開発の生産性を上げる工夫が定番化している。VS Code や Kaggle CLI を使ってブラウザ操作を減らし、実装コードを Dataset として管理する方法(効率的なコードコンペティションの作業フロー)や、GitHub Actions で学習済みモデルや推論コードの提出を自動化する KaggleOps 的なアプローチ(code competition も楽したい KaggleOps)によって、手作業のアップロードを排除できる
- メモリや実行時間の制約が厳しいコンペでは、C++ など Python 以外の言語を部分的に組み込む工夫も有効である(Riiid Answer Correctness Prediction でのC++メモリ節約記事)
- LLM を扱うコードコンペでは、制限時間内に推論を終えるために vLLM の利用や量子化による高速化が求められる(自然言語処理コンペ)
- 実験の再現性や管理体制と併せて整備すると運用効率が高まる(実験管理)
資料
関連概念