SlideShare a Scribd company logo
佐々木邦暢 (@_ksasaki)
エヌビディア合同会社
AUTOMATIC MIXED PRECISION
2019/5/16 GPU Deep Learning Community #11
2
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
FP32 と FP16
FP32 (単精度) FP16 (半精度)
指数部: 8 ビット、仮数部: 23 ビット 指数部: 5 ビット、仮数部: 10 ビット
表現可能な範囲
1.4 x 10-45 < x < 3.4 x 1038
表現可能な範囲
5.96 x 10-8 < x < 65504
3
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
FP32 と FP16
モデルのパフォーマンスを最大化
FP32 (単精度) を基準にすると FP16 (半精度) の性能は
• 計算のスループット
• メモリアクセスのスループット
• メモリの消費量 (フットプリント)
• 計算のスループット - 8 倍
• メモリアクセスのスループット - 2倍
• メモリの消費量 (フットプリント) - 1/2
4
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
TENSOR コア
混合精度行列演算ユニット
D =
FP32
(FP16)
FP16 FP16 FP32
(FP16)
A0,0 A0,1 A0,2 A0,3
A1,0 A1,1 A1,2 A1,3
A2,0 A2,1 A2,2 A2,3
A3,0 A3,1 A3,2 A3,3
B0,0 B0,1 B0,2 B0,3
B1,0 B1,1 B1,2 B1,3
B2,0 B2,1 B2,2 B2,3
B3,0 B3,1 B3,2 B3,3
C0,0 C0,1 C0,2 C0,3
C1,0 C1,1 C1,2 C1,3
C2,0 C2,1 C2,2 C2,3
C3,0 C3,1 C3,2 C3,3
行列の FMA (Fused Multiply-Add)
4x4 の行列の積和演算を1サイクルで計算する性能:
128 演算/サイクル/Tensor コア、1024 演算/サイクル/SM
A B C
5
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
混合精度演算で学習を3倍高速化
Tesla V100 搭載のサーバーでの例
Server: NVIDIA DGX-2 | GPU: 1x V100-SXM3-32GB | CPU: Platinum8168
PyTorch: GNMT: 19.01_py3, Dataset: WMT16 English-German | TensorFlow: OpenSeq2Seq(GNMT), 18.11_py3, Dataset: WMT16 English-German | MXNet: ResNet50: 18.12_py3, Dataset: ImageNet2012
Faster Time to Train
Increased Data
Scientist Productivity
Lower TCO
23435
8115
80051
24476
0
20000
40000
60000
80000
100000
PyTorch
GNMT
TensorFlow
OpenSeq2Seq(GNMT)
TotalTokens/sec
FP32 Mixed
439
1413
0
400
800
1200
1600
MXNet
ResNet50Images/sec
3.0X
3.2X
3.4X
Scale-up Server
1x V100 GPU
6
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
Tensor コアによる混合精度演算
精度を妥協することなく高いスループットを実現
ILSVRC12 classification top-1 accuracy.
(Sharan Narang, Paulius Micikevicius et al., "Mixed Precision Training“, ICLR 2018)
**Same hyperparameters and learning rate schedule as FP32.
0.00%
10.00%
20.00%
30.00%
40.00%
50.00%
60.00%
70.00%
80.00%
AlexNet VGG-D GoogleNet
(Inception v1)
Inception v2 Inception v3 Resnet50
精度
FP32 Mixed Precision**
7
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
機械学習のパフォーマンスを
計測する初めてのベンチマークテスト
https://mlperf.org/
8
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
混合精度演算が MLPERF で勝利
シングルノードでのトレーニング時間
7 部門中 6 部門で NVIDIA GPU が首位を獲得
画像分類
ResNet50 v.1.5
物体検出
(高負荷)
Mask R-CNN
物体検出
(軽負荷)
SSD
翻訳
GNMT
翻訳
Transformer
レコメンデーション
NCF
70 分 167 分 14分
10分 19分 0.4分
Test Platform: DGX-2H - Dual-Socket Xeon Platinum 8174, 1.5TB system RAM, 16 x 32 GB Tesla V100 SXM-3 GPUs connected via NVSwitch
9
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
AMP
GRAPH OPTIMIZATION
CHOOSING WHAT AND
WHERE TO CAST
10
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
混合精度演算の自動適用 (AMP)
わずか数行のコード追加で AMP を有効化することで、最大 3 倍程度のスピードアップ
演算ごとに適切な精度を利用するためにグラフ最適化技術を活用
TensorFlow, PyTorch, MXNet をサポート
容易な高速化で生産性を向上
11
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
勾配のアンダーフロー
勾配の値が 0 に近づくと 0 に丸められてしまう
12
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
ロス スケーリング
小さな値が FP16 の表現可能範囲に収まるようにスケールする
13
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
キャストすべきものの選択
1. できる限り FP16 を使うようにする
特に Tensor コアで実行できる操作は効果が大きいので優先
2. 精度を維持することが重要な部分では FP32 を使う
3. FP16 と FP32 間の「キャスト スラッシング」を避ける
ガイドライン
14
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
キャストすべきものの選択
演算を 3+1 のカテゴリに分類
常にキャスト
(Always)
FP16 化の効果が大きい演算。これらはコストをかけてキャストする価値がある。
例: matmul, conv2d
キャストするかも
(Maybe)
FP16 化によって速くはなるがキャストのコストと見合うとは限らないもの。
例: add, relu
キャストしない
(Never)
数値的安定性を維持するために FP32 が必要なもの。
例: exp, softmax_cross_entropy_with_logits
その他 FP16 実装がないものや入力が浮動小数点型でないもの。
15
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
キャスト可否判定グラフの例
Placeholder
Mul
Reciprocal
GradFilter
MatMul
Placeholder
GradInput
ReluGrad
LossGrad
MatMul
Conv2d
Relu
Add
Loss
MatMul
VariableV2
Mul
VariableV2
Mul
VariableV2
16
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
キャスト可否判定グラフの例
ステップ 1: 演算の色を初期化
Placeholder
Mul
Reciprocal
GradFilter
MatMul
Placeholder
GradInput
ReluGrad
LossGrad
MatMul
Conv2d
Relu
Add
Loss
MatMul
VariableV2
Mul
VariableV2
Mul
VariableV2
17
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
キャスト可否判定グラフの例
ステップ 2: "Never" の伝播
Placeholder
Mul
Reciprocal
GradFilter
MatMul
Placeholder
GradInput
ReluGrad
LossGrad
MatMul
Conv2d
Relu
Add
Loss
MatMul
VariableV2
Mul
VariableV2
Mul
VariableV2
18
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
キャスト可否判定グラフの例
ステップ 3: "Always" に挟まれた "Maybe"
Placeholder
Mul
Reciprocal
GradFilter
MatMul
Placeholder
GradInput
ReluGrad
LossGrad
MatMul
Conv2d
Relu
Add
Loss
MatMul
VariableV2
Mul
VariableV2
Mul
VariableV2
19
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
キャスト可否判定グラフの例
ステップ 4: "Always" の境界検出
Placeholder
Mul
Reciprocal
GradFilter
MatMul
Placeholder
GradInput
ReluGrad
LossGrad
MatMul
Conv2d
Relu
Add
Loss
MatMul
VariableV2
Mul
VariableV2
Mul
VariableV2
20
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
キャスト可否判定グラフの例
ステップ 5: キャストの挿入
FP16 Cast
Mul
Reciprocal
GradFilter
MatMul
Placeholder
GradInput
ReluGrad
LossGrad
MatMul
Conv2d
Relu
Add
Loss
MatMul
VariableV2
Mul
VariableV2
Mul
VariableV2
Placeholder
FP16 Cast
FP16 Cast
FP32 Cast FP16 Cast
FP32 Cast
FP32 Cast
21
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
AMP
GENERAL PURPOSE
22
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
混合精度演算は汎用的
23
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
混合精度演算による高速化
画像分類に限らず様々なタスクで有効
24
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
AMP
SCHEDULE & USAGE
25
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
自動混合精度演算の有効化
わずか数行の追加で最大 3 倍の高速化
More details: https://developer.nvidia.com/automatic-mixed-precision
TensorFlow
PyTorch
MXNet
os.environ['TF_ENABLE_AUTO_MIXED_PRECISION'] = '1'
amp.init()
amp.init_trainer(trainer)
with amp.scale_loss(loss, trainer) as scaled_loss:
autograd.backward(scaled_loss)
model, optimizer = amp.initialize(model, optimizer)
with amp.scale_loss(loss, optimizer) as scaled_loss:
scaled_loss.backward()
OR
export TF_ENABLE_AUTO_MIXED_PRECISION=1
GA Available Since Q2 2018
GA Coming Soon
GA GTC 19
26
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
CHAINER の MIXED PRECISION 対応
https://github.com/chainer/chainer/pull/6337https://github.com/chainer/chainer/pull/6337
27
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
https://twitter.com/melleo1978/status/1110203991764262913
28
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
NGC の TensorFlow イメージ
19.03 以降は Automatic Mixed Precision 対応
https://ngc.nvidia.com/catalog/containers/nvidia:tensorflow
29
Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP
ngc.nvidia.com
Automatic Mixed Precision の紹介
Ad

More Related Content

What's hot (20)

SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII
 
【メタサーベイ】Vision and Language のトップ研究室/研究者
【メタサーベイ】Vision and Language のトップ研究室/研究者【メタサーベイ】Vision and Language のトップ研究室/研究者
【メタサーベイ】Vision and Language のトップ研究室/研究者
cvpaper. challenge
 
動作認識の最前線:手法,タスク,データセット
動作認識の最前線:手法,タスク,データセット動作認識の最前線:手法,タスク,データセット
動作認識の最前線:手法,タスク,データセット
Toru Tamaki
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
joisino
 
SSII2022 [TS1] Transformerの最前線〜 畳込みニューラルネットワークの先へ 〜
SSII2022 [TS1] Transformerの最前線〜 畳込みニューラルネットワークの先へ 〜SSII2022 [TS1] Transformerの最前線〜 畳込みニューラルネットワークの先へ 〜
SSII2022 [TS1] Transformerの最前線〜 畳込みニューラルネットワークの先へ 〜
SSII
 
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII
 
[DL輪読会]Focal Loss for Dense Object Detection
[DL輪読会]Focal Loss for Dense Object Detection[DL輪読会]Focal Loss for Dense Object Detection
[DL輪読会]Focal Loss for Dense Object Detection
Deep Learning JP
 
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
Kosuke Shinoda
 
[DL輪読会]Encoder-Decoder with Atrous Separable Convolution for Semantic Image S...
[DL輪読会]Encoder-Decoder with Atrous Separable Convolution for Semantic Image S...[DL輪読会]Encoder-Decoder with Atrous Separable Convolution for Semantic Image S...
[DL輪読会]Encoder-Decoder with Atrous Separable Convolution for Semantic Image S...
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
 
畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化
Yusuke Uchida
 
【メタサーベイ】Transformerから基盤モデルまでの流れ / From Transformer to Foundation Models
【メタサーベイ】Transformerから基盤モデルまでの流れ / From Transformer to Foundation Models【メタサーベイ】Transformerから基盤モデルまでの流れ / From Transformer to Foundation Models
【メタサーベイ】Transformerから基盤モデルまでの流れ / From Transformer to Foundation Models
cvpaper. challenge
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Preferred Networks
 
【宝くじ仮説】The Lottery Ticket Hypothesis: Finding Small, Trainable Neural Networks
【宝くじ仮説】The Lottery Ticket Hypothesis: Finding Small, Trainable Neural Networks【宝くじ仮説】The Lottery Ticket Hypothesis: Finding Small, Trainable Neural Networks
【宝くじ仮説】The Lottery Ticket Hypothesis: Finding Small, Trainable Neural Networks
Yosuke Shinya
 
[DL輪読会]Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
[DL輪読会]Swin Transformer: Hierarchical Vision Transformer using Shifted Windows[DL輪読会]Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
[DL輪読会]Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
Deep Learning JP
 
ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
Yahoo!デベロッパーネットワーク
 
【DL輪読会】EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Pointsfor...
【DL輪読会】EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Pointsfor...【DL輪読会】EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Pointsfor...
【DL輪読会】EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Pointsfor...
Deep Learning JP
 
生成モデルの Deep Learning
生成モデルの Deep Learning生成モデルの Deep Learning
生成モデルの Deep Learning
Seiya Tokui
 
【DL輪読会】Segment Anything
【DL輪読会】Segment Anything【DL輪読会】Segment Anything
【DL輪読会】Segment Anything
Deep Learning JP
 
[DL輪読会]Flow-based Deep Generative Models
[DL輪読会]Flow-based Deep Generative Models[DL輪読会]Flow-based Deep Generative Models
[DL輪読会]Flow-based Deep Generative Models
Deep Learning JP
 
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII
 
【メタサーベイ】Vision and Language のトップ研究室/研究者
【メタサーベイ】Vision and Language のトップ研究室/研究者【メタサーベイ】Vision and Language のトップ研究室/研究者
【メタサーベイ】Vision and Language のトップ研究室/研究者
cvpaper. challenge
 
動作認識の最前線:手法,タスク,データセット
動作認識の最前線:手法,タスク,データセット動作認識の最前線:手法,タスク,データセット
動作認識の最前線:手法,タスク,データセット
Toru Tamaki
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
joisino
 
SSII2022 [TS1] Transformerの最前線〜 畳込みニューラルネットワークの先へ 〜
SSII2022 [TS1] Transformerの最前線〜 畳込みニューラルネットワークの先へ 〜SSII2022 [TS1] Transformerの最前線〜 畳込みニューラルネットワークの先へ 〜
SSII2022 [TS1] Transformerの最前線〜 畳込みニューラルネットワークの先へ 〜
SSII
 
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII2021 [OS2-01] 転移学習の基礎:異なるタスクの知識を利用するための機械学習の方法
SSII
 
[DL輪読会]Focal Loss for Dense Object Detection
[DL輪読会]Focal Loss for Dense Object Detection[DL輪読会]Focal Loss for Dense Object Detection
[DL輪読会]Focal Loss for Dense Object Detection
Deep Learning JP
 
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
Kosuke Shinoda
 
[DL輪読会]Encoder-Decoder with Atrous Separable Convolution for Semantic Image S...
[DL輪読会]Encoder-Decoder with Atrous Separable Convolution for Semantic Image S...[DL輪読会]Encoder-Decoder with Atrous Separable Convolution for Semantic Image S...
[DL輪読会]Encoder-Decoder with Atrous Separable Convolution for Semantic Image S...
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
 
畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化畳み込みニューラルネットワークの高精度化と高速化
畳み込みニューラルネットワークの高精度化と高速化
Yusuke Uchida
 
【メタサーベイ】Transformerから基盤モデルまでの流れ / From Transformer to Foundation Models
【メタサーベイ】Transformerから基盤モデルまでの流れ / From Transformer to Foundation Models【メタサーベイ】Transformerから基盤モデルまでの流れ / From Transformer to Foundation Models
【メタサーベイ】Transformerから基盤モデルまでの流れ / From Transformer to Foundation Models
cvpaper. challenge
 
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
Preferred Networks
 
【宝くじ仮説】The Lottery Ticket Hypothesis: Finding Small, Trainable Neural Networks
【宝くじ仮説】The Lottery Ticket Hypothesis: Finding Small, Trainable Neural Networks【宝くじ仮説】The Lottery Ticket Hypothesis: Finding Small, Trainable Neural Networks
【宝くじ仮説】The Lottery Ticket Hypothesis: Finding Small, Trainable Neural Networks
Yosuke Shinya
 
[DL輪読会]Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
[DL輪読会]Swin Transformer: Hierarchical Vision Transformer using Shifted Windows[DL輪読会]Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
[DL輪読会]Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
Deep Learning JP
 
【DL輪読会】EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Pointsfor...
【DL輪読会】EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Pointsfor...【DL輪読会】EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Pointsfor...
【DL輪読会】EPro-PnP: Generalized End-to-End Probabilistic Perspective-n-Pointsfor...
Deep Learning JP
 
生成モデルの Deep Learning
生成モデルの Deep Learning生成モデルの Deep Learning
生成モデルの Deep Learning
Seiya Tokui
 
【DL輪読会】Segment Anything
【DL輪読会】Segment Anything【DL輪読会】Segment Anything
【DL輪読会】Segment Anything
Deep Learning JP
 
[DL輪読会]Flow-based Deep Generative Models
[DL輪読会]Flow-based Deep Generative Models[DL輪読会]Flow-based Deep Generative Models
[DL輪読会]Flow-based Deep Generative Models
Deep Learning JP
 

Similar to Automatic Mixed Precision の紹介 (20)

GPUディープラーニング最新情報
GPUディープラーニング最新情報GPUディープラーニング最新情報
GPUディープラーニング最新情報
ReNom User Group
 
【A-1】AIを支えるGPUコンピューティングの今
【A-1】AIを支えるGPUコンピューティングの今【A-1】AIを支えるGPUコンピューティングの今
【A-1】AIを支えるGPUコンピューティングの今
Developers Summit
 
20170421 tensor flowusergroup
20170421 tensor flowusergroup20170421 tensor flowusergroup
20170421 tensor flowusergroup
ManaMurakami1
 
A100 GPU 搭載! P4d インスタンス 使いこなしのコツ
A100 GPU 搭載! P4d インスタンス使いこなしのコツA100 GPU 搭載! P4d インスタンス使いこなしのコツ
A100 GPU 搭載! P4d インスタンス 使いこなしのコツ
Kuninobu SaSaki
 
[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(ディープラーニング・ラボ)
 
GTC 2017 基調講演からディープラーニング関連情報のご紹介
GTC 2017 基調講演からディープラーニング関連情報のご紹介GTC 2017 基調講演からディープラーニング関連情報のご紹介
GTC 2017 基調講演からディープラーニング関連情報のご紹介
NVIDIA Japan
 
【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ
【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ
【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ
日本マイクロソフト株式会社
 
FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみた
Takefumi MIYOSHI
 
機械学習 / Deep Learning 大全 (6) Library編
機械学習 / Deep Learning 大全 (6) Library編機械学習 / Deep Learning 大全 (6) Library編
機械学習 / Deep Learning 大全 (6) Library編
Daiyu Hatakeyama
 
Gpgpu tomoaki-fp16
Gpgpu tomoaki-fp16Gpgpu tomoaki-fp16
Gpgpu tomoaki-fp16
tomoaki0705
 
【関東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
 
FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化
Kazunori Sato
 
Linux on Powerの最新情報(2014年11月)
Linux on Powerの最新情報(2014年11月)Linux on Powerの最新情報(2014年11月)
Linux on Powerの最新情報(2014年11月)
IBM Systems @ IBM Japan, Ltd.
 
AWS Webinar 20201224
AWS Webinar 20201224AWS Webinar 20201224
AWS Webinar 20201224
陽平 山口
 
NVIDIA deep learning最新情報in沖縄
NVIDIA deep learning最新情報in沖縄NVIDIA deep learning最新情報in沖縄
NVIDIA deep learning最新情報in沖縄
Tak Izaki
 
機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編
Daiyu Hatakeyama
 
NVIDIA Deep Learning SDK を利用した画像認識
NVIDIA Deep Learning SDK を利用した画像認識NVIDIA Deep Learning SDK を利用した画像認識
NVIDIA Deep Learning SDK を利用した画像認識
NVIDIA Japan
 
Sparkパフォーマンス検証
Sparkパフォーマンス検証Sparkパフォーマンス検証
Sparkパフォーマンス検証
BrainPad Inc.
 
MPSoCのPLの性能について
MPSoCのPLの性能についてMPSoCのPLの性能について
MPSoCのPLの性能について
marsee101
 
[db tech showcase Sapporo 2015] B14:データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第二章 b...
[db tech showcase Sapporo 2015] B14:データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第二章 b...[db tech showcase Sapporo 2015] B14:データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第二章 b...
[db tech showcase Sapporo 2015] B14:データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第二章 b...
Insight Technology, Inc.
 
GPUディープラーニング最新情報
GPUディープラーニング最新情報GPUディープラーニング最新情報
GPUディープラーニング最新情報
ReNom User Group
 
【A-1】AIを支えるGPUコンピューティングの今
【A-1】AIを支えるGPUコンピューティングの今【A-1】AIを支えるGPUコンピューティングの今
【A-1】AIを支えるGPUコンピューティングの今
Developers Summit
 
20170421 tensor flowusergroup
20170421 tensor flowusergroup20170421 tensor flowusergroup
20170421 tensor flowusergroup
ManaMurakami1
 
A100 GPU 搭載! P4d インスタンス 使いこなしのコツ
A100 GPU 搭載! P4d インスタンス使いこなしのコツA100 GPU 搭載! P4d インスタンス使いこなしのコツ
A100 GPU 搭載! P4d インスタンス 使いこなしのコツ
Kuninobu SaSaki
 
[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(ディープラーニング・ラボ)
 
GTC 2017 基調講演からディープラーニング関連情報のご紹介
GTC 2017 基調講演からディープラーニング関連情報のご紹介GTC 2017 基調講演からディープラーニング関連情報のご紹介
GTC 2017 基調講演からディープラーニング関連情報のご紹介
NVIDIA Japan
 
【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ
【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ
【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ
日本マイクロソフト株式会社
 
FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみた
Takefumi MIYOSHI
 
機械学習 / Deep Learning 大全 (6) Library編
機械学習 / Deep Learning 大全 (6) Library編機械学習 / Deep Learning 大全 (6) Library編
機械学習 / Deep Learning 大全 (6) Library編
Daiyu Hatakeyama
 
Gpgpu tomoaki-fp16
Gpgpu tomoaki-fp16Gpgpu tomoaki-fp16
Gpgpu tomoaki-fp16
tomoaki0705
 
【関東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
 
FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化
Kazunori Sato
 
AWS Webinar 20201224
AWS Webinar 20201224AWS Webinar 20201224
AWS Webinar 20201224
陽平 山口
 
NVIDIA deep learning最新情報in沖縄
NVIDIA deep learning最新情報in沖縄NVIDIA deep learning最新情報in沖縄
NVIDIA deep learning最新情報in沖縄
Tak Izaki
 
機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編機械学習 / Deep Learning 大全 (4) GPU編
機械学習 / Deep Learning 大全 (4) GPU編
Daiyu Hatakeyama
 
NVIDIA Deep Learning SDK を利用した画像認識
NVIDIA Deep Learning SDK を利用した画像認識NVIDIA Deep Learning SDK を利用した画像認識
NVIDIA Deep Learning SDK を利用した画像認識
NVIDIA Japan
 
Sparkパフォーマンス検証
Sparkパフォーマンス検証Sparkパフォーマンス検証
Sparkパフォーマンス検証
BrainPad Inc.
 
MPSoCのPLの性能について
MPSoCのPLの性能についてMPSoCのPLの性能について
MPSoCのPLの性能について
marsee101
 
[db tech showcase Sapporo 2015] B14:データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第二章 b...
[db tech showcase Sapporo 2015] B14:データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第二章 b...[db tech showcase Sapporo 2015] B14:データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第二章 b...
[db tech showcase Sapporo 2015] B14:データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第二章 b...
Insight Technology, Inc.
 
Ad

More from Kuninobu SaSaki (20)

EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活
Kuninobu SaSaki
 
GTC 2019 NVIDIA NEWS
GTC 2019 NVIDIA NEWSGTC 2019 NVIDIA NEWS
GTC 2019 NVIDIA NEWS
Kuninobu SaSaki
 
SC18 NVIDIA NEWS
SC18 NVIDIA NEWSSC18 NVIDIA NEWS
SC18 NVIDIA NEWS
Kuninobu SaSaki
 
GTC Japan 2018 NVIDIA NEWS
GTC Japan 2018 NVIDIA NEWSGTC Japan 2018 NVIDIA NEWS
GTC Japan 2018 NVIDIA NEWS
Kuninobu SaSaki
 
ISC17 NVIDIA NEWS 日本版
ISC17 NVIDIA NEWS 日本版ISC17 NVIDIA NEWS 日本版
ISC17 NVIDIA NEWS 日本版
Kuninobu SaSaki
 
GTC17 NVIDIA News
GTC17 NVIDIA NewsGTC17 NVIDIA News
GTC17 NVIDIA News
Kuninobu SaSaki
 
SC16 NVIDIA NEWS
SC16 NVIDIA NEWSSC16 NVIDIA NEWS
SC16 NVIDIA NEWS
Kuninobu SaSaki
 
20150821 Azure 仮想マシンと仮想ネットワーク
20150821 Azure 仮想マシンと仮想ネットワーク20150821 Azure 仮想マシンと仮想ネットワーク
20150821 Azure 仮想マシンと仮想ネットワーク
Kuninobu SaSaki
 
Azure仮想マシンと仮想ネットワーク
Azure仮想マシンと仮想ネットワークAzure仮想マシンと仮想ネットワーク
Azure仮想マシンと仮想ネットワーク
Kuninobu SaSaki
 
もっとわかる Microsoft Azure 最新技術アップデート編 - 20150123
もっとわかる Microsoft Azure最新技術アップデート編 - 20150123もっとわかる Microsoft Azure最新技術アップデート編 - 20150123
もっとわかる Microsoft Azure 最新技術アップデート編 - 20150123
Kuninobu SaSaki
 
Cloudera World Tokyo 2014 LTセッション「マイクロソフトとHadoop」
Cloudera World Tokyo 2014 LTセッション「マイクロソフトとHadoop」Cloudera World Tokyo 2014 LTセッション「マイクロソフトとHadoop」
Cloudera World Tokyo 2014 LTセッション「マイクロソフトとHadoop」
Kuninobu SaSaki
 
20140818 オープン白熱塾 ksasakims
20140818 オープン白熱塾 ksasakims20140818 オープン白熱塾 ksasakims
20140818 オープン白熱塾 ksasakims
Kuninobu SaSaki
 
YAPC::Asia Tokyo 2013 ランチセッション
YAPC::Asia Tokyo 2013 ランチセッションYAPC::Asia Tokyo 2013 ランチセッション
YAPC::Asia Tokyo 2013 ランチセッション
Kuninobu SaSaki
 
Windows Azure HDInsight サービスの紹介
Windows Azure HDInsight サービスの紹介Windows Azure HDInsight サービスの紹介
Windows Azure HDInsight サービスの紹介
Kuninobu SaSaki
 
Effective Hyper-V - 久しぶりエディション
Effective Hyper-V - 久しぶりエディションEffective Hyper-V - 久しぶりエディション
Effective Hyper-V - 久しぶりエディション
Kuninobu SaSaki
 
HPC Azure TOP500 2012-11
HPC Azure TOP500 2012-11HPC Azure TOP500 2012-11
HPC Azure TOP500 2012-11
Kuninobu SaSaki
 
WDD2012_SC-004
WDD2012_SC-004WDD2012_SC-004
WDD2012_SC-004
Kuninobu SaSaki
 
TechEd2010_T2-401_EffectiveHyper-V
TechEd2010_T2-401_EffectiveHyper-VTechEd2010_T2-401_EffectiveHyper-V
TechEd2010_T2-401_EffectiveHyper-V
Kuninobu SaSaki
 
TechEd2009_T1-402_EffectiveHyper-V
TechEd2009_T1-402_EffectiveHyper-VTechEd2009_T1-402_EffectiveHyper-V
TechEd2009_T1-402_EffectiveHyper-V
Kuninobu SaSaki
 
TechEd2008_T1-407_EffectiveHyper-V
TechEd2008_T1-407_EffectiveHyper-VTechEd2008_T1-407_EffectiveHyper-V
TechEd2008_T1-407_EffectiveHyper-V
Kuninobu SaSaki
 
EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活
Kuninobu SaSaki
 
GTC Japan 2018 NVIDIA NEWS
GTC Japan 2018 NVIDIA NEWSGTC Japan 2018 NVIDIA NEWS
GTC Japan 2018 NVIDIA NEWS
Kuninobu SaSaki
 
ISC17 NVIDIA NEWS 日本版
ISC17 NVIDIA NEWS 日本版ISC17 NVIDIA NEWS 日本版
ISC17 NVIDIA NEWS 日本版
Kuninobu SaSaki
 
20150821 Azure 仮想マシンと仮想ネットワーク
20150821 Azure 仮想マシンと仮想ネットワーク20150821 Azure 仮想マシンと仮想ネットワーク
20150821 Azure 仮想マシンと仮想ネットワーク
Kuninobu SaSaki
 
Azure仮想マシンと仮想ネットワーク
Azure仮想マシンと仮想ネットワークAzure仮想マシンと仮想ネットワーク
Azure仮想マシンと仮想ネットワーク
Kuninobu SaSaki
 
もっとわかる Microsoft Azure 最新技術アップデート編 - 20150123
もっとわかる Microsoft Azure最新技術アップデート編 - 20150123もっとわかる Microsoft Azure最新技術アップデート編 - 20150123
もっとわかる Microsoft Azure 最新技術アップデート編 - 20150123
Kuninobu SaSaki
 
Cloudera World Tokyo 2014 LTセッション「マイクロソフトとHadoop」
Cloudera World Tokyo 2014 LTセッション「マイクロソフトとHadoop」Cloudera World Tokyo 2014 LTセッション「マイクロソフトとHadoop」
Cloudera World Tokyo 2014 LTセッション「マイクロソフトとHadoop」
Kuninobu SaSaki
 
20140818 オープン白熱塾 ksasakims
20140818 オープン白熱塾 ksasakims20140818 オープン白熱塾 ksasakims
20140818 オープン白熱塾 ksasakims
Kuninobu SaSaki
 
YAPC::Asia Tokyo 2013 ランチセッション
YAPC::Asia Tokyo 2013 ランチセッションYAPC::Asia Tokyo 2013 ランチセッション
YAPC::Asia Tokyo 2013 ランチセッション
Kuninobu SaSaki
 
Windows Azure HDInsight サービスの紹介
Windows Azure HDInsight サービスの紹介Windows Azure HDInsight サービスの紹介
Windows Azure HDInsight サービスの紹介
Kuninobu SaSaki
 
Effective Hyper-V - 久しぶりエディション
Effective Hyper-V - 久しぶりエディションEffective Hyper-V - 久しぶりエディション
Effective Hyper-V - 久しぶりエディション
Kuninobu SaSaki
 
HPC Azure TOP500 2012-11
HPC Azure TOP500 2012-11HPC Azure TOP500 2012-11
HPC Azure TOP500 2012-11
Kuninobu SaSaki
 
TechEd2010_T2-401_EffectiveHyper-V
TechEd2010_T2-401_EffectiveHyper-VTechEd2010_T2-401_EffectiveHyper-V
TechEd2010_T2-401_EffectiveHyper-V
Kuninobu SaSaki
 
TechEd2009_T1-402_EffectiveHyper-V
TechEd2009_T1-402_EffectiveHyper-VTechEd2009_T1-402_EffectiveHyper-V
TechEd2009_T1-402_EffectiveHyper-V
Kuninobu SaSaki
 
TechEd2008_T1-407_EffectiveHyper-V
TechEd2008_T1-407_EffectiveHyper-VTechEd2008_T1-407_EffectiveHyper-V
TechEd2008_T1-407_EffectiveHyper-V
Kuninobu SaSaki
 
Ad

Automatic Mixed Precision の紹介

  • 1. 佐々木邦暢 (@_ksasaki) エヌビディア合同会社 AUTOMATIC MIXED PRECISION 2019/5/16 GPU Deep Learning Community #11
  • 2. 2 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP FP32 と FP16 FP32 (単精度) FP16 (半精度) 指数部: 8 ビット、仮数部: 23 ビット 指数部: 5 ビット、仮数部: 10 ビット 表現可能な範囲 1.4 x 10-45 < x < 3.4 x 1038 表現可能な範囲 5.96 x 10-8 < x < 65504
  • 3. 3 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP FP32 と FP16 モデルのパフォーマンスを最大化 FP32 (単精度) を基準にすると FP16 (半精度) の性能は • 計算のスループット • メモリアクセスのスループット • メモリの消費量 (フットプリント) • 計算のスループット - 8 倍 • メモリアクセスのスループット - 2倍 • メモリの消費量 (フットプリント) - 1/2
  • 4. 4 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP TENSOR コア 混合精度行列演算ユニット D = FP32 (FP16) FP16 FP16 FP32 (FP16) A0,0 A0,1 A0,2 A0,3 A1,0 A1,1 A1,2 A1,3 A2,0 A2,1 A2,2 A2,3 A3,0 A3,1 A3,2 A3,3 B0,0 B0,1 B0,2 B0,3 B1,0 B1,1 B1,2 B1,3 B2,0 B2,1 B2,2 B2,3 B3,0 B3,1 B3,2 B3,3 C0,0 C0,1 C0,2 C0,3 C1,0 C1,1 C1,2 C1,3 C2,0 C2,1 C2,2 C2,3 C3,0 C3,1 C3,2 C3,3 行列の FMA (Fused Multiply-Add) 4x4 の行列の積和演算を1サイクルで計算する性能: 128 演算/サイクル/Tensor コア、1024 演算/サイクル/SM A B C
  • 5. 5 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP 混合精度演算で学習を3倍高速化 Tesla V100 搭載のサーバーでの例 Server: NVIDIA DGX-2 | GPU: 1x V100-SXM3-32GB | CPU: Platinum8168 PyTorch: GNMT: 19.01_py3, Dataset: WMT16 English-German | TensorFlow: OpenSeq2Seq(GNMT), 18.11_py3, Dataset: WMT16 English-German | MXNet: ResNet50: 18.12_py3, Dataset: ImageNet2012 Faster Time to Train Increased Data Scientist Productivity Lower TCO 23435 8115 80051 24476 0 20000 40000 60000 80000 100000 PyTorch GNMT TensorFlow OpenSeq2Seq(GNMT) TotalTokens/sec FP32 Mixed 439 1413 0 400 800 1200 1600 MXNet ResNet50Images/sec 3.0X 3.2X 3.4X Scale-up Server 1x V100 GPU
  • 6. 6 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP Tensor コアによる混合精度演算 精度を妥協することなく高いスループットを実現 ILSVRC12 classification top-1 accuracy. (Sharan Narang, Paulius Micikevicius et al., "Mixed Precision Training“, ICLR 2018) **Same hyperparameters and learning rate schedule as FP32. 0.00% 10.00% 20.00% 30.00% 40.00% 50.00% 60.00% 70.00% 80.00% AlexNet VGG-D GoogleNet (Inception v1) Inception v2 Inception v3 Resnet50 精度 FP32 Mixed Precision**
  • 7. 7 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP 機械学習のパフォーマンスを 計測する初めてのベンチマークテスト https://mlperf.org/
  • 8. 8 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP 混合精度演算が MLPERF で勝利 シングルノードでのトレーニング時間 7 部門中 6 部門で NVIDIA GPU が首位を獲得 画像分類 ResNet50 v.1.5 物体検出 (高負荷) Mask R-CNN 物体検出 (軽負荷) SSD 翻訳 GNMT 翻訳 Transformer レコメンデーション NCF 70 分 167 分 14分 10分 19分 0.4分 Test Platform: DGX-2H - Dual-Socket Xeon Platinum 8174, 1.5TB system RAM, 16 x 32 GB Tesla V100 SXM-3 GPUs connected via NVSwitch
  • 9. 9 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP AMP GRAPH OPTIMIZATION CHOOSING WHAT AND WHERE TO CAST
  • 10. 10 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP 混合精度演算の自動適用 (AMP) わずか数行のコード追加で AMP を有効化することで、最大 3 倍程度のスピードアップ 演算ごとに適切な精度を利用するためにグラフ最適化技術を活用 TensorFlow, PyTorch, MXNet をサポート 容易な高速化で生産性を向上
  • 11. 11 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP 勾配のアンダーフロー 勾配の値が 0 に近づくと 0 に丸められてしまう
  • 12. 12 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP ロス スケーリング 小さな値が FP16 の表現可能範囲に収まるようにスケールする
  • 13. 13 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP キャストすべきものの選択 1. できる限り FP16 を使うようにする 特に Tensor コアで実行できる操作は効果が大きいので優先 2. 精度を維持することが重要な部分では FP32 を使う 3. FP16 と FP32 間の「キャスト スラッシング」を避ける ガイドライン
  • 14. 14 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP キャストすべきものの選択 演算を 3+1 のカテゴリに分類 常にキャスト (Always) FP16 化の効果が大きい演算。これらはコストをかけてキャストする価値がある。 例: matmul, conv2d キャストするかも (Maybe) FP16 化によって速くはなるがキャストのコストと見合うとは限らないもの。 例: add, relu キャストしない (Never) 数値的安定性を維持するために FP32 が必要なもの。 例: exp, softmax_cross_entropy_with_logits その他 FP16 実装がないものや入力が浮動小数点型でないもの。
  • 15. 15 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP キャスト可否判定グラフの例 Placeholder Mul Reciprocal GradFilter MatMul Placeholder GradInput ReluGrad LossGrad MatMul Conv2d Relu Add Loss MatMul VariableV2 Mul VariableV2 Mul VariableV2
  • 16. 16 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP キャスト可否判定グラフの例 ステップ 1: 演算の色を初期化 Placeholder Mul Reciprocal GradFilter MatMul Placeholder GradInput ReluGrad LossGrad MatMul Conv2d Relu Add Loss MatMul VariableV2 Mul VariableV2 Mul VariableV2
  • 17. 17 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP キャスト可否判定グラフの例 ステップ 2: "Never" の伝播 Placeholder Mul Reciprocal GradFilter MatMul Placeholder GradInput ReluGrad LossGrad MatMul Conv2d Relu Add Loss MatMul VariableV2 Mul VariableV2 Mul VariableV2
  • 18. 18 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP キャスト可否判定グラフの例 ステップ 3: "Always" に挟まれた "Maybe" Placeholder Mul Reciprocal GradFilter MatMul Placeholder GradInput ReluGrad LossGrad MatMul Conv2d Relu Add Loss MatMul VariableV2 Mul VariableV2 Mul VariableV2
  • 19. 19 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP キャスト可否判定グラフの例 ステップ 4: "Always" の境界検出 Placeholder Mul Reciprocal GradFilter MatMul Placeholder GradInput ReluGrad LossGrad MatMul Conv2d Relu Add Loss MatMul VariableV2 Mul VariableV2 Mul VariableV2
  • 20. 20 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP キャスト可否判定グラフの例 ステップ 5: キャストの挿入 FP16 Cast Mul Reciprocal GradFilter MatMul Placeholder GradInput ReluGrad LossGrad MatMul Conv2d Relu Add Loss MatMul VariableV2 Mul VariableV2 Mul VariableV2 Placeholder FP16 Cast FP16 Cast FP32 Cast FP16 Cast FP32 Cast FP32 Cast
  • 21. 21 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP AMP GENERAL PURPOSE
  • 22. 22 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP 混合精度演算は汎用的
  • 23. 23 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP 混合精度演算による高速化 画像分類に限らず様々なタスクで有効
  • 24. 24 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP AMP SCHEDULE & USAGE
  • 25. 25 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP 自動混合精度演算の有効化 わずか数行の追加で最大 3 倍の高速化 More details: https://developer.nvidia.com/automatic-mixed-precision TensorFlow PyTorch MXNet os.environ['TF_ENABLE_AUTO_MIXED_PRECISION'] = '1' amp.init() amp.init_trainer(trainer) with amp.scale_loss(loss, trainer) as scaled_loss: autograd.backward(scaled_loss) model, optimizer = amp.initialize(model, optimizer) with amp.scale_loss(loss, optimizer) as scaled_loss: scaled_loss.backward() OR export TF_ENABLE_AUTO_MIXED_PRECISION=1 GA Available Since Q2 2018 GA Coming Soon GA GTC 19
  • 26. 26 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP CHAINER の MIXED PRECISION 対応 https://github.com/chainer/chainer/pull/6337https://github.com/chainer/chainer/pull/6337
  • 27. 27 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP https://twitter.com/melleo1978/status/1110203991764262913
  • 28. 28 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP NGC の TensorFlow イメージ 19.03 以降は Automatic Mixed Precision 対応 https://ngc.nvidia.com/catalog/containers/nvidia:tensorflow
  • 29. 29 Follow us on Twitter! @NVIDIAAIJP ハッシュタグ: #GDLCJP ngc.nvidia.com