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
4
1.9k
MLコンペ実験テンプレートを作ろう!
Kaggle GMに学ぶ実験管理 ~2025 spring~ での登壇資料です
kami
March 13, 2025
Tweet
Share
More Decks by kami
See All by kami
JSAI2025 RecSysChallenge2024 優勝報告
unonao
1
720
RecSys2024 参加報告
unonao
1
390
睡眠コンペ 1st place solution
unonao
3
3k
N=1 の推薦系コンペの戦い方
unonao
5
2.5k
Kaggle 過去コンペまとめ Image Matching Challenge 2023
unonao
0
1.3k
atmaCup #16: 1st place solution + 取り組み方振り返り
unonao
1
1k
RecSys23参加報告:推薦システムに関する最新研究
unonao
1
990
#15 atmaCup 振り返り& 1st place solution
unonao
1
1.5k
Featured
See All Featured
Odyssey Design
rkendrick25
PRO
0
460
How to build a perfect <img>
jonoalderson
1
4.8k
What does AI have to do with Human Rights?
axbom
PRO
0
1.9k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
2
3.9k
The SEO identity crisis: Don't let AI make you average
varn
0
47
Product Roadmaps are Hard
iamctodd
PRO
55
12k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Balancing Empowerment & Direction
lara
5
840
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
370
AI: The stuff that nobody shows you
jnunemaker
PRO
1
160
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.1k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
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