SlideShare a Scribd company logo
9
Most read
11
Most read
13
Most read
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

More Related Content

What's hot (20)

PPTX
[DL輪読会]Vision Transformer with Deformable Attention (Deformable Attention Tra...
Deep Learning JP
 
PPTX
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Preferred Networks
 
PDF
深層生成モデルと世界モデル
Masahiro Suzuki
 
PPTX
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
Deep Learning JP
 
PPTX
[DL輪読会]Dream to Control: Learning Behaviors by Latent Imagination
Deep Learning JP
 
PPTX
Transformerを雰囲気で理解する
AtsukiYamaguchi1
 
PDF
【DL輪読会】Perceiver io a general architecture for structured inputs &amp; outputs
Deep Learning JP
 
PDF
【DL輪読会】How Much Can CLIP Benefit Vision-and-Language Tasks?
Deep Learning JP
 
PDF
【メタサーベイ】基盤モデル / Foundation Models
cvpaper. challenge
 
PDF
【メタサーベイ】Transformerから基盤モデルまでの流れ / From Transformer to Foundation Models
cvpaper. challenge
 
PPTX
[DL輪読会]Pay Attention to MLPs (gMLP)
Deep Learning JP
 
PDF
Active Learning 入門
Shuyo Nakatani
 
PDF
Skip Connection まとめ(Neural Network)
Yamato OKAMOTO
 
PPTX
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
Deep Learning JP
 
PDF
Anomaly detection 系の論文を一言でまとめた
ぱんいち すみもと
 
PDF
ドメイン適応の原理と応用
Yoshitaka Ushiku
 
PDF
MIRU2013チュートリアル:SIFTとそれ以降のアプローチ
Hironobu Fujiyoshi
 
PDF
Transformer メタサーベイ
cvpaper. challenge
 
PDF
POMDP下での強化学習の基礎と応用
Yasunori Ozaki
 
PPTX
猫でも分かるVariational AutoEncoder
Sho Tatsuno
 
[DL輪読会]Vision Transformer with Deformable Attention (Deformable Attention Tra...
Deep Learning JP
 
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Preferred Networks
 
深層生成モデルと世界モデル
Masahiro Suzuki
 
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
Deep Learning JP
 
[DL輪読会]Dream to Control: Learning Behaviors by Latent Imagination
Deep Learning JP
 
Transformerを雰囲気で理解する
AtsukiYamaguchi1
 
【DL輪読会】Perceiver io a general architecture for structured inputs &amp; outputs
Deep Learning JP
 
【DL輪読会】How Much Can CLIP Benefit Vision-and-Language Tasks?
Deep Learning JP
 
【メタサーベイ】基盤モデル / Foundation Models
cvpaper. challenge
 
【メタサーベイ】Transformerから基盤モデルまでの流れ / From Transformer to Foundation Models
cvpaper. challenge
 
[DL輪読会]Pay Attention to MLPs (gMLP)
Deep Learning JP
 
Active Learning 入門
Shuyo Nakatani
 
Skip Connection まとめ(Neural Network)
Yamato OKAMOTO
 
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
Deep Learning JP
 
Anomaly detection 系の論文を一言でまとめた
ぱんいち すみもと
 
ドメイン適応の原理と応用
Yoshitaka Ushiku
 
MIRU2013チュートリアル:SIFTとそれ以降のアプローチ
Hironobu Fujiyoshi
 
Transformer メタサーベイ
cvpaper. challenge
 
POMDP下での強化学習の基礎と応用
Yasunori Ozaki
 
猫でも分かるVariational AutoEncoder
Sho Tatsuno
 

Similar to Tensor コアを使った PyTorch の高速化 (20)

PDF
【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ
日本マイクロソフト株式会社
 
PDF
GPUディープラーニング最新情報
ReNom User Group
 
PDF
【A-1】AIを支えるGPUコンピューティングの今
Developers Summit
 
PDF
A100 GPU 搭載! P4d インスタンス 使いこなしのコツ
Kuninobu SaSaki
 
PDF
[Track2-2] 最新のNVIDIA AmpereアーキテクチャによるNVIDIA A100 TensorコアGPUの特長とその性能を引き出す方法
Deep Learning Lab(ディープラーニング・ラボ)
 
PDF
Chainer で Tensor コア (fp16) を使いこなす
NVIDIA Japan
 
PDF
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Kotaro Nakayama
 
PDF
GPU と PYTHON と、それから最近の NVIDIA
NVIDIA Japan
 
PPTX
TensorFlowの導入
yuf yufkky
 
PPTX
TensorFlowの導入
yuf yufkky
 
PDF
TensorFlow Liteを使った組み込みディープラーニング開発
Makoto Koike
 
PDF
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
RCCSRENKEI
 
PDF
DAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hare
Preferred Networks
 
PPTX
研究者のための Python による FPGA 入門
ryos36
 
PDF
Automatic Mixed Precision の紹介
Kuninobu SaSaki
 
PPTX
機械学習 / Deep Learning 大全 (4) GPU編
Daiyu Hatakeyama
 
PDF
20170421 tensor flowusergroup
ManaMurakami1
 
PDF
NVIDIA TESLA V100・CUDA 9 のご紹介
NVIDIA Japan
 
PDF
Deep Learning Lab MeetUp 学習編 AzureインフラとBatch AI
喜智 大井
 
PPTX
【2017年】ディープラーニングのフレームワーク比較
Ryota Suzuki
 
【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ
日本マイクロソフト株式会社
 
GPUディープラーニング最新情報
ReNom User Group
 
【A-1】AIを支えるGPUコンピューティングの今
Developers Summit
 
A100 GPU 搭載! P4d インスタンス 使いこなしのコツ
Kuninobu SaSaki
 
[Track2-2] 最新のNVIDIA AmpereアーキテクチャによるNVIDIA A100 TensorコアGPUの特長とその性能を引き出す方法
Deep Learning Lab(ディープラーニング・ラボ)
 
Chainer で Tensor コア (fp16) を使いこなす
NVIDIA Japan
 
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Kotaro Nakayama
 
GPU と PYTHON と、それから最近の NVIDIA
NVIDIA Japan
 
TensorFlowの導入
yuf yufkky
 
TensorFlowの導入
yuf yufkky
 
TensorFlow Liteを使った組み込みディープラーニング開発
Makoto Koike
 
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
RCCSRENKEI
 
DAシンポジウム2019招待講演「深層学習モデルの高速なTraining/InferenceのためのHW/SW技術」 金子紘也hare
Preferred Networks
 
研究者のための Python による FPGA 入門
ryos36
 
Automatic Mixed Precision の紹介
Kuninobu SaSaki
 
機械学習 / Deep Learning 大全 (4) GPU編
Daiyu Hatakeyama
 
20170421 tensor flowusergroup
ManaMurakami1
 
NVIDIA TESLA V100・CUDA 9 のご紹介
NVIDIA Japan
 
Deep Learning Lab MeetUp 学習編 AzureインフラとBatch AI
喜智 大井
 
【2017年】ディープラーニングのフレームワーク比較
Ryota Suzuki
 
Ad

More from Yusuke Fujimoto (6)

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

Recently uploaded (10)

PDF
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
PDF
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 

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