Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
MLコンペ実験テンプレートを作ろう!
Search
kami
March 13, 2025
1
490
MLコンペ実験テンプレートを作ろう!
Kaggle GMに学ぶ実験管理 ~2025 spring~ での登壇資料です
kami
March 13, 2025
Tweet
Share
More Decks by kami
See All by kami
RecSys2024 参加報告
unonao
1
130
睡眠コンペ 1st place solution
unonao
3
1.9k
N=1 の推薦系コンペの戦い方
unonao
3
2.1k
Kaggle 過去コンペまとめ Image Matching Challenge 2023
unonao
0
900
atmaCup #16: 1st place solution + 取り組み方振り返り
unonao
1
770
RecSys23参加報告:推薦システムに関する最新研究
unonao
1
830
#15 atmaCup 振り返り& 1st place solution
unonao
1
1.2k
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
172
14k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
366
25k
Making Projects Easy
brettharned
116
6.1k
Building an army of robots
kneath
303
45k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Product Roadmaps are Hard
iamctodd
PRO
51
11k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.8k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
Statistics for Hackers
jakevdp
797
220k
Designing Experiences People Love
moore
140
23k
The World Runs on Bad Software
bkeepers
PRO
67
11k
How to train your dragon (web standard)
notwaldorf
91
5.9k
Transcript
© DeNA Co., Ltd. 1 MLコンペ実験テンプレートを作ろう! 村上直輝 データ統括部AI技術開発部ゲームエンタメグループ 株式会社ディー・エヌ・エー
© DeNA Co., Ltd. 2 村上(murakami) 直輝 @634kami © DeNA
Co., Ltd. 自己紹介 引用:https://www.kaggle.com/kami634 Kaggle @kami634 • データサイエンティスト • Kaggle Competitions Grandmaster ◦ 色々なタスクやります ▪ レコメンド ▪ 鳥の音声認識 ▪ 自然言語処理 ▪ 系列データ処理 … • 最近は強化学習をやってます
© DeNA Co., Ltd. 3 ところで、こんなお悩みありませんか?
© DeNA Co., Ltd. 4 コンペに参加していて感じた悩み • 「環境構築に時間がかかって新しいコンペに参加するまで時間がかかる」 • 「コードを上書きしてしまったから前の結果を再現できない!」
• 「再現のための実験スクリプトが無駄にできてリポジトリが散乱...」 • 「configに書いたハイパラをタイポしたせいで数時間の実験が無駄に...」
© DeNA Co., Ltd. 5 そのお悩み MLコンペ用実験テンプレートを作ることで 解決しませんか?
© DeNA Co., Ltd. 6 1 完成品がこちら • GitHubのテンプレートリポジトリでMLコンペ用実験テンプレートを用意 →
コンペのたびに、これを元に新しいリポジトリを作ってベースラインを作成 100スターありがとうございます https://github.com/unonao/kaggle-template
© DeNA Co., Ltd. 7 完成品がこちら • {major_exp_name} と {minor_exp_name}
の 組み合わせで実験が再現できるようにする 1 • 実験結果は W&B に保存 実験コード本体 パラメータ設定
© DeNA Co., Ltd. 8 テンプレートの解説
© DeNA Co., Ltd. 9 • 同一の環境を素早く構築をしたい! ◦ 違うマシンでも動くように素早く環境構築をしたい (GCPでインスタンスを複数立てる事があるため)
◦ 特にKaggle Notebook と実験環境の差異がなるべく小さくしたい • 実験の記録を簡単に取りたい! ◦ 実験ごとの評価結果から、マシンのメモリやCPU使用率まで簡単に記録したい • 実験を再現可能にしたい • コードを整理したい • Configを利用する時にタイポしたくない! (私が個人的に ) 満たしたい実験コードの条件
© DeNA Co., Ltd. 10 1 • Dockerを利用して同一の環境を素早く構築 ◦ Dockerfile,
compuse.yaml ファイルに定義することができ、環境自体 の再現が容易に ◦ a a で実行可能 • Kaggle Notebook に近い環境を構築可能 ◦ Kaggle 公式 Docker image が利用できる 同一の環境を素早く構築をしたい! → Docker で実現 https://github.com/Kaggle/docker-python
© DeNA Co., Ltd. 11 同一の環境を素早く構築をしたい! → Docker で実現 •
Docker 環境内ならディレクトリ構成も Kaggle環境と似た形に ◦ データを /kaggle/input に ◦ 作業ディレクトリを /kaggle/working に • compose.yaml をうまく設定 ◦ リポジトリをいい感じにマウントする 1 compose.yaml
© DeNA Co., Ltd. 12 実験の記録を簡単に取りたい!→ W&B で実験を記録 • Configで設定したパラメータも含めて実験開始時にW&Bに保存
• 細かいTips ◦ debug 中はわざわざ記録したくない → debug中はmode="disabled"に ◦ コンテナに入り直すたびにW&Bのログインが必要 → $NETRCで指定したファイルにkeyが保存されるので破棄されない位置に指定 2
© DeNA Co., Ltd. 13 3 • hydraを用いてコードとconfigの組み合わせで実験可能に ◦ 例:python
experiments/exp000_sample/run.py exp=001 ◦ 実験のまとまりを一つのディレクトリ・コードに ▪ 例:exp000_sample/run.py ◦ ハイパーパラメータなどの変更は yaml から読み込む ▪ 例:exp000_sample/exp/001.yaml → 設定ファイルなどをコードの近くに配置することで 認知負荷が抑えられる 実験を再現可能にしたい&コードを整理したい!→ ファイルで実験管理
© DeNA Co., Ltd. 14 Configを利用する時にタイポしたくない!→dataclassの利用 • ハイパラなどの設定を辞書で定義するとタイポしや すいので dataclass
で定義してやる ◦ エディタは辞書の中まで見て補完してくれない... 4 間違い探し... dataclassでconfigを事前定義 ※ 細かい事言うとhydraで上書きするために omegaconf.DictConfig クラスを利用 (Duck Typing) https://hydra.cc/docs/tutorials/structured_config/minimal_example/
© DeNA Co., Ltd. 15 まとめ • 自作テンプレートはいいぞ ◦ 実行環境に合わせて自分だけの実験スタイルを作ろう!
https://github.com/unonao/kaggle-template
© DeNA Co., Ltd. 16