SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Faster Python Meet up LT会 #1
Tensor コアを使った
PyTorch の高速化
2019/04/08
@fam_taro
Agenda
1. Tensorコア is 何
2. PyTorchで Tensor コア使うには
3. 推論(予測)で使ってみた(M2Det)
4. 学習で Tensorコアを使いたい場合
1
1. Tensorコア is 何
 16bit浮動小数点(FP16) の行列演算に特化した計算用コア
 PyTorch 等の深層学習フレームワークを使うと、デフォルトでは 32bit浮動小数点(FP32) で
諸々の計算が行われる
 NVIDIA GPU のうち Volta 世代以降の一部に乗っている
 Turing でも RTX 20 じゃないと乗ってない(GTX 1660, 60Ti には乗っていない)
 Pascal, Maxwell, Kepler には無い(無慈悲)
 GPU 例
 TITAN V
 GeForce RTX 20シリーズ(60, 70, 80, 80Ti)
 TITAN RTX
 Tesla V100 (<- GCP で試せる!)
 (今後より普及すると個人的に思ってます)
 参考リンク
 https://wikiwiki.jp/nvidiavga/GPU%E4%BB%95%E6%A7%98%E4%B8%80%E8%A6%A7%E8%A1%A8
 https://ja.wikipedia.org/wiki/NVIDIA_GeForce
2
https://www.nvidia.com/content/apac/gtc/ja/pdf/2017/1040.pdf
1. Tensorコア is 何
 Tensor コア使わないと FP16 にしても速度は 2倍程度
 Tensor コア使うと FP16 にしたら 7倍 以上!
 ただし使うためには制約が多い…
 CUDA9 以降
 cuDNN 7 以降
 FP16 で扱うことを明記(ライブラリのコマンド等で)
 Conv 層の入力・出力チャンネル数が 8の倍数
 全ての層が対応しているわけではない(むしろ一部しか)
 あくまで現時点なので今後は緩和されるかも… 3
https://www.slideshare.net/NVIDIAJapan/chainer-tensor-fp16
2. PyTorchで Tensor コア使うには
 FP16 を使うことを明記すればフレームワークが勝手に
使ってくれる(ことが多い)
 最近のバージョンにしないといけないが…
 PyTorch では…
 Model と Input に対し “.half()” を付ける
 半精度にするという意味 -> FP16 にする
 Output は FP16 とは限らないので注意
 Conv 層の入力と出力チャンネル数を 8 の倍数にする
 地味にきつい制約
 Pre-train model だとうまく使えないケースが出てくる
 明示的に Tensorコアを使うようにはできない(ぽい?)
4
3. 推論(予測)で使ってみた(M2Det)
 M2Det とは
 論文: https://qijiezhao.github.io/imgs/m2det.pdf
 実装: https://github.com/qijiezhao/M2Det
 最近出てきた検出モデル
 YOLOv3 より速くて精度が高い(らしい)
 自分のデータでは学習全くできてないですが😢
 実験条件
 COCO dataset (Detection ではメジャーなやつ)
 学習済みモデル(512 x 512)を使用
 公式リポジトリにある test.py を使用
 model(input) の時間と後処理(NMS)の時間を計測
 足した時間を使って FPS を出す(高いほど良い)
 5,000 枚のデータに対して推論(予測) をして平均時間をとる
 元論文は 1,000 枚で取っていた
 モデルの精度は mAP 5
3. 推論(予測)で使ってみた(M2Det)
 実行時間や Tensor コアを使っているか確認するために使ったコマンド
 time.time() 関数
 GPU絡むため下記の方が良さそうですが今回は time() 関数で時間とりました😭
 torch.cuda.Event(enable_timing=True)
 profiler
 $ python -m torch.utils.bottleneck test.py ~~~
 PyTorch の提供する profiler
 検出の後処理(今回は NMS) がボトルネックになっていないか確認するために使用
 $ nvprof python ~~~
 NVIDIA の提供する profiler コマンド。Tensor コア使っているか見れる
 $ nvcc ~~~ (未使用)
 nvprof のコマンドを GUI でリッチに見れるらしい。ただしアプリサイズデカい(数GB) 6
