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
14
4.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
AI搭載エディタCursorの紹介と機械学習コンペでの使用レビュー
k951286
19
5k
Kaggle Benetechコンペ振り返り
k951286
1
610
Kaggle NFL3コンペ振り返り
k951286
0
270
kaggle PPPMコンペ反省会
k951286
0
900
kaggle Outdoorコンペ振り返り
k951286
0
2.9k
Other Decks in Research
See All in Research
尺度開発における質的研究アプローチ(自主企画シンポジウム7:認知行動療法における尺度開発のこれから)
litalicolab
0
350
2024/10/30 産総研AIセミナー発表資料
keisuke198619
1
330
論文読み会 SNLP2024 Instruction-tuned Language Models are Better Knowledge Learners. In: ACL 2024
s_mizuki_nlp
1
360
日本語医療LLM評価ベンチマークの構築と性能分析
fta98
3
650
言語と数理の交差点:テキストの埋め込みと構造のモデル化 (IBIS 2024 チュートリアル)
yukiar
3
740
snlp2024_multiheadMoE
takase
0
430
Tietovuoto Social Design Agency (SDA) -trollitehtaasta
hponka
0
2.5k
12
0325
0
190
第 2 部 11 章「大規模言語モデルの研究開発から実運用に向けて」に向けて / MLOps Book Chapter 11
upura
0
390
20240918 交通くまもとーく 未来の鉄道網編(こねくま)
trafficbrain
0
230
文化が形作る音楽推薦の消費と、その逆
kuri8ive
0
160
テキストマイニングことはじめー基本的な考え方からメディアディスコース研究への応用まで
langstat
1
120
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
It's Worth the Effort
3n
183
27k
Faster Mobile Websites
deanohume
305
30k
Happy Clients
brianwarren
98
6.7k
A designer walks into a library…
pauljervisheath
204
24k
Thoughts on Productivity
jonyablonski
67
4.3k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Automating Front-end Workflow
addyosmani
1366
200k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
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を過ごしましょう! まとめ