SlideShare a Scribd company logo
みんなが知らない
pytorh-pfn-extras
2021/06/18 第二回分析コンペLT会 オンライン
@tawatawara
自己紹介
JTC Kaggler(絶滅危惧種)
◦ 研究開発(?)職
◦ 社会人からMLを始める
Kaggle Master
◦ GMになりたい. . .
最近の活動
◦ 宇宙人と discommunication
Q. PyTorch の Training で
何を使ってますか?
Q. PyTorch の Training で何を使ってますか?
選択肢 得票数
Lightning 56
Ignite 2
pfn-extras 4
Catalyst 7
自作ライブラリ 38
その他 36
合計 143
Lightning さんの僅か 1/14!
この発表の意味…
Q. PyTorch の Training で何を使ってますか?
選択肢 投票数
Lightning 56
Ignite 2
pfn-extras 4
Catalyst 7
自作ライブラリ 38
その他 36
合計 143
自作 + その他 が半分
この人たちを pfn-extras 勢に…
pytorch-pfn-extras?
“Supplementary components to accelerate research and
development in PyTorch.” (公式レポジトリより)
◦ 独自の Trainer を持たない
◦ 基本的に training loop は自前で書く(Ignite との連携は可能)
◦ 主な機能: 学習停止の制御(Early Stopping など), ログ出力, モデルの保存
◦ 各機能を Extensions と呼ばれる Classとして実装
◦ Extensions を管理する Extensions Manager を training loop に組み込むだけで利用可
「過度な抽象化はNG」「今まで Training Tool を使ったことが無い」
という方に向いてるかも
おことわり
どういう機能があるかといったイメージだけお伝えします
◦ 詳細な使い方については説明しません
PyTorch による NN の training の基本は既知とします
◦ 生の Training Loop を書いたことがあれば問題ないです
使用例は最後に紹介する Notebook で勘弁してください
◦ GitHub に examples を用意しようと思っていた時もありました...
Start from Basic Training Loop
必要最小限 の code
◦ max_epoch だけ mini batch training を行う
◦ 重みの更新と言う意味でこれが最小限
色々足りない . . .
◦ validation set での性能確認 (+Early Stopping)
◦ 学習の経過の確認 (標準出力, log ファイル)
◦ 学習途中の model の保存
◦ validation set に対する loss/metric が良いもの
これらを自分で書くと結構大変… -> ライブラリに頼ろう!
Basic Training Loop w/ ExtensionsManager
とりあえず組み込んでみた形
Training Loop に対する変更点
① 一番外側の loop
◦ 学習の停止を manager が管理
② mini batch loop 内の with 文
◦ 基本的に 1 iteration 毎に処理を行う
◦ iteration, epoch のカウント
③ loss の reporting
◦ 内部的に値を保持
◦ 後ほど紹介する Extensions で確認できる
Basic Training Loop w/ ExtensionsManager
この時点では Extensions 無し
◦ 各 Epoch での loss が(内部的に)保持さ
れてるくらいしか違いが無い
この後
◦ Manager に Extensions を追加すること
で様々な機能を使用する
◦ Training Loop の形には基本影響しない
◦ 複雑な学習方法を loop 内で実装したりする
際にやりやすい
Extensions の追加(一例)
◦ manger.extend で追加
◦ ※manager の初期化時に渡すや
り方もあります
◦ Trigger を指定することも可能
◦ Training Loop はいじらない
Trigger: Extensions のタイミング制御
◦ 基本: IntervalTrigger
◦ N epoch 毎, N iterations 毎 を指定
◦ 多くのものは 1 epoch 毎がデフォルト
◦ 例で挙げたもの(右) もそう
◦ よく使う:値を参照する Trigger
◦ MinValueTrigger, MaxValueTrigger など
◦ 主に Model の保存(右)で活躍
◦ EarlyStoppingTrigger
◦ 文字通り Early Stopping のためのもの
◦ Manager に紐づく少し例外的な Trigger
Evaluator: validation data に対する推論
◦ eval_func を定義する必要あり
◦ unpack した mini batch を引数に
取り推論を実行する
◦ eval_func を返す関数を実装するの
がおすすめ
◦ 注意点:loss/metric の集計
◦ LogReport の起動時に集計される
◦ macro 平均になってしまう
◦ AUCなど全体で計算するものが困る
◦ 解決方法はありますが割愛
Extensions for Standard Output
◦ PrintReport : 学習過程を標準出力
◦ これが見たくて使ってるところある
◦ ProgressBar: 学習の進捗を出力
◦ 所要時間が分かりやすい
◦ 注意:Evaluator の時間を無視して
残り時間を計算している
◦ TensorBoard 使えばいいのでは
Extensions for Logging
◦ LogReport : ログファイルを Json で出力
◦ 因みに TensorBoard にも対応できる(らしい)
◦ PlotReport: loss 等のグラフを .png で出力
◦ TensorBoard とかで(略)
Extensions for snapshot
◦ 任意の object を指定して途中経過を保存
◦ Trigger を指定しない場合は 1 epoch 毎
◦ 基本的には val metric[loss] を指定した Max[Min]ValueTrigger を併用
◦ loss と metric の両方を見て保存したいなら両方追加すれば良い(以下)
色々追加した結果
Code 量がそれなりに嵩む
◦ eval_func 含めて Basic Training
Loop の 5~6倍ぐらい?
◦ Training Loop そのものは短い
◦ 量は嵩むが、Manager, Extensions,
Trigger の概念で機能拡張がされるの
で全体としてまとまる
◦ 自前で書くと Loop 内がゴチャゴチャ
するのが容易に想像出来る
ここまで
pytorch-pfn-extras とは?
◦ PyTorch の開発を促進するための補助ツール
◦ 主な機能:学習の制御、ログの出力、model の保存など
◦ 初歩的な Training Loop から乖離の少ない形で導入が出来る
◦ Extensions とそれらを統制する Manager によって実現
◦ code 量は嵩むが、様々な機能を統一概念で追加できるので全体がまとまる
◦ 細かい書き方については実例を見た方が早いかも
◦ 公式レポジトリの example
◦ pytorch-pfn-extrasが便利という話 - deoxy’s diary
◦ 【pytorch-pfn-extras+Ignite】画像分類のワークフロー解説 - ころがる狸
みんなが更に知らない
Config Systems
Config Systems?
Config File のための拡張機能
pfn-extras 使いですら知らない可能性がある
◦ そもそも公式の examples で使われていない
◦ docs も非常に簡素 (どう使うの?)
◦ LT にあたって調査したところ予想以上に便利
自己流ですが使用例をちょっとだけ紹介します
基本的な使い方(公式 docs より)
dict と list がネストしたオブジェクトを引数として初期化
◦ 例えば読み込んだ YAML ファイルを入れる(左)
◦ 格納された値には path 形式でアクセス出来る(右)
根幹機能1:別の値の参照
◦ ”@” で path を指定することで、アクセス
時に指定先の値に置換される
◦ 右の例も公式 docs より
◦ config file 内で同じ値を書くことはしばしば
あるので、地味に嬉しい機能
◦ 例:augmentation のために同じ画像サイズを
複数の場所に書く
◦ 相対パスも指定可能(右下)
根幹機能2:callable な object での置換
◦ str -> callable object の辞書を用意することで object の置換ができる
◦ 該当する `type` と同階層にあるものを引数として call される
◦ types の辞書は必要だが、get_XXX 系の関数が必要なくなる
◦ ※この例には top level のものしか入ってませんが nest した構造の中でも適用されます
二つを組み合わせると. . .?
例えば model -> optimizer ->
scheduler を cfg から直に呼べる
◦ optimizer は model.parameters(),
scheduler は optimizer を引数にとるが、
置換機能を組み合わせることで置換後の
object を引数に取れる
他の使用例
◦ dataset -> dataloader もほぼ同様
◦ ※dataset に工夫が必要かも
◦ config file 内に albumentations による
data augmentation をそのまま書ける
◦ もうオレオレ parser は要らない
◦ 前半で紹介した extensions なども全部
config にぶち込める
◦ types の 辞書が膨れ上がるけど…
◦ ほぼ定型なので、どこかに固めておけばあま
り気にならない
Kaggle Notebooks での使用例
以下を Config 内で閉じ、cfg[“XXX”] でインスタンス取得
◦ Model, Optimizer, Scheduler
◦ Dataset(albumentations 込み), DataLoader
◦ Loss, Metric
◦ ExtensionsManager, Extensions(Evaluator 以外)
https://www.kaggle.com/ttahara/seti-e-t-resnet18d-baseline
Kaggle Notebook での使用例
◦ 前半の例でかなり場所を取っていた Manager,
Extensions は全て config file 内に
◦ 別の場所の記述が増えるもののスッキリ
◦ ※ここには記載してませんが、config_types や
config file(YAML) はかなり記述量が増えます
まとめ
pytorch-pfn-extras を紹介
◦ 様々な機能を manager と extensions の枠組みで追加できる
◦ 素の Training Loop をほぼ崩さないので、初学者には優しい?
知られざる Config Systems の紹介
◦ get_XXX 関数を撲滅し、Training を行う関数が更にスッキリ
一見良さそうだが…?
◦ システム的に複雑なことをするのは自前で頑張る必要あり
◦ 複数のGPUでの並列学習, AMP Training, Gradient Accumulation …

More Related Content

What's hot

工学系大学4年生のための論文の読み方
工学系大学4年生のための論文の読み方工学系大学4年生のための論文の読み方
工学系大学4年生のための論文の読み方
ychtanaka
 
HiPPO/S4解説
HiPPO/S4解説HiPPO/S4解説
HiPPO/S4解説
Morpho, Inc.
 
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Preferred Networks
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
Ken'ichi Matsui
 
【DL輪読会】An Image is Worth One Word: Personalizing Text-to-Image Generation usi...
【DL輪読会】An Image is Worth One Word: Personalizing Text-to-Image Generation usi...【DL輪読会】An Image is Worth One Word: Personalizing Text-to-Image Generation usi...
【DL輪読会】An Image is Worth One Word: Personalizing Text-to-Image Generation usi...
Deep Learning JP
 
【DL輪読会】DiffRF: Rendering-guided 3D Radiance Field Diffusion [N. Muller+ CVPR2...
【DL輪読会】DiffRF: Rendering-guided 3D Radiance Field Diffusion [N. Muller+ CVPR2...【DL輪読会】DiffRF: Rendering-guided 3D Radiance Field Diffusion [N. Muller+ CVPR2...
【DL輪読会】DiffRF: Rendering-guided 3D Radiance Field Diffusion [N. Muller+ CVPR2...
Deep Learning JP
 
CV分野におけるサーベイ方法
CV分野におけるサーベイ方法CV分野におけるサーベイ方法
CV分野におけるサーベイ方法
Hirokatsu Kataoka
 
畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化
Yusuke Uchida
 
近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer
Yusuke Uchida
 
BERT入門
BERT入門BERT入門
BERT入門
Ken'ichi Matsui
 
【DL輪読会】Visual Classification via Description from Large Language Models (ICLR...
【DL輪読会】Visual Classification via Description from Large Language Models (ICLR...【DL輪読会】Visual Classification via Description from Large Language Models (ICLR...
【DL輪読会】Visual Classification via Description from Large Language Models (ICLR...
Deep Learning JP
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
mlm_kansai
 
【DL輪読会】"Secrets of RLHF in Large Language Models Part I: PPO"
【DL輪読会】"Secrets of RLHF in Large Language Models Part I: PPO"【DL輪読会】"Secrets of RLHF in Large Language Models Part I: PPO"
【DL輪読会】"Secrets of RLHF in Large Language Models Part I: PPO"
Deep Learning JP
 
【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ
Deep Learning JP
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
joisino
 
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII
 
時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?
Fumihiko Takahashi
 
ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
Yahoo!デベロッパーネットワーク
 
Surveyから始まる研究者への道 - Stand on the shoulders of giants -
Surveyから始まる研究者への道 - Stand on the shoulders of giants -Surveyから始まる研究者への道 - Stand on the shoulders of giants -
Surveyから始まる研究者への道 - Stand on the shoulders of giants -
諒介 荒木
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
Arithmer Inc.
 

What's hot (20)

工学系大学4年生のための論文の読み方
工学系大学4年生のための論文の読み方工学系大学4年生のための論文の読み方
工学系大学4年生のための論文の読み方
 
HiPPO/S4解説
HiPPO/S4解説HiPPO/S4解説
HiPPO/S4解説
 
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
Optuna Dashboardの紹介と設計解説 - 2022/12/10 Optuna Meetup #2
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
 
【DL輪読会】An Image is Worth One Word: Personalizing Text-to-Image Generation usi...
【DL輪読会】An Image is Worth One Word: Personalizing Text-to-Image Generation usi...【DL輪読会】An Image is Worth One Word: Personalizing Text-to-Image Generation usi...
【DL輪読会】An Image is Worth One Word: Personalizing Text-to-Image Generation usi...
 
【DL輪読会】DiffRF: Rendering-guided 3D Radiance Field Diffusion [N. Muller+ CVPR2...
【DL輪読会】DiffRF: Rendering-guided 3D Radiance Field Diffusion [N. Muller+ CVPR2...【DL輪読会】DiffRF: Rendering-guided 3D Radiance Field Diffusion [N. Muller+ CVPR2...
【DL輪読会】DiffRF: Rendering-guided 3D Radiance Field Diffusion [N. Muller+ CVPR2...
 
CV分野におけるサーベイ方法
CV分野におけるサーベイ方法CV分野におけるサーベイ方法
CV分野におけるサーベイ方法
 
畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化
 
近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer
 
BERT入門
BERT入門BERT入門
BERT入門
 
【DL輪読会】Visual Classification via Description from Large Language Models (ICLR...
【DL輪読会】Visual Classification via Description from Large Language Models (ICLR...【DL輪読会】Visual Classification via Description from Large Language Models (ICLR...
【DL輪読会】Visual Classification via Description from Large Language Models (ICLR...
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
 
【DL輪読会】"Secrets of RLHF in Large Language Models Part I: PPO"
【DL輪読会】"Secrets of RLHF in Large Language Models Part I: PPO"【DL輪読会】"Secrets of RLHF in Large Language Models Part I: PPO"
【DL輪読会】"Secrets of RLHF in Large Language Models Part I: PPO"
 
【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
 
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
 
時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?
 
ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
 
Surveyから始まる研究者への道 - Stand on the shoulders of giants -
Surveyから始まる研究者への道 - Stand on the shoulders of giants -Surveyから始まる研究者への道 - Stand on the shoulders of giants -
Surveyから始まる研究者への道 - Stand on the shoulders of giants -
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
 

Similar to みんなが知らない pytorch-pfn-extras

Introductionof taskflow
Introductionof taskflowIntroductionof taskflow
Introductionof taskflowharubelle
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
ManaMurakami1
 
Anaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみたAnaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみた
Yosuke Onoue
 
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)
Kenta Oono
 
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
Akira Shibata
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
ManaMurakami1
 
Zenkoku78
Zenkoku78Zenkoku78
Zenkoku78
Takuma Usui
 
grn_ts の紹介 - Groonga Meatup 2015
grn_ts の紹介 - Groonga Meatup 2015grn_ts の紹介 - Groonga Meatup 2015
grn_ts の紹介 - Groonga Meatup 2015
s5yata
 
TensorFlowを使ってテキストをクラス分類してみた
TensorFlowを使ってテキストをクラス分類してみたTensorFlowを使ってテキストをクラス分類してみた
TensorFlowを使ってテキストをクラス分類してみた
Yuya Kato
 
Tests and bugreports
Tests and bugreportsTests and bugreports
Tests and bugreports
Mitsutoshi Nakano
 
Development and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and mafDevelopment and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and maf
Kenta Oono
 
Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようKenji NAKAGAKI
 
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門
ryos36
 
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
Preferred Networks
 
TripleO Deep Dive
TripleO Deep DiveTripleO Deep Dive
TripleO Deep Dive
Takashi Kajinami
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門
kashew_nuts
 
20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT
Kohei KaiGai
 
Tuning, etc.
Tuning, etc.Tuning, etc.
Tuning, etc.
Hiroshi Watanabe
 
S02 t2 my_historyofpythonlearning
S02 t2 my_historyofpythonlearningS02 t2 my_historyofpythonlearning
S02 t2 my_historyofpythonlearning
Takeshi Akutsu
 

Similar to みんなが知らない pytorch-pfn-extras (20)

Introductionof taskflow
Introductionof taskflowIntroductionof taskflow
Introductionof taskflow
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正前 typoあり)」
 
Anaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみたAnaconda & NumbaPro 使ってみた
Anaconda & NumbaPro 使ってみた
 
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)
 
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
大規模言語モデル開発を支える分散学習技術 - 東京工業大学横田理央研究室の藤井一喜さん
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
 
Runtime c++editing
Runtime c++editingRuntime c++editing
Runtime c++editing
 
Zenkoku78
Zenkoku78Zenkoku78
Zenkoku78
 
grn_ts の紹介 - Groonga Meatup 2015
grn_ts の紹介 - Groonga Meatup 2015grn_ts の紹介 - Groonga Meatup 2015
grn_ts の紹介 - Groonga Meatup 2015
 
TensorFlowを使ってテキストをクラス分類してみた
TensorFlowを使ってテキストをクラス分類してみたTensorFlowを使ってテキストをクラス分類してみた
TensorFlowを使ってテキストをクラス分類してみた
 
Tests and bugreports
Tests and bugreportsTests and bugreports
Tests and bugreports
 
Development and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and mafDevelopment and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and maf
 
Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
 
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門
 
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
続・PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜 #2
 
TripleO Deep Dive
TripleO Deep DiveTripleO Deep Dive
TripleO Deep Dive
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門
 
20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT
 
Tuning, etc.
Tuning, etc.Tuning, etc.
Tuning, etc.
 
S02 t2 my_historyofpythonlearning
S02 t2 my_historyofpythonlearningS02 t2 my_historyofpythonlearning
S02 t2 my_historyofpythonlearning
 

Recently uploaded

FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 

Recently uploaded (16)

FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 

みんなが知らない pytorch-pfn-extras

  • 2. 自己紹介 JTC Kaggler(絶滅危惧種) ◦ 研究開発(?)職 ◦ 社会人からMLを始める Kaggle Master ◦ GMになりたい. . . 最近の活動 ◦ 宇宙人と discommunication
  • 3. Q. PyTorch の Training で 何を使ってますか?
  • 4. Q. PyTorch の Training で何を使ってますか? 選択肢 得票数 Lightning 56 Ignite 2 pfn-extras 4 Catalyst 7 自作ライブラリ 38 その他 36 合計 143 Lightning さんの僅か 1/14! この発表の意味…
  • 5. Q. PyTorch の Training で何を使ってますか? 選択肢 投票数 Lightning 56 Ignite 2 pfn-extras 4 Catalyst 7 自作ライブラリ 38 その他 36 合計 143 自作 + その他 が半分 この人たちを pfn-extras 勢に…
  • 6. pytorch-pfn-extras? “Supplementary components to accelerate research and development in PyTorch.” (公式レポジトリより) ◦ 独自の Trainer を持たない ◦ 基本的に training loop は自前で書く(Ignite との連携は可能) ◦ 主な機能: 学習停止の制御(Early Stopping など), ログ出力, モデルの保存 ◦ 各機能を Extensions と呼ばれる Classとして実装 ◦ Extensions を管理する Extensions Manager を training loop に組み込むだけで利用可 「過度な抽象化はNG」「今まで Training Tool を使ったことが無い」 という方に向いてるかも
  • 7. おことわり どういう機能があるかといったイメージだけお伝えします ◦ 詳細な使い方については説明しません PyTorch による NN の training の基本は既知とします ◦ 生の Training Loop を書いたことがあれば問題ないです 使用例は最後に紹介する Notebook で勘弁してください ◦ GitHub に examples を用意しようと思っていた時もありました...
  • 8. Start from Basic Training Loop 必要最小限 の code ◦ max_epoch だけ mini batch training を行う ◦ 重みの更新と言う意味でこれが最小限 色々足りない . . . ◦ validation set での性能確認 (+Early Stopping) ◦ 学習の経過の確認 (標準出力, log ファイル) ◦ 学習途中の model の保存 ◦ validation set に対する loss/metric が良いもの これらを自分で書くと結構大変… -> ライブラリに頼ろう!
  • 9. Basic Training Loop w/ ExtensionsManager とりあえず組み込んでみた形 Training Loop に対する変更点 ① 一番外側の loop ◦ 学習の停止を manager が管理 ② mini batch loop 内の with 文 ◦ 基本的に 1 iteration 毎に処理を行う ◦ iteration, epoch のカウント ③ loss の reporting ◦ 内部的に値を保持 ◦ 後ほど紹介する Extensions で確認できる
  • 10. Basic Training Loop w/ ExtensionsManager この時点では Extensions 無し ◦ 各 Epoch での loss が(内部的に)保持さ れてるくらいしか違いが無い この後 ◦ Manager に Extensions を追加すること で様々な機能を使用する ◦ Training Loop の形には基本影響しない ◦ 複雑な学習方法を loop 内で実装したりする 際にやりやすい
  • 11. Extensions の追加(一例) ◦ manger.extend で追加 ◦ ※manager の初期化時に渡すや り方もあります ◦ Trigger を指定することも可能 ◦ Training Loop はいじらない
  • 12. Trigger: Extensions のタイミング制御 ◦ 基本: IntervalTrigger ◦ N epoch 毎, N iterations 毎 を指定 ◦ 多くのものは 1 epoch 毎がデフォルト ◦ 例で挙げたもの(右) もそう ◦ よく使う:値を参照する Trigger ◦ MinValueTrigger, MaxValueTrigger など ◦ 主に Model の保存(右)で活躍 ◦ EarlyStoppingTrigger ◦ 文字通り Early Stopping のためのもの ◦ Manager に紐づく少し例外的な Trigger
  • 13. Evaluator: validation data に対する推論 ◦ eval_func を定義する必要あり ◦ unpack した mini batch を引数に 取り推論を実行する ◦ eval_func を返す関数を実装するの がおすすめ ◦ 注意点:loss/metric の集計 ◦ LogReport の起動時に集計される ◦ macro 平均になってしまう ◦ AUCなど全体で計算するものが困る ◦ 解決方法はありますが割愛
  • 14. Extensions for Standard Output ◦ PrintReport : 学習過程を標準出力 ◦ これが見たくて使ってるところある ◦ ProgressBar: 学習の進捗を出力 ◦ 所要時間が分かりやすい ◦ 注意:Evaluator の時間を無視して 残り時間を計算している ◦ TensorBoard 使えばいいのでは
  • 15. Extensions for Logging ◦ LogReport : ログファイルを Json で出力 ◦ 因みに TensorBoard にも対応できる(らしい) ◦ PlotReport: loss 等のグラフを .png で出力 ◦ TensorBoard とかで(略)
  • 16. Extensions for snapshot ◦ 任意の object を指定して途中経過を保存 ◦ Trigger を指定しない場合は 1 epoch 毎 ◦ 基本的には val metric[loss] を指定した Max[Min]ValueTrigger を併用 ◦ loss と metric の両方を見て保存したいなら両方追加すれば良い(以下)
  • 17. 色々追加した結果 Code 量がそれなりに嵩む ◦ eval_func 含めて Basic Training Loop の 5~6倍ぐらい? ◦ Training Loop そのものは短い ◦ 量は嵩むが、Manager, Extensions, Trigger の概念で機能拡張がされるの で全体としてまとまる ◦ 自前で書くと Loop 内がゴチャゴチャ するのが容易に想像出来る
  • 18. ここまで pytorch-pfn-extras とは? ◦ PyTorch の開発を促進するための補助ツール ◦ 主な機能:学習の制御、ログの出力、model の保存など ◦ 初歩的な Training Loop から乖離の少ない形で導入が出来る ◦ Extensions とそれらを統制する Manager によって実現 ◦ code 量は嵩むが、様々な機能を統一概念で追加できるので全体がまとまる ◦ 細かい書き方については実例を見た方が早いかも ◦ 公式レポジトリの example ◦ pytorch-pfn-extrasが便利という話 - deoxy’s diary ◦ 【pytorch-pfn-extras+Ignite】画像分類のワークフロー解説 - ころがる狸
  • 20. Config Systems? Config File のための拡張機能 pfn-extras 使いですら知らない可能性がある ◦ そもそも公式の examples で使われていない ◦ docs も非常に簡素 (どう使うの?) ◦ LT にあたって調査したところ予想以上に便利 自己流ですが使用例をちょっとだけ紹介します
  • 21. 基本的な使い方(公式 docs より) dict と list がネストしたオブジェクトを引数として初期化 ◦ 例えば読み込んだ YAML ファイルを入れる(左) ◦ 格納された値には path 形式でアクセス出来る(右)
  • 22. 根幹機能1:別の値の参照 ◦ ”@” で path を指定することで、アクセス 時に指定先の値に置換される ◦ 右の例も公式 docs より ◦ config file 内で同じ値を書くことはしばしば あるので、地味に嬉しい機能 ◦ 例:augmentation のために同じ画像サイズを 複数の場所に書く ◦ 相対パスも指定可能(右下)
  • 23. 根幹機能2:callable な object での置換 ◦ str -> callable object の辞書を用意することで object の置換ができる ◦ 該当する `type` と同階層にあるものを引数として call される ◦ types の辞書は必要だが、get_XXX 系の関数が必要なくなる ◦ ※この例には top level のものしか入ってませんが nest した構造の中でも適用されます
  • 24. 二つを組み合わせると. . .? 例えば model -> optimizer -> scheduler を cfg から直に呼べる ◦ optimizer は model.parameters(), scheduler は optimizer を引数にとるが、 置換機能を組み合わせることで置換後の object を引数に取れる
  • 25. 他の使用例 ◦ dataset -> dataloader もほぼ同様 ◦ ※dataset に工夫が必要かも ◦ config file 内に albumentations による data augmentation をそのまま書ける ◦ もうオレオレ parser は要らない ◦ 前半で紹介した extensions なども全部 config にぶち込める ◦ types の 辞書が膨れ上がるけど… ◦ ほぼ定型なので、どこかに固めておけばあま り気にならない
  • 26. Kaggle Notebooks での使用例 以下を Config 内で閉じ、cfg[“XXX”] でインスタンス取得 ◦ Model, Optimizer, Scheduler ◦ Dataset(albumentations 込み), DataLoader ◦ Loss, Metric ◦ ExtensionsManager, Extensions(Evaluator 以外) https://www.kaggle.com/ttahara/seti-e-t-resnet18d-baseline
  • 27. Kaggle Notebook での使用例 ◦ 前半の例でかなり場所を取っていた Manager, Extensions は全て config file 内に ◦ 別の場所の記述が増えるもののスッキリ ◦ ※ここには記載してませんが、config_types や config file(YAML) はかなり記述量が増えます
  • 28. まとめ pytorch-pfn-extras を紹介 ◦ 様々な機能を manager と extensions の枠組みで追加できる ◦ 素の Training Loop をほぼ崩さないので、初学者には優しい? 知られざる Config Systems の紹介 ◦ get_XXX 関数を撲滅し、Training を行う関数が更にスッキリ 一見良さそうだが…? ◦ システム的に複雑なことをするのは自前で頑張る必要あり ◦ 複数のGPUでの並列学習, AMP Training, Gradient Accumulation …