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
Kaggle役立ちアイテム紹介(入門編)
Search
tatematsu
August 02, 2024
Research
15
5.6k
Kaggle役立ちアイテム紹介(入門編)
2024 年 8 月 3 日開催「第2回 関東Kaggler会」の発表資料です
https://connpass.com/event/321748/
tatematsu
August 02, 2024
Tweet
Share
More Decks by tatematsu
See All by tatematsu
Kaggle自然言語処理コンペ向けローカルLLM活用入門
k951286
13
1.6k
AI搭載エディタCursorの紹介と機械学習コンペでの使用レビュー
k951286
20
7.3k
Kaggle Benetechコンペ振り返り
k951286
1
710
Kaggle NFL3コンペ振り返り
k951286
0
350
kaggle PPPMコンペ反省会
k951286
0
1k
kaggle Outdoorコンペ振り返り
k951286
0
3k
Other Decks in Research
See All in Research
アプリケーションから知るモデルマージ
maguro27
0
310
コーパスを丸呑みしたモデルから言語の何がわかるか
eumesy
PRO
11
3.4k
Remote Sensing Vision-Language Foundation Models without Annotations via Ground Remote Alignment
satai
3
270
言語モデルLUKEを経済の知識に特化させたモデル「UBKE-LUKE」について
petter0201
0
320
国際会議ACL2024参加報告
chemical_tree
1
470
Weekly AI Agents News! 12月号 論文のアーカイブ
masatoto
0
280
20241226_くまもと公共交通新時代シンポジウム
trafficbrain
0
500
Sosiaalisen median katsaus 03/2025 + tekoäly
hponka
0
660
VAGeo: View-specific Attention for Cross-View Object Geo-Localization
satai
3
180
RapidPen: AIエージェントによるペネトレーションテスト 初期侵入全自動化の研究
laysakura
0
290
言語モデルの内部機序:解析と解釈
eumesy
PRO
34
15k
Pix2Poly: A Sequence Prediction Method for End-to-end Polygonal Building Footprint Extraction from Remote Sensing Imagery
satai
3
240
Featured
See All Featured
Building an army of robots
kneath
304
45k
Building Flexible Design Systems
yeseniaperezcruz
329
38k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.5k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.7k
Designing for humans not robots
tammielis
252
25k
Scaling GitHub
holman
459
140k
Building a Modern Day E-commerce SEO Strategy
aleyda
40
7.2k
GraphQLの誤解/rethinking-graphql
sonatard
71
10k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
19
1.1k
Optimizing for Happiness
mojombo
377
70k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.2k
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を過ごしましょう! まとめ