SlideShare a Scribd company logo
最近思った機械学習(PyTorch)
のベストプラクティス
1
2019年11月13日 みんなのPython勉強会
#51
Masato Fujitake(@Swall0wTech)
自己紹介 2
名前: つばめ
(Masato FUJITAKE)
Twitter : @Swall0wTech
専攻:Computer Vision(元ロボティクス
言語:c言語、C++,アセンブリ…
Python:画像処理、機械学習等
深層学習を始めて早4,5年...
プロトタイプの作成に楽なPyTorchに行き着
いた...
3
PyTorchとは
・Python向けのオープンソース機械学習ライブラリ
(Tensorflowとの2大巨頭フレームワークの1つ)
・FacebookのAI研究チームと大学が開発
・研究領域から開発されているので,最新の論文の実装が多く公開されている.
4
リポジトリの数がだいぶ多くなった
https://paperswithcode.com/trends
5
深層学習研究の課題
•モデル以外の実装が多く大変
•訓練ループ
•評価
•ロギング
•実験管理が大変
•何のパラメータ変更した時の結果なのか
•実験変更時の比較
6
PyTorch lightning
Comet.ml
実装の簡素化(PyTorch-lightning)
PyTorchでの開発スピードを爆速にしてくれる!
7
青いところの領域だけを
実装すれば,後はよしな
にやってくれる!
• データセットアップ
• モデル
• サンプリング
• 1バッチあたりの訓練
• 1バッチあたりの評価
• 評価終わりの処理
シンプル例
class CoolSystem(pl.LightningModule):
def __init__(self):
super(CoolSystem, self).__init__()
# not the best model...
self.l1 = torch.nn.Linear(28 * 28, 10)
def forward(self,x):
return torch.relu(self.l1(x.view(x.size(0),-1)))
def training_step(self,batch,batch_nb):
# REQUIRED
x, y = batch
y_hat = self.forward(x)
loss =F.cross_entropy(y_hat, y)
tensorboard_logs = {'train_loss':loss}
return {'loss':loss,'log':tensorboard_logs}
@pl.data_loader
def train_dataloader(self):
# REQUIRED
return DataLoader(
MNIST(os.getcwd(), train=True, download=True, transform=transforms.ToTensor()), batch_size=32)
8
from pytorch_lightning import Trainer
model = CoolSystem()
# most basic trainer, uses good defaults
trainer = Trainer()
trainer.fit(model)
ロギングとかも勝手にやってくれる 9
おすすめ機能
•Trainerにあるデバッグ機能
•Train, Val, Testを1バッチのみ
ループしてくれる
•16bit Mixed-precisionで高速化
10
# DEFAULT
trainer = Trainer(fast_dev_run=True)
実験管理を楽に
実験では1つづつ要素を変えて,
何が影響するのかを確認する.
→変更ごとに実験管理が必要
11
以前はネ申エクエルで管理していた!!
今はComet.mlにお世話に
機械学習のGithub化
12
何ができるのか
•差分が取れる
•自動でロギングされる
13
2つの実験の比較 14
使い方
既存のコードに数行付け足すだけ
15
まとめ
深層学習開発での課題
→ツールに頼りましょう!
•モデル以外の実装が大変
•PyTorch-lightning
•実験管理が大変
•Comet.ml
•似たようなものにmlflowもある
16

More Related Content

What's hot

GAN(と強化学習との関係)
GAN(と強化学習との関係)GAN(と強化学習との関係)
GAN(と強化学習との関係)
Masahiro Suzuki
 
Deeplearning輪読会
Deeplearning輪読会Deeplearning輪読会
Deeplearning輪読会
正志 坪坂
 
実践多クラス分類 Kaggle Ottoから学んだこと
実践多クラス分類 Kaggle Ottoから学んだこと実践多クラス分類 Kaggle Ottoから学んだこと
実践多クラス分類 Kaggle Ottoから学んだこと
nishio
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
mlm_kansai
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
Sho Tatsuno
 
時系列分析による異常検知入門
時系列分析による異常検知入門時系列分析による異常検知入門
時系列分析による異常検知入門Yohei Sato
 
You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話
You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話
You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話
Yusuke Uchida
 
【DL輪読会】Flamingo: a Visual Language Model for Few-Shot Learning 画像×言語の大規模基盤モ...
【DL輪読会】Flamingo: a Visual Language Model for Few-Shot Learning   画像×言語の大規模基盤モ...【DL輪読会】Flamingo: a Visual Language Model for Few-Shot Learning   画像×言語の大規模基盤モ...
【DL輪読会】Flamingo: a Visual Language Model for Few-Shot Learning 画像×言語の大規模基盤モ...
Deep Learning JP
 
[DL輪読会]YOLOv4: Optimal Speed and Accuracy of Object Detection
[DL輪読会]YOLOv4: Optimal Speed and Accuracy of Object Detection[DL輪読会]YOLOv4: Optimal Speed and Accuracy of Object Detection
[DL輪読会]YOLOv4: Optimal Speed and Accuracy of Object Detection
Deep Learning JP
 
【DL輪読会】Flow Matching for Generative Modeling
【DL輪読会】Flow Matching for Generative Modeling【DL輪読会】Flow Matching for Generative Modeling
【DL輪読会】Flow Matching for Generative Modeling
Deep Learning JP
 
SSD: Single Shot MultiBox Detector (ECCV2016)
SSD: Single Shot MultiBox Detector (ECCV2016)SSD: Single Shot MultiBox Detector (ECCV2016)
SSD: Single Shot MultiBox Detector (ECCV2016)
Takanori Ogata
 
0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)
MasanoriSuganuma
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
joisino
 