3. 推論(予測)で使ってみた(M2Det)
 実行結果
7
GPU
mAP
(精度)
Detect time
per
image [ms]
Nms time
Per
image [ms]
Total [ms] FPS
元論文
(リポジトリ上の値)
Titan X PASCAL 37.8 55.5 18.0
PyTorch 0.4.1
(公式指定バージョン)
Titan V 37.8 74.3 9.5 83.8 11.9
PyTorch 0.4.1 + FP16 Titan V 37.8 51.3 9.5 60.8 16.4
PyTorch 1.0.1.post2 Titan V 37.8 56.6 9.7 66.3 15.1
PyTorch 1.0.1.post2
+ FP16
Titan V 37.8 43.5 9.6 53.1 18.8
3. 推論(予測)で使ってみた(M2Det)
 実行結果
8
GPU
mAP
(精度)
Detect time
per
image [ms]
Nms time
Per
image [ms]
Total [ms] FPS
元論文
(リポジトリ上の値)
Titan X PASCAL 37.8 55.5 18.0
PyTorch 0.4.1
(公式指定バージョン)
Titan V 37.8 74.3 9.5 83.8 11.9
PyTorch 0.4.1 + FP16 Titan V 37.8 51.3 9.5 60.8 16.4
PyTorch 1.0.1.post2 Titan V 37.8 56.6 9.7 66.3 15.1
PyTorch 1.0.1.post2
+ FP16
Titan V 37.8 43.5 9.6 53.1 18.8
“PyTorch1.0.1 にして”
かつ “FP16 使う” と最も速くなる
→ 最初の 1.5倍
(かろうじて元論文の FPS を超えた)
予測時のみなら FP16にしても精
度は変わらない
PyTorch のバージョン上げたら速くな
るし、FP16にしても速くなる
4. 学習で Tensorコアを使いたい場合
 とりあえず全部 FP16 にすればいいんでしょ?→ No!
 勾配計算時にかなり影響する (勾配が消える場合もある)
 → 精度が大きく下がる場合がある
 Mixed Precision Training
 参考リンク: https://www.slideshare.net/NVIDIAJapan/chainer-tensor-fp16
 FP16 と FP32 による計算を mix した学習方法
 具体的には以下のようなテクニックが必要
 ロススケーリング : ロス値を要所要所でスケールあっぷして勾配消失を緩和
 FP32 ウェイト更新 : Forward と Backward は FP16, Update で FP32を使用
 上記を全て自分でやると大変!(学びはあると思いますが…)
 → apex を使うと比較的手軽にできる(https://github.com/NVIDIA/apex)
 NVIDIA が提供する PyTorch 用 Automatic Mixed Precision(AMP) ツール
 元のコードに対し数行足すだけで Mixed Precision Training できるとのこと
 ただし install 時は CUDA や PyTorch のバージョンに気をつけないといけない 9
References
 [2018年版 機械学習ハードウェアのState of the Artを考える ~CPU, GPU, TPUを添えて~ -
Qiita](https://qiita.com/arutema47/items/72621f17b65381657a52)
 [Training Neural Networks with Mixed Precision - NVIDIA](http://on-demand.gputechconf.com/gtc-taiwan/2018/pdf/5-
1_Internal%20Speaker_Michael%20Carilli_PDF%20For%20Sharing.pdf)
 [Chainer で Tensor コア (fp16) を使いこなす](https://www.slideshare.net/NVIDIAJapan/chainer-tensor-fp16)
 [Chainer における深層学習の高速化](https://www.nvidia.com/content/apac/gtc/ja/pdf/2018/2033.pdf)
 [VOLTA AND TURING: ARCHITECTURE AND PERFORMANCE OPTIMIZATION NVIDIA](https://www.nvidia.com/content/apac/gtc/ja/pdf/2018/2051.pdf)
 [Training with Mixed Precision :: Deep Learning SDK Documentation](https://docs.nvidia.com/deeplearning/sdk/mixed-precision-
training/index.html#pytorch)
 [GPU仕様一覧表 - NVIDIA GeForce Wiki*](https://wikiwiki.jp/nvidiavga/GPU%E4%BB%95%E6%A7%98%E4%B8%80%E8%A6%A7%E8%A1%A8)
10
おわり
11
ありがとうございました
補足: nvprof の結果(PyTorch 0.4.1)
12
補足: nvprof の結果(PyTorch 1.0.0)
13

Weitere ähnliche Inhalte

Was ist angesagt?

勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)RyuichiKanoh
 
Deep Learningによる超解像の進歩
Deep Learningによる超解像の進歩Deep Learningによる超解像の進歩
Deep Learningによる超解像の進歩Hiroto Honda
 
3D CNNによる人物行動認識の動向
3D CNNによる人物行動認識の動向3D CNNによる人物行動認識の動向
3D CNNによる人物行動認識の動向Kensho Hara
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門ryosuke-kojima
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使うKazuhiro Suga
 
畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化Yusuke Uchida
 
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)Deep Learning JP
 
[DL輪読会]Pay Attention to MLPs (gMLP)
[DL輪読会]Pay Attention to MLPs	(gMLP)[DL輪読会]Pay Attention to MLPs	(gMLP)
[DL輪読会]Pay Attention to MLPs (gMLP)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
 
スパースモデリング入門
スパースモデリング入門スパースモデリング入門
スパースモデリング入門Hideo Terada
 
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...joisino
 
Optimizer入門&最新動向
Optimizer入門&最新動向Optimizer入門&最新動向
Optimizer入門&最新動向Motokawa Tetsuya
 
Semi supervised, weakly-supervised, unsupervised, and active learning
Semi supervised, weakly-supervised, unsupervised, and active learningSemi supervised, weakly-supervised, unsupervised, and active learning
Semi supervised, weakly-supervised, unsupervised, and active learningYusuke Uchida
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリングmlm_kansai
 
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)Deep Learning JP
 
CV分野におけるサーベイ方法
CV分野におけるサーベイ方法CV分野におけるサーベイ方法
CV分野におけるサーベイ方法Hirokatsu Kataoka
 
Skip Connection まとめ(Neural Network)
Skip Connection まとめ(Neural Network)Skip Connection まとめ(Neural Network)
Skip Connection まとめ(Neural Network)Yamato OKAMOTO
 
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language ModelsDeep Learning JP
 
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Modelscvpaper. challenge
 
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情Yuta Kikuchi
 

Was ist angesagt? (20)

勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
 
Deep Learningによる超解像の進歩
Deep Learningによる超解像の進歩Deep Learningによる超解像の進歩
Deep Learningによる超解像の進歩
 
3D CNNによる人物行動認識の動向
3D CNNによる人物行動認識の動向3D CNNによる人物行動認識の動向
3D CNNによる人物行動認識の動向
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化
 
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
【DL輪読会】言語以外でのTransformerのまとめ (ViT, Perceiver, Frozen Pretrained Transformer etc)
 
[DL輪読会]Pay Attention to MLPs (gMLP)
[DL輪読会]Pay Attention to MLPs	(gMLP)[DL輪読会]Pay Attention to MLPs	(gMLP)
[DL輪読会]Pay Attention to MLPs (gMLP)
 
【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ
 
スパースモデリング入門
スパースモデリング入門スパースモデリング入門
スパースモデリング入門
 
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
 
Optimizer入門&最新動向
Optimizer入門&最新動向Optimizer入門&最新動向
Optimizer入門&最新動向
 
Semi supervised, weakly-supervised, unsupervised, and active learning
Semi supervised, weakly-supervised, unsupervised, and active learningSemi supervised, weakly-supervised, unsupervised, and active learning
Semi supervised, weakly-supervised, unsupervised, and active learning
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
 
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
 
CV分野におけるサーベイ方法
CV分野におけるサーベイ方法CV分野におけるサーベイ方法
CV分野におけるサーベイ方法
 
Skip Connection まとめ(Neural Network)
Skip Connection まとめ(Neural Network)Skip Connection まとめ(Neural Network)
Skip Connection まとめ(Neural Network)
 
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models
 
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
 
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
 

Ähnlich wie Tensor コアを使った PyTorch の高速化

【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみる
【関東GPGPU勉強会#4】GTX 1080でComputer Visionアルゴリズムを色々動かしてみる【関東GPGPU勉強会#4】GTX 1080でComputer Visionアルゴリズムを色々動かしてみる
【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみるYasuhiro Yoshimura
 
A100 GPU 搭載! P4d インスタンス 使いこなしのコツ
A100 GPU 搭載! P4d インスタンス使いこなしのコツA100 GPU 搭載! P4d インスタンス使いこなしのコツ
A100 GPU 搭載! P4d インスタンス 使いこなしのコツKuninobu SaSaki
 
【A-1】AIを支えるGPUコンピューティングの今
【A-1】AIを支えるGPUコンピューティングの今【A-1】AIを支えるGPUコンピューティングの今
【A-1】AIを支えるGPUコンピューティングの今Developers Summit
 
GPUディープラーニング最新情報
GPUディープラーニング最新情報GPUディープラーニング最新情報
GPUディープラーニング最新情報ReNom User Group
 
20170421 tensor flowusergroup
20170421 tensor flowusergroup20170421 tensor flowusergroup
20170421 tensor flowusergroupManaMurakami1
 
機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編Daiyu Hatakeyama
 
【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ
【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ
【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ日本マイクロソフト株式会社
 
機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について
機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について
機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用についてハイシンク創研 / Laboratory of Hi-Think Corporation
 
Jetson Xavier NX クラウドネイティブをエッジに
Jetson Xavier NX クラウドネイティブをエッジにJetson Xavier NX クラウドネイティブをエッジに
Jetson Xavier NX クラウドネイティブをエッジにNVIDIA Japan
 
20170726 py data.tokyo
20170726 py data.tokyo20170726 py data.tokyo
20170726 py data.tokyoManaMurakami1
 
[Track2-2] 最新のNVIDIA AmpereアーキテクチャによるNVIDIA A100 TensorコアGPUの特長とその性能を引き出す方法
[Track2-2] 最新のNVIDIA AmpereアーキテクチャによるNVIDIA A100 TensorコアGPUの特長とその性能を引き出す方法[Track2-2] 最新のNVIDIA AmpereアーキテクチャによるNVIDIA A100 TensorコアGPUの特長とその性能を引き出す方法
[Track2-2] 最新のNVIDIA AmpereアーキテクチャによるNVIDIA A100 TensorコアGPUの特長とその性能を引き出す方法Deep Learning Lab(ディープラーニング・ラボ)
 
[db analytics showcase Sapporo 2017] B14: GPU コンピューティング最前線 by エヌビディア 佐々木邦暢
[db analytics showcase Sapporo 2017] B14: GPU コンピューティング最前線 by エヌビディア 佐々木邦暢[db analytics showcase Sapporo 2017] B14: GPU コンピューティング最前線 by エヌビディア 佐々木邦暢
[db analytics showcase Sapporo 2017] B14: GPU コンピューティング最前線 by エヌビディア 佐々木邦暢Insight Technology, Inc.
 
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜Yusuke Naka
 
Getting Started with Jetson Nano
Getting Started with Jetson NanoGetting Started with Jetson Nano
Getting Started with Jetson NanoNVIDIA Japan
 
GTC 2017 基調講演からディープラーニング関連情報のご紹介
GTC 2017 基調講演からディープラーニング関連情報のご紹介GTC 2017 基調講演からディープラーニング関連情報のご紹介
GTC 2017 基調講演からディープラーニング関連情報のご紹介NVIDIA Japan
 
Gpgpu tomoaki-fp16
Gpgpu tomoaki-fp16Gpgpu tomoaki-fp16
Gpgpu tomoaki-fp16tomoaki0705
 
みんなが知らない pytorch-pfn-extras
みんなが知らない pytorch-pfn-extrasみんなが知らない pytorch-pfn-extras
みんなが知らない pytorch-pfn-extrasTakuji Tahara
 
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能MITSUNARI Shigeo
 
openstack_neutron-dvr_os5thaniv_20150713
openstack_neutron-dvr_os5thaniv_20150713openstack_neutron-dvr_os5thaniv_20150713
openstack_neutron-dvr_os5thaniv_20150713Takehiro Kudou
 

Ähnlich wie Tensor コアを使った PyTorch の高速化 (20)

【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみる
【関東GPGPU勉強会#4】GTX 1080でComputer Visionアルゴリズムを色々動かしてみる【関東GPGPU勉強会#4】GTX 1080でComputer Visionアルゴリズムを色々動かしてみる
【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみる
 
A100 GPU 搭載! P4d インスタンス 使いこなしのコツ
A100 GPU 搭載! P4d インスタンス使いこなしのコツA100 GPU 搭載! P4d インスタンス使いこなしのコツ
A100 GPU 搭載! P4d インスタンス 使いこなしのコツ
 
【A-1】AIを支えるGPUコンピューティングの今
【A-1】AIを支えるGPUコンピューティングの今【A-1】AIを支えるGPUコンピューティングの今
【A-1】AIを支えるGPUコンピューティングの今
 
GPUディープラーニング最新情報
GPUディープラーニング最新情報GPUディープラーニング最新情報
GPUディープラーニング最新情報
 
20170421 tensor flowusergroup
20170421 tensor flowusergroup20170421 tensor flowusergroup
20170421 tensor flowusergroup
 
機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編
 
【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ
【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ
【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ
 
機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について
機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について
機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について
 
Jetson Xavier NX クラウドネイティブをエッジに
Jetson Xavier NX クラウドネイティブをエッジにJetson Xavier NX クラウドネイティブをエッジに
Jetson Xavier NX クラウドネイティブをエッジに
 
20170726 py data.tokyo
20170726 py data.tokyo20170726 py data.tokyo
20170726 py data.tokyo
 
[Track2-2] 最新のNVIDIA AmpereアーキテクチャによるNVIDIA A100 TensorコアGPUの特長とその性能を引き出す方法
[Track2-2] 最新のNVIDIA AmpereアーキテクチャによるNVIDIA A100 TensorコアGPUの特長とその性能を引き出す方法[Track2-2] 最新のNVIDIA AmpereアーキテクチャによるNVIDIA A100 TensorコアGPUの特長とその性能を引き出す方法
[Track2-2] 最新のNVIDIA AmpereアーキテクチャによるNVIDIA A100 TensorコアGPUの特長とその性能を引き出す方法
 
[db analytics showcase Sapporo 2017] B14: GPU コンピューティング最前線 by エヌビディア 佐々木邦暢
[db analytics showcase Sapporo 2017] B14: GPU コンピューティング最前線 by エヌビディア 佐々木邦暢[db analytics showcase Sapporo 2017] B14: GPU コンピューティング最前線 by エヌビディア 佐々木邦暢
[db analytics showcase Sapporo 2017] B14: GPU コンピューティング最前線 by エヌビディア 佐々木邦暢
 
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
実践 WebRTC 〜最新事例と開発ノウハウの紹介〜
 
Getting Started with Jetson Nano
Getting Started with Jetson NanoGetting Started with Jetson Nano
Getting Started with Jetson Nano
 
GTC 2017 基調講演からディープラーニング関連情報のご紹介
GTC 2017 基調講演からディープラーニング関連情報のご紹介GTC 2017 基調講演からディープラーニング関連情報のご紹介
GTC 2017 基調講演からディープラーニング関連情報のご紹介
 
Gpgpu tomoaki-fp16
Gpgpu tomoaki-fp16Gpgpu tomoaki-fp16
Gpgpu tomoaki-fp16
 
みんなが知らない pytorch-pfn-extras
みんなが知らない pytorch-pfn-extrasみんなが知らない pytorch-pfn-extras
みんなが知らない pytorch-pfn-extras
 
Zenkoku78
Zenkoku78Zenkoku78
Zenkoku78
 
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
準同型暗号の実装とMontgomery, Karatsuba, FFT の性能
 
openstack_neutron-dvr_os5thaniv_20150713
openstack_neutron-dvr_os5thaniv_20150713openstack_neutron-dvr_os5thaniv_20150713
openstack_neutron-dvr_os5thaniv_20150713
 

Mehr von Yusuke Fujimoto

Paper LT: Mask Scoring R-CNN
Paper LT:  Mask Scoring R-CNNPaper LT:  Mask Scoring R-CNN
Paper LT: Mask Scoring R-CNNYusuke Fujimoto
 
Paper: Bounding Box Regression with Uncertainty for Accurate Object Detection
Paper: Bounding Box Regression with Uncertainty for Accurate Object DetectionPaper: Bounding Box Regression with Uncertainty for Accurate Object Detection
Paper: Bounding Box Regression with Uncertainty for Accurate Object DetectionYusuke Fujimoto
 
Paper: Objects as Points(CenterNet)
Paper: Objects as Points(CenterNet)Paper: Objects as Points(CenterNet)
Paper: Objects as Points(CenterNet)Yusuke Fujimoto
 
Paper: clinically accuratechestx-rayreport generation_noself
Paper: clinically accuratechestx-rayreport generation_noselfPaper: clinically accuratechestx-rayreport generation_noself
Paper: clinically accuratechestx-rayreport generation_noselfYusuke Fujimoto
 
論文LT会用資料: Attention Augmented Convolution Networks
論文LT会用資料: Attention Augmented Convolution Networks論文LT会用資料: Attention Augmented Convolution Networks
論文LT会用資料: Attention Augmented Convolution NetworksYusuke Fujimoto
 

Mehr von Yusuke Fujimoto (6)

Paper LT: Mask Scoring R-CNN
Paper LT:  Mask Scoring R-CNNPaper LT:  Mask Scoring R-CNN
Paper LT: Mask Scoring R-CNN
 
Paper: Bounding Box Regression with Uncertainty for Accurate Object Detection
Paper: Bounding Box Regression with Uncertainty for Accurate Object DetectionPaper: Bounding Box Regression with Uncertainty for Accurate Object Detection
Paper: Bounding Box Regression with Uncertainty for Accurate Object Detection
 
Paper: Objects as Points(CenterNet)
Paper: Objects as Points(CenterNet)Paper: Objects as Points(CenterNet)
Paper: Objects as Points(CenterNet)
 
Paper: seq2seq 20190320
Paper: seq2seq 20190320Paper: seq2seq 20190320
Paper: seq2seq 20190320
 
Paper: clinically accuratechestx-rayreport generation_noself
Paper: clinically accuratechestx-rayreport generation_noselfPaper: clinically accuratechestx-rayreport generation_noself
Paper: clinically accuratechestx-rayreport generation_noself
 
論文LT会用資料: Attention Augmented Convolution Networks
論文LT会用資料: Attention Augmented Convolution Networks論文LT会用資料: Attention Augmented Convolution Networks
論文LT会用資料: Attention Augmented Convolution Networks
 

Kürzlich hochgeladen

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Kürzlich hochgeladen (7)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

Tensor コアを使った PyTorch の高速化

  • 1. Faster Python Meet up LT会 #1 Tensor コアを使った PyTorch の高速化 2019/04/08 @fam_taro
  • 2. Agenda 1. Tensorコア is 何 2. PyTorchで Tensor コア使うには 3. 推論(予測)で使ってみた(M2Det) 4. 学習で Tensorコアを使いたい場合 1
  • 3. 1. Tensorコア is 何  16bit浮動小数点(FP16) の行列演算に特化した計算用コア  PyTorch 等の深層学習フレームワークを使うと、デフォルトでは 32bit浮動小数点(FP32) で 諸々の計算が行われる  NVIDIA GPU のうち Volta 世代以降の一部に乗っている  Turing でも RTX 20 じゃないと乗ってない(GTX 1660, 60Ti には乗っていない)  Pascal, Maxwell, Kepler には無い(無慈悲)  GPU 例  TITAN V  GeForce RTX 20シリーズ(60, 70, 80, 80Ti)  TITAN RTX  Tesla V100 (<- GCP で試せる!)  (今後より普及すると個人的に思ってます)  参考リンク  https://wikiwiki.jp/nvidiavga/GPU%E4%BB%95%E6%A7%98%E4%B8%80%E8%A6%A7%E8%A1%A8  https://ja.wikipedia.org/wiki/NVIDIA_GeForce 2 https://www.nvidia.com/content/apac/gtc/ja/pdf/2017/1040.pdf
  • 4. 1. Tensorコア is 何  Tensor コア使わないと FP16 にしても速度は 2倍程度  Tensor コア使うと FP16 にしたら 7倍 以上!  ただし使うためには制約が多い…  CUDA9 以降  cuDNN 7 以降  FP16 で扱うことを明記(ライブラリのコマンド等で)  Conv 層の入力・出力チャンネル数が 8の倍数  全ての層が対応しているわけではない(むしろ一部しか)  あくまで現時点なので今後は緩和されるかも… 3 https://www.slideshare.net/NVIDIAJapan/chainer-tensor-fp16
  • 5. 2. PyTorchで Tensor コア使うには  FP16 を使うことを明記すればフレームワークが勝手に 使ってくれる(ことが多い)  最近のバージョンにしないといけないが…  PyTorch では…  Model と Input に対し “.half()” を付ける  半精度にするという意味 -> FP16 にする  Output は FP16 とは限らないので注意  Conv 層の入力と出力チャンネル数を 8 の倍数にする  地味にきつい制約  Pre-train model だとうまく使えないケースが出てくる  明示的に Tensorコアを使うようにはできない(ぽい?) 4
  • 6. 3. 推論(予測)で使ってみた(M2Det)  M2Det とは  論文: https://qijiezhao.github.io/imgs/m2det.pdf  実装: https://github.com/qijiezhao/M2Det  最近出てきた検出モデル  YOLOv3 より速くて精度が高い(らしい)  自分のデータでは学習全くできてないですが😢  実験条件  COCO dataset (Detection ではメジャーなやつ)  学習済みモデル(512 x 512)を使用  公式リポジトリにある test.py を使用  model(input) の時間と後処理(NMS)の時間を計測  足した時間を使って FPS を出す(高いほど良い)  5,000 枚のデータに対して推論(予測) をして平均時間をとる  元論文は 1,000 枚で取っていた  モデルの精度は mAP 5
  • 7. 3. 推論(予測)で使ってみた(M2Det)  実行時間や Tensor コアを使っているか確認するために使ったコマンド  time.time() 関数  GPU絡むため下記の方が良さそうですが今回は time() 関数で時間とりました😭  torch.cuda.Event(enable_timing=True)  profiler  $ python -m torch.utils.bottleneck test.py ~~~  PyTorch の提供する profiler  検出の後処理(今回は NMS) がボトルネックになっていないか確認するために使用  $ nvprof python ~~~  NVIDIA の提供する profiler コマンド。Tensor コア使っているか見れる  $ nvcc ~~~ (未使用)  nvprof のコマンドを GUI でリッチに見れるらしい。ただしアプリサイズデカい(数GB) 6
  • 8. 3. 推論(予測)で使ってみた(M2Det)  実行結果 7 GPU mAP (精度) Detect time per image [ms] Nms time Per image [ms] Total [ms] FPS 元論文 (リポジトリ上の値) Titan X PASCAL 37.8 55.5 18.0 PyTorch 0.4.1 (公式指定バージョン) Titan V 37.8 74.3 9.5 83.8 11.9 PyTorch 0.4.1 + FP16 Titan V 37.8 51.3 9.5 60.8 16.4 PyTorch 1.0.1.post2 Titan V 37.8 56.6 9.7 66.3 15.1 PyTorch 1.0.1.post2 + FP16 Titan V 37.8 43.5 9.6 53.1 18.8
  • 9. 3. 推論(予測)で使ってみた(M2Det)  実行結果 8 GPU mAP (精度) Detect time per image [ms] Nms time Per image [ms] Total [ms] FPS 元論文 (リポジトリ上の値) Titan X PASCAL 37.8 55.5 18.0 PyTorch 0.4.1 (公式指定バージョン) Titan V 37.8 74.3 9.5 83.8 11.9 PyTorch 0.4.1 + FP16 Titan V 37.8 51.3 9.5 60.8 16.4 PyTorch 1.0.1.post2 Titan V 37.8 56.6 9.7 66.3 15.1 PyTorch 1.0.1.post2 + FP16 Titan V 37.8 43.5 9.6 53.1 18.8 “PyTorch1.0.1 にして” かつ “FP16 使う” と最も速くなる → 最初の 1.5倍 (かろうじて元論文の FPS を超えた) 予測時のみなら FP16にしても精 度は変わらない PyTorch のバージョン上げたら速くな るし、FP16にしても速くなる
  • 10. 4. 学習で Tensorコアを使いたい場合  とりあえず全部 FP16 にすればいいんでしょ?→ No!  勾配計算時にかなり影響する (勾配が消える場合もある)  → 精度が大きく下がる場合がある  Mixed Precision Training  参考リンク: https://www.slideshare.net/NVIDIAJapan/chainer-tensor-fp16  FP16 と FP32 による計算を mix した学習方法  具体的には以下のようなテクニックが必要  ロススケーリング : ロス値を要所要所でスケールあっぷして勾配消失を緩和  FP32 ウェイト更新 : Forward と Backward は FP16, Update で FP32を使用  上記を全て自分でやると大変!(学びはあると思いますが…)  → apex を使うと比較的手軽にできる(https://github.com/NVIDIA/apex)  NVIDIA が提供する PyTorch 用 Automatic Mixed Precision(AMP) ツール  元のコードに対し数行足すだけで Mixed Precision Training できるとのこと  ただし install 時は CUDA や PyTorch のバージョンに気をつけないといけない 9
  • 11. References  [2018年版 機械学習ハードウェアのState of the Artを考える ~CPU, GPU, TPUを添えて~ - Qiita](https://qiita.com/arutema47/items/72621f17b65381657a52)  [Training Neural Networks with Mixed Precision - NVIDIA](http://on-demand.gputechconf.com/gtc-taiwan/2018/pdf/5- 1_Internal%20Speaker_Michael%20Carilli_PDF%20For%20Sharing.pdf)  [Chainer で Tensor コア (fp16) を使いこなす](https://www.slideshare.net/NVIDIAJapan/chainer-tensor-fp16)  [Chainer における深層学習の高速化](https://www.nvidia.com/content/apac/gtc/ja/pdf/2018/2033.pdf)  [VOLTA AND TURING: ARCHITECTURE AND PERFORMANCE OPTIMIZATION NVIDIA](https://www.nvidia.com/content/apac/gtc/ja/pdf/2018/2051.pdf)  [Training with Mixed Precision :: Deep Learning SDK Documentation](https://docs.nvidia.com/deeplearning/sdk/mixed-precision- training/index.html#pytorch)  [GPU仕様一覧表 - NVIDIA GeForce Wiki*](https://wikiwiki.jp/nvidiavga/GPU%E4%BB%95%E6%A7%98%E4%B8%80%E8%A6%A7%E8%A1%A8) 10