Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Kaggle役立ちアイテム紹介(入門編)
Search
monnu
August 02, 2024
Research
16
7.2k
Kaggle役立ちアイテム紹介(入門編)
2024 年 8 月 3 日開催「第2回 関東Kaggler会」の発表資料です
https://connpass.com/event/321748/
monnu
August 02, 2024
Tweet
Share
More Decks by monnu
See All by monnu
Kaggle RSNA Intracranial Aneurysm Detectionコンペ 反省会
k951286
0
250
Kaggle自然言語処理コンペ向けローカルLLM活用入門
k951286
19
3.8k
AI搭載エディタCursorの紹介と機械学習コンペでの使用レビュー
k951286
21
8.3k
Kaggle Benetechコンペ振り返り
k951286
1
800
Kaggle NFL3コンペ振り返り
k951286
0
500
kaggle PPPMコンペ反省会
k951286
1
1.1k
kaggle Outdoorコンペ振り返り
k951286
0
3.3k
Other Decks in Research
See All in Research
Learning to (Learn at Test Time): RNNs with Expressive Hidden States
kurita
1
290
Panopticon: Advancing Any-Sensor Foundation Models for Earth Observation
satai
3
370
When Learned Data Structures Meet Computer Vision
matsui_528
1
910
20250725-bet-ai-day
cipepser
3
540
Language Models Are Implicitly Continuous
eumesy
PRO
0
340
Mamba-in-Mamba: Centralized Mamba-Cross-Scan in Tokenized Mamba Model for Hyperspectral Image Classification
satai
3
240
ドメイン知識がない領域での自然言語処理の始め方
hargon24
1
200
Minimax and Bayes Optimal Best-arm Identification: Adaptive Experimental Design for Treatment Choice
masakat0
0
200
日本語新聞記事を用いた大規模言語モデルの暗記定量化 / LLMC2025
upura
0
350
Remote sensing × Multi-modal meta survey
satai
4
620
音声感情認識技術の進展と展望
nagase
0
370
教師あり学習と強化学習で作る 最強の数学特化LLM
analokmaus
2
610
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1k
Navigating Team Friction
lara
191
16k
How to Ace a Technical Interview
jacobian
280
24k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
253
22k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Docker and Python
trallard
46
3.7k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Statistics for Hackers
jakevdp
799
230k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Transcript
Kaggle役立ちアイテム紹介(入門編) 立松 郁也(@monnu)
自己紹介 名前 : 立松 郁也 (@monnu) 仕事 : モビリティ領域でのデータサイエンティスト Kaggle
: Kaggle暦5年半 Competitions Grandmaster
自己紹介 Kaggleではテーブル、CV、NLPなど雑多に参加してます テーブル 画像 NLP 動画等 テーブル
▪ 今日はなすこと ▪ Kaggleで自分が普段お世話になっているアイテムの雑多な紹介です ▪ アイテム = サービス、ツール、Tips、良資料、良Notebook等 ▪ 注意事項
▪ 入門者の方向けな内容が多めです ▪ 主観が多分に含まれるため一例として見てもらえたらと思います はじめに
1. 開発環境編 2. 学習編 3. モデル編 4. その他tips もくじ
1. 開発環境編
▪ なるべく環境構築に時間はかけたくない ▪ Kagglerのすべきはモデルの性能向上 ▪ さっさと環境は準備して精度向上に集中したい ▪ 一方、実装の効率化に役立つツールは活用したい ▪ ChatGPTなどを使って開発を効率化できたら嬉しい
▪ 特にKaggleは試行錯誤のスピードが大事なので効率化は正義 開発環境の基本方針
▪ Google Cloud ▪ Kaggleとの親和性高いのが嬉しい ▪ Kaggle Notebookから簡単に移行可 ▪ KaggleとGoogle
Cloud Storageの連携 ▪ Kaggleやる上でのGoogle Cloudでよく使う機能 ▪ Cloud Storage FUSE : https://cloud.google.com/storage/docs/gcs-fuse?hl=ja ▪ マシンからCloud Storageをマウントできるツール ▪ データ管理、集約が楽になる ▪ スナップショット : https://cloud.google.com/compute/docs/disks/snapshots?hl=ja ▪ 一度作った環境を保存でき、別コンペでも再利用可 マシン
▪ Kaggle Docker image(& Nvidia Docker) ▪ 自分は全コンペでKaggle公式Dockerイメージを利用 ▪ https://github.com/Kaggle/docker-python
▪ 豊富なライブラリ ▪ コンペで使いそうなライブラリが十分すぎるほど入ってる ▪ 新たに環境を構築する際の時間と労力を大幅に削減 ▪ 一貫性のある環境 ▪ Kaggle Notebook環境と同じ環境を再現できる ▪ コードコンペで学習と推論の環境差分に苦しむことがない 環境構築
▪ 個人的にはCursorがおすすめ ▪ VSCodeの派生エディタでChatGPT等のLLM搭載 ▪ コードの自動生成、質疑応答が可能 → 実装が大幅に効率化 ▪ 参考資料
: AI搭載エディタCursorの紹介と機械学習コンペでの使用レビュー エディタ https://speakerdeck.com/k951286/aida-zai-eteitacursornoshao-jie-toji-jie-xue-xi-konhetenoshi-yong-rehiyu
2. 学習編
▪ PyTorch + PyTorch Lightning ▪ なぜPyTorch? ▪ 公開コードや論文はPyTorchが多いため取り入れやすい ▪
なぜPyTorch Lightning? ▪ ゼロからPyTorchの学習ループを毎回書くのはきつい ▪ Lightningでは学習ループ周りラップしてくれる ▪ WandB等の実験管理ツールを簡単に組み込める ▪ Mixed PrecisionやマルチGPU等が簡単に設定可能 パイプライン
▪ val_check_intervalオプション ▪ valを計算する頻度の設定 ▪ デフォルト1epoch毎 ▪ 例えば過学習しやすいデータ等で、0.1epoch毎にval評価などが可 ▪ 過学習前のチェックポイントを保存
▪ 下記のようにtrainerで指定するだけ Pytorch Lightningのちょっと細かい話①
▪ ModelCheckpoint機能 ▪ 学習中のモデルのcheckpointを最良の評価指標等で保存する機能 ▪ 複数評価指標がある場合も下記のように各指標のベストモデルを保存可 Pytorch Lightningのちょっと細かい話②
▪ 実験管理ツールとは? ▪ 学習曲線や評価指標など学習結果を記録、可視化するツール ▪ WandBやMlflowなどが有名 ▪ なぜ必要? ▪ どの実験が良かった、悪かったを振り返りが手軽に可能
▪ ロスの推移を見ることで、過学習等に気づきやすい ▪ GitのCommit hash等も記録されるため、実験の再現性が向上 実験管理ツール
実験管理ツールで過学習に気づけた例(BELKAコンペ) 実験管理ツール val lossが1epoch目で最小!? →1epoch未満で既に過学習しているのでは? →valのチェック頻度を増やすことでスコア向上
3. モデル編
▪ timm : https://github.com/huggingface/pytorch-image-models ▪ PyTorch用の画像認識モデル等を提供するライブラリ ▪ 幅広い事前学習済モデルをサポートし、手軽に試すことが可能 ▪ よく使うバックボーン
▪ ViT系 : MaxVit,SwinTransformer ▪ CNN系 : EfficientNet系,ConvNeXt系 ▪ 使い方のおすすめ資料 ▪ Tawaraさんの「backbone としての timm 入門」がおすすめ ▪ https://www.slideshare.net/TakujiTahara/20210817-lt-introduction-to-pytorch- image-models-as-backbone-tawara-249996209#2 画像コンペ
▪ 他の用途別ライブラリ ▪ オーグメンテーション : albumentations ▪ https://github.com/albumentations-team/albumentations ▪ 物体検出
: YOLOX ▪ https://github.com/Megvii-BaseDetection/YOLOX ▪ セグメンテーション : segmentation_models.pytorch ▪ https://github.com/qubvel-org/segmentation_models.pytorch 画像コンペ
▪ Huggingface Transformer : https://huggingface.co/docs/transformers/ja/index ▪ NLPタスクのための事前学習済みモデル等を提供するライブラリ ▪ 多様なNLPタスクに対し、最新のモデルを簡単に試せる ▪
よく使われるバックボーン ▪ DeBERTaV3系 ▪ ここ数年のNLPコンペでは一強な気がする ▪ 直近のコンペとかはLLM系も使われてる? ▪ 詳しい人教えてください🙇 NLPコンペ
▪ Trainingツールとしてのtransformers ▪ モデルだけでなくNLPタスクのTrainingツールも提供 ▪ https://huggingface.co/docs/transformers/ja/main_classes/trainer ▪ データローディング、学習、評価などの主要機能を自動化できる ▪ 実装例
: k_sさんのPPPMコンペのNotebookがシンプルでわかりやい NLPコンペ https://www.kaggle.com/code/ksork6s4/uspppm-bert-for-patents-baseline-train
▪ 系列データコンペとは? ▪ 時系列データ、センサーデータ、分子データなどのコンペ ▪ 系列データはTransformer系、1DCNN系などのモデルがよく使われる印象 ▪ 基本的には自前実装になるが、参考になりそうな公開Notebook等の紹介 系列データ
Transformer : https://www.kaggle.com/code/iafoss/rna-starter-0-186-lb ▪ Stanford Ribonanza コンペのIafossさんのNotebook ▪ シンプルなTransformerモデルの実装 系列データ
1DCNN : https://www.kaggle.com/code/ahmedelfazouan/belka-1dcnn-starter-with-all-data ▪ BELKAコンペのAHさんのNotebook ▪ TensorFlow + TPUでのシンプルな1DCONVの実装 ▪
構造がシンプルなのでTorch移行も容易。Torch版の公開Notebookもある ▪ https://www.kaggle.com/code/yyyu54/pytorch-version-belka-1dcnn-starter-with-all-data 系列データ
LSTM : https://www.kaggle.com/code/yasufuminakama/ventilator-pressure-lstm-starter ▪ Ventilator Pressure PredictionコンペのY.NakamaさんのNotebook ▪ TorchによるLSTMモデル、WandB連携等を含めたpipeline周りも参考になる 系列データ
▪ その他おすすめ資料 : https://speakerdeck.com/yu4u/kaggletexue-huxi-lie-tetanotamenoshen-ceng-xue-xi-moterinku ▪ yu4uさんの「Kaggleで学ぶ系列データのための深層学習モデリング」がおすすめ ▪ Kaggleの最近の系列データコンペの上位解法を振り返りながらモデルリング解説 系列データ
▪ EMA(Exponential Moving Average) ▪ 学習経過とともにモデルweightの加重平均を計算することで学習を安定化 ▪ timmのModelEmaV2モジュールなどで実装可能(画像モデルに限らず使用可) ▪ https://timm.fast.ai/training_modelEMA
▪ Gradient Checkpointing ▪ 学習時のGPUメモリ使用量を削減するテクニック ▪ 一部の中間層の出力を保存せず必要に応じて再計算することでメモリを節約 ▪ 計算コストは増加するものの、小さいGPUメモリでも学習が可能に ▪ timmやtransformersで簡単に設定できる(モデルによっては非対応の場合あり) ニューラルネット全般のテクニック timmの実装例 transformersの実装例
4. その他tips
▪ reduce_mem_usage関数 ▪ DataFrameのメモリ効率化の有名関数 ▪ 低い精度の型で表現できるなら精度を 落とした型を使う ▪ home creditコンペのNotebookより
https://www.kaggle.com/code/gemar tin/load-data-reduce-memory-usage 大規模データの扱い
▪ np.memmap & h5py ▪ どちらもメモリに乗り切らない大規模データを扱う際に便利 ▪ データをディスク上に保持しながら部分的にメモリにロード ▪ 個人的な使い分け
▪ memmap : 固定長配列の場合 ▪ h5py : 固定長以外、複雑な階層データ等の場合 ▪ np.packbits ▪ 大規模なブール配列を省メモリで扱える ▪ ビット配列をバイト配列に圧縮することでメモリ効率化 大規模データの扱い
▪ 高性能CPUマシンとしてのTPU Notebook ▪ CPUコア48, メモリ334 GBであり、CPUマシンとしても高スペック ▪ 大規模データの前処理等で非常に役立つ ▪
捕まらないことも多いが、動作確認済みのNotebookをcommitして放置でOK ▪ ただしTPU使わない処理だと一定時間で切られるらしい Kaggle Notebook tips
▪ 無限データセットアップロード? ▪ KaggleのDatasetはプライベートの場合、1人あたり214.75Gibの制限ある ▪ コードコンペで大量にモデルをアップする場合、制限が問題になる ▪ 一方で、Kaggle Notebookの出力ファイルは制限なし ▪
そのため以下の手順で無限にアップロード可能 1. Dataset アップロード 2. Notebookで読み込み&出力 3. 元のDataset削除 Kaggle Notebook tips Google Cloud Storageと連携 するとさらにラクに可能
▪ Papers with code : https://paperswithcode.com/sota ▪ 様々なベンチマークでのSOTA論文とその再現実装へのリンクが集約 ▪ 参加中のコンペに似たタスクのSOTAの手法、実装を手軽に調査
その他役立ちサイト・ツール https://paperswithcode.com/sota/image-classification-on-imagenet
▪ Kaggle Notebook Translation Helper : https://github.com/bilzard/kaggle-notebook-translation-helper ▪ Kaggle公開Notebookはcrome翻訳がうまくできず英語を読む必要がある ▪
bilzardさん開発のcrome拡張ツールを使うとcromeからいい感じに翻訳できる その他役立ちサイト・ツール
▪ ML contests : https://mlcontests.com/ ▪ Kaggle含めた世界中の開催中のMLコンテストの情報がまとまったサイト ▪ データの種類、締め切り、賞金、プラットフォーム等が一覧でみれる ▪
Kaggle以外のコンペも気になっている方は探してみてもいいかも? その他役立ちサイト・ツール
▪ Kaggleで自分がお世話になっているツールやtips等を雑多に紹介させて いただきました ▪ 他にもみなさんのおすすめツール等あれば教えて頂けたら嬉しいです ▪ 便利アイテムはたくさん活用し、快適なKaggle Lifeを過ごしましょう! まとめ