Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Kaggle役立ちアイテム紹介(入門編)
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
monnu
August 02, 2024
Research
9.1k
17
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Kaggle役立ちアイテム紹介(入門編)
2024 年 8 月 3 日開催「第2回 関東Kaggler会」の発表資料です
https://connpass.com/event/321748/
monnu
August 02, 2024
More Decks by monnu
See All by monnu
いま、生成AIにKaggleをどこまで 任せられるか — ROGIIコンペでの進め方とTips
k951286
4
1.6k
atmacup23_2nd_place.pptx.pdf
k951286
1
330
Kaggle RSNA Intracranial Aneurysm Detectionコンペ 反省会
k951286
0
990
Kaggle自然言語処理コンペ向けローカルLLM活用入門
k951286
20
5.2k
AI搭載エディタCursorの紹介と機械学習コンペでの使用レビュー
k951286
22
8.9k
Kaggle Benetechコンペ振り返り
k951286
1
1k
Kaggle NFL3コンペ振り返り
k951286
0
630
kaggle PPPMコンペ反省会
k951286
1
1.3k
kaggle Outdoorコンペ振り返り
k951286
0
3.5k
Other Decks in Research
See All in Research
Anthropic が提案する LLM の内部状態を自然言語で説明可能にした Natural Language Autoencoders / Natural Language Autoencoders Produce Unsupervised Explanations of LLM Activations
shunk031
0
240
SoftMatcha 2: 1兆語規模コーパスの超高速かつ柔らかい検索
e869120_sub
7
3.8k
秋葉原ウォーカブル基礎調査報告書
izumiyama_lab
1
110
ros2-perf-multihost: 分散システムにおける客観的なアーキテクチャ評価フレームワーク
takasehideki
0
260
SAM3を用いたコマ・吹き出しの 領域検出と分割構造からの読み順推定
kzmssk
0
130
論文紹介: Understanding Epistemic Language with a Language-augmented Bayesian Theory of Mind
hisaokatsumi
0
160
Karkada さんの論文 × 2 の紹介: (1) Closed-Form Training Dynamics Reveal Learned Features and Linear Structure in Word2Vec-like Models, (2) Symmetry in language statistics shapes the geometry of model representations
eumesy
PRO
1
740
某助成金プロジェクト採択に向けて企業研究所のアウトリーチ専任者がやったこと
afroscript
0
180
【ローカルAIに向き合う展示会vol.2】液体時間定数型モジュールを用いた オリジナルの双方向エンコーダーモデルNexteraBERT 推論速度向上検討並びにダウンストリーム評価
rikkabotan7
0
200
NLP colloquium: AI Safety Survey
kanekomasahiro
2
1.1k
AIエージェント時代のLLM-jpモデルのあるべき姿
k141303
0
630
Harness Engineering and Al Agent
kzinmr
3
2k
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Visualization
eitanlees
152
17k
Git: the NoSQL Database
bkeepers
PRO
432
67k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
390
The untapped power of vector embeddings
frankvandijk
2
1.9k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
240
Un-Boring Meetings
codingconduct
0
420
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
540
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
65k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
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を過ごしましょう! まとめ