Attention-Guided GANについて
Attention-Guided GANについてAttention-Guided GANについて
Attention-Guided GANについて
yohei okawa
 
【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ
Deep Learning JP
 
[DL輪読会]NVAE: A Deep Hierarchical Variational Autoencoder
[DL輪読会]NVAE: A Deep Hierarchical Variational Autoencoder[DL輪読会]NVAE: A Deep Hierarchical Variational Autoencoder
[DL輪読会]NVAE: A Deep Hierarchical Variational Autoencoder
Deep Learning JP
 
ResNetの仕組み
ResNetの仕組みResNetの仕組み
ResNetの仕組み
Kota Nagasato
 
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
Kosuke Shinoda
 
BERT+XLNet+RoBERTa
BERT+XLNet+RoBERTaBERT+XLNet+RoBERTa
BERT+XLNet+RoBERTa
禎晃 山崎
 
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向
ohken
 

What's hot (20)

GAN(と強化学習との関係)
GAN(と強化学習との関係)GAN(と強化学習との関係)
GAN(と強化学習との関係)
 
Deeplearning輪読会
Deeplearning輪読会Deeplearning輪読会
Deeplearning輪読会
 
実践多クラス分類 Kaggle Ottoから学んだこと
実践多クラス分類 Kaggle Ottoから学んだこと実践多クラス分類 Kaggle Ottoから学んだこと
実践多クラス分類 Kaggle Ottoから学んだこと
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
 
猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
 
時系列分析による異常検知入門
時系列分析による異常検知入門時系列分析による異常検知入門
時系列分析による異常検知入門
 
You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話
You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話
You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話
 
【DL輪読会】Flamingo: a Visual Language Model for Few-Shot Learning 画像×言語の大規模基盤モ...
【DL輪読会】Flamingo: a Visual Language Model for Few-Shot Learning   画像×言語の大規模基盤モ...【DL輪読会】Flamingo: a Visual Language Model for Few-Shot Learning   画像×言語の大規模基盤モ...
【DL輪読会】Flamingo: a Visual Language Model for Few-Shot Learning 画像×言語の大規模基盤モ...
 
[DL輪読会]YOLOv4: Optimal Speed and Accuracy of Object Detection
[DL輪読会]YOLOv4: Optimal Speed and Accuracy of Object Detection[DL輪読会]YOLOv4: Optimal Speed and Accuracy of Object Detection
[DL輪読会]YOLOv4: Optimal Speed and Accuracy of Object Detection
 
【DL輪読会】Flow Matching for Generative Modeling
【DL輪読会】Flow Matching for Generative Modeling【DL輪読会】Flow Matching for Generative Modeling
【DL輪読会】Flow Matching for Generative Modeling
 
SSD: Single Shot MultiBox Detector (ECCV2016)
SSD: Single Shot MultiBox Detector (ECCV2016)SSD: Single Shot MultiBox Detector (ECCV2016)
SSD: Single Shot MultiBox Detector (ECCV2016)
 
0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)0から理解するニューラルネットアーキテクチャサーチ(NAS)
0から理解するニューラルネットアーキテクチャサーチ(NAS)
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
 
Attention-Guided GANについて
Attention-Guided GANについてAttention-Guided GANについて
Attention-Guided GANについて
 
【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ
 
[DL輪読会]NVAE: A Deep Hierarchical Variational Autoencoder
[DL輪読会]NVAE: A Deep Hierarchical Variational Autoencoder[DL輪読会]NVAE: A Deep Hierarchical Variational Autoencoder
[DL輪読会]NVAE: A Deep Hierarchical Variational Autoencoder
 
ResNetの仕組み
ResNetの仕組みResNetの仕組み
ResNetの仕組み
 
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
 
BERT+XLNet+RoBERTa
BERT+XLNet+RoBERTaBERT+XLNet+RoBERTa
BERT+XLNet+RoBERTa
 
最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向最適輸送の計算アルゴリズムの研究動向
最適輸送の計算アルゴリズムの研究動向
 

Similar to 最近思った機械学習(PyTorch)のベストプラクティス

Python エンジニアの作り方 2011.08 #pyconjp
Python エンジニアの作り方 2011.08 #pyconjpPython エンジニアの作り方 2011.08 #pyconjp
Python エンジニアの作り方 2011.08 #pyconjpTakeshi Komiya
 
Pythonを使った機械学習の学習
Pythonを使った機械学習の学習Pythonを使った機械学習の学習
Pythonを使った機械学習の学習
Kimikazu Kato
 
S08 t0 orientation
S08 t0 orientationS08 t0 orientation
S08 t0 orientation
Takeshi Akutsu
 
From Scratch, let's start Deep Learning with Python (plus Text Processing, pr...
From Scratch, let's start Deep Learning with Python (plus Text Processing, pr...From Scratch, let's start Deep Learning with Python (plus Text Processing, pr...
From Scratch, let's start Deep Learning with Python (plus Text Processing, pr...
Kiyoshi Ogawa
 
Pythonで自動化した話1
Pythonで自動化した話1Pythonで自動化した話1
Pythonで自動化した話1
Masato Fujitake
 
Pythonでターミナルに画像表示
Pythonでターミナルに画像表示Pythonでターミナルに画像表示
Pythonでターミナルに画像表示
Masato Fujitake
 
弁理士が知っておきたいPython①
弁理士が知っておきたいPython①弁理士が知っておきたいPython①
弁理士が知っておきたいPython①
Tajima Ryosuke
 
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトPython界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクト
Tetsuya Morimoto
 
20230216_Python機械学習プログラミング.pdf
20230216_Python機械学習プログラミング.pdf20230216_Python機械学習プログラミング.pdf
20230216_Python機械学習プログラミング.pdf
Shintaro Fukushima
 
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
Yutaka Kato
 
S06 t4 wrapup
S06 t4 wrapupS06 t4 wrapup
S06 t4 wrapup
Takeshi Akutsu
 
正しいプログラミング言語の覚え方
正しいプログラミング言語の覚え方正しいプログラミング言語の覚え方
正しいプログラミング言語の覚え方
Kimikazu Kato
 
210526 Power Automate Desktop Python
210526 Power Automate Desktop Python210526 Power Automate Desktop Python
210526 Power Automate Desktop Python
Takuya Nishimoto
 
C言語講習会資料(前半)
C言語講習会資料(前半)C言語講習会資料(前半)
C言語講習会資料(前半)
Yuki Sako
 
Pythonとベイズ統計
Pythonとベイズ統計Pythonとベイズ統計
Pythonとベイズ統計
Hirofumi Watanabe
 
ゼロから学ぶPython勉強会
ゼロから学ぶPython勉強会ゼロから学ぶPython勉強会
ゼロから学ぶPython勉強会
sekikazu
 
Python入門者の集い #6 Lightning Talk
Python入門者の集い #6 Lightning Talk Python入門者の集い #6 Lightning Talk
Python入門者の集い #6 Lightning Talk
Katayanagi Nobuko
 
「Python 機械学習プログラミング」 の挫折しない読み方
「Python 機械学習プログラミング」の挫折しない読み方「Python 機械学習プログラミング」の挫折しない読み方
「Python 機械学習プログラミング」 の挫折しない読み方
Hiroki Yamamoto
 

Similar to 最近思った機械学習(PyTorch)のベストプラクティス (20)

Python エンジニアの作り方 2011.08 #pyconjp
Python エンジニアの作り方 2011.08 #pyconjpPython エンジニアの作り方 2011.08 #pyconjp
Python エンジニアの作り方 2011.08 #pyconjp
 
Pythonを使った機械学習の学習
Pythonを使った機械学習の学習Pythonを使った機械学習の学習
Pythonを使った機械学習の学習
 
S08 t0 orientation
S08 t0 orientationS08 t0 orientation
S08 t0 orientation
 
Why python
Why pythonWhy python
Why python
 
From Scratch, let's start Deep Learning with Python (plus Text Processing, pr...
From Scratch, let's start Deep Learning with Python (plus Text Processing, pr...From Scratch, let's start Deep Learning with Python (plus Text Processing, pr...
From Scratch, let's start Deep Learning with Python (plus Text Processing, pr...
 
Pythonで自動化した話1
Pythonで自動化した話1Pythonで自動化した話1
Pythonで自動化した話1
 
Why python
Why pythonWhy python
Why python
 
Pythonでターミナルに画像表示
Pythonでターミナルに画像表示Pythonでターミナルに画像表示
Pythonでターミナルに画像表示
 
弁理士が知っておきたいPython①
弁理士が知っておきたいPython①弁理士が知っておきたいPython①
弁理士が知っておきたいPython①
 
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトPython界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクト
 
20230216_Python機械学習プログラミング.pdf
20230216_Python機械学習プログラミング.pdf20230216_Python機械学習プログラミング.pdf
20230216_Python機械学習プログラミング.pdf
 
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
 
S06 t4 wrapup
S06 t4 wrapupS06 t4 wrapup
S06 t4 wrapup
 
正しいプログラミング言語の覚え方
正しいプログラミング言語の覚え方正しいプログラミング言語の覚え方
正しいプログラミング言語の覚え方
 
210526 Power Automate Desktop Python
210526 Power Automate Desktop Python210526 Power Automate Desktop Python
210526 Power Automate Desktop Python
 
C言語講習会資料(前半)
C言語講習会資料(前半)C言語講習会資料(前半)
C言語講習会資料(前半)
 
Pythonとベイズ統計
Pythonとベイズ統計Pythonとベイズ統計
Pythonとベイズ統計
 
ゼロから学ぶPython勉強会
ゼロから学ぶPython勉強会ゼロから学ぶPython勉強会
ゼロから学ぶPython勉強会
 
Python入門者の集い #6 Lightning Talk
Python入門者の集い #6 Lightning Talk Python入門者の集い #6 Lightning Talk
Python入門者の集い #6 Lightning Talk
 
「Python 機械学習プログラミング」 の挫折しない読み方
「Python 機械学習プログラミング」の挫折しない読み方「Python 機械学習プログラミング」の挫折しない読み方
「Python 機械学習プログラミング」 の挫折しない読み方
 

最近思った機械学習(PyTorch)のベストプラクティス