volta tensorコアで、 高速かつ高精度にdlモデ …成瀬彰,...
TRANSCRIPT
![Page 1: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/1.jpg)
成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12
VOLTA TENSORコアで、高速かつ高精度にDLモデルをトレーニングする方法
![Page 2: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/2.jpg)
2
アジェンダ
• Tensorコアとトレーニングの概要
• 混合精度(Tensorコア)で、FP32と同等の精度を得る方法
• ウェイトをFP16とFP32を併用して更新する
• ロス・スケーリング
• DLフレームワーク対応状況
• ウェイトをFP16で更新する
![Page 3: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/3.jpg)
3
VOLTA TENSORコア4x4の行列の乗算を1サイクルで実行
D = AB + C
D =
FP16 or FP32 FP16 FP16 FP16 or FP32
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
![Page 4: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/4.jpg)
4
VOLTA TENSORコアVolta Tensor Core
P100 V100
FP16/Tensorコア 20 TFLOPS 125 TFLOPS
FP32 10 TFLOPS 15.6 TFLOPS
FP16
FP16
× + FP32
FP32
FP16 FP32
混合精度演算
16bit
16bit
32bit
![Page 5: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/5.jpg)
5
CUDNN: TENSORコアの実効性能Pascal FP32 vs. V100 Tensorコア
Convolution層の性能比較
![Page 6: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/6.jpg)
6
Resnet50, Imagenet, Batch:128P100 FP32, V100 FP32 vs. V100 Tensorコア
0 100 200 300 400 500 600
Conv BN Relu Cupy_* Misc.
570 ms
360 ms
197 ms
Time per iteration [ms]
約3倍
P100 FP32
V100 FP32
V100Tensorコア
(*) Chainer 3.0.0rc1+ と CuPy 2.0.0rc1+ を使用
![Page 7: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/7.jpg)
7
トレーニングの流れForward
Forw
ard
![Page 8: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/8.jpg)
8
トレーニングの流れBackprop
Backpro
p
![Page 9: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/9.jpg)
9
トレーニングの流れUpdate
Update
![Page 10: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/10.jpg)
10
トレーニングの流れForward
Forw
ard
![Page 11: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/11.jpg)
11
データ型に基づくトレーニングの分類FP32, FP16, 混合精度
トレーニング 入力データ行列演算乗算 (x)
行列演算加算 (+)
GPU
FP32 FP32 FP32 FP32 ○
FP16 FP16 FP16 FP16 Pascal
混合精度 FP16 FP16 FP32 Volta
![Page 12: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/12.jpg)
12
半精度浮動小数点(FP16)
• IEEE754
• 単精度(FP32)と比べると、表現可能レンジが非常に狭い
FP16
FP32
![Page 13: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/13.jpg)
13
TENSORコアの計算精度
Tensorコアの演算結果は、FP16と比べて、FP32との誤差が小さい
FP32に近い結果
• 行列A: 指数分布 (activation)
• 行列B: 正規分布 (weight)
(平均0.0, 分散1.0)
• 内積長: 32 – 1024
• 1万サンプル
• 誤差区間: 99%
0.8
0.9
1
1.1
1.2
32
64
128
256
512
1024
32
64
128
256
512
1024
32
64
128
256
512
1024
FP32 TensorCore FP16
内積長
平均
誤差範囲
![Page 14: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/14.jpg)
14
混合精度(TENSORコア)でトレーニング
Q: FP32でトレーニングしたモデルと、同じ精度を得られるのか?
A: 可能です、その方法を説明します
![Page 15: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/15.jpg)
15
ウェイトの更新には、FP16とFP32を併用する
![Page 16: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/16.jpg)
16
トレーニング (FP16、混合精度)ストレージはFP16
FP16FP16 FP16ストレージのデータ型 FP16
W = W – λ*ΔW
(FP16)
勾配は小さい
重みが更新されない可能性
更新消失問題
![Page 17: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/17.jpg)
17
半精度浮動小数点(FP16)
表現可能範囲が狭い
FP16の仮数部は10ビット
FP16
FP32
2048 + 1 = ?2048 + 1 = 2049 ?2048 + 1 = 2048
![Page 18: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/18.jpg)
18
ウェイトはFP32で更新
FP16FP16 FP16ストレージのデータ型
FP16FP32
![Page 19: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/19.jpg)
19
ウェイトはFP32で更新
• Updateは、FP32で計算する
• FP16の勾配を、FP32に変換
• FP32のウェイト(マスターコピー)を、FP32で更新
• FP32のウェイトから、FP16のウェイトを作成
W = W – λ*ΔW(FP32)
ΔW(FP16)
ΔW(FP32)
W(FP32)
W(FP16)
Weight UpdateBackprop Forward
変換 変換
Q: FP32で更新すると遅くならないか?
![Page 20: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/20.jpg)
20
トレーニングの時間比率
トレーニング時間の大部分は、BackwardとForward
Updateの時間は短い、FP32計算によるスピード低下は僅か
BackwardForward
Update
![Page 21: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/21.jpg)
21
トレーニングの分類
トレーニング 入力データ行列乗算乗算 (x)
行列乗算加算 (+)
ウェイト更新 GPU
FP32 FP32 FP32 FP32 FP32
FP16 FP16 FP16 FP16 FP16/FP32 Pascal
混合精度 FP16 FP16 FP32 FP16/FP32 Volta
![Page 22: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/22.jpg)
22
混合精度+ウェイトFP32更新
• FP32モデルと同等の精度が得られるケースも多い
• 同じソルバー、同じハイパーパラメータ、同じ学習レートコントロール、…
• 画像分類 (ImageNet)
• GoogleNet, VGG-D, Inception v3, ResNet-50
• ソルバー: モメンタムSGD
• 言語モデル、機械翻訳
• NMT
• ソルバー: ADAM
多くのモデルは、これで収束する
![Page 23: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/23.jpg)
23
GOOGLENETFP32の学習カーブと一致
![Page 24: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/24.jpg)
24
INCEPTION V1FP32の学習カーブと一致
![Page 25: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/25.jpg)
25
RESNET-50FP32の学習カーブと一致
![Page 26: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/26.jpg)
26
混合精度+ウェイトFP32更新
• CNN (画像分類)
• Alexnet, CaffeNet
• CNN (物体検出)
• Multibox SSD (VGG-D): 学習できず
• Faster R-CNN (VGG-D): 精度低下 mAP: 69.1% (FP32) 68.5% (Tensorコア)
• RNN
• Seq2seq (アテンション付): 収束が遅い
• bigLSTM: 途中から発散
収束しないケース
Q: 問題は何?
![Page 27: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/27.jpg)
27
アクティベーションの勾配
![Page 28: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/28.jpg)
28
アクティベーションの勾配のヒストグラム
FP32:
• ゼロ: 67%
• 非ゼロ: 33%
FP16:
• ゼロ: 94%
• 非ゼロ: 6%
Multibox SSD (VGG-D, FP32)
![Page 29: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/29.jpg)
29
アクティベーションの勾配のヒストグラム
• FP16で表現可能なレンジが、ほとんど使われていない
Multibox SSD (VGG-D, FP32)
![Page 30: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/30.jpg)
30
ロス・スケーリング
![Page 31: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/31.jpg)
31
ロス・スケーリング
• 問題: 勾配消失
• アクティベーションの勾配値は小さい、データ型をFP16にするとゼロになる
• 解決法: ロススケーリング
• ロスの値をスケールアップ(大きく)してから、Backpropする
• ウェイト更新の直前に、ウェイトの勾配をスケールダウン(小さく)する
• スケーリングファクター: 新ハイパーパラメータ?
![Page 32: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/32.jpg)
32
ロス・スケーリングスケールアップ
スケールダウン
勾配消失回避
![Page 33: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/33.jpg)
33
ロス・スケーリング
• (例) ロスの値を256倍
• 勾配の値も256倍になる
• 効果:
• アクティベーションの勾配値がFP16の表現可能域にシフト
• ウェイトの勾配値はFP16の正規数領域に入る
![Page 34: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/34.jpg)
34
ロス・スケーリングの効果
トレーニングモード Top1 (%) Top5 (%)
FP32 58.6 81.3
FP16 (スケーリング無し) 56.7 78.1
FP16 (scaling=1000) 58.9 81.1
Tensorコア (scaling=1000) 59.1 81.2
Alexnet
(*) Nvcaffe-0.16, momentum SGD, 100 epochs, 1024 batch, DGX1
![Page 35: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/35.jpg)
35
ロス・スケーリングの効果Alexnet
FP32
FP16 (scaling=1000)
FP32
FP16 (no scaling)
ロス・スケーリング無し ロス・スケーリング有り
![Page 36: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/36.jpg)
36
ロス・スケーリングの効果
トレーニングモードMultibox SSD
(mAP)
Facter-RCNN
(mAP)
FP32 76.9% 69.1%
Tensorコア (スケーリング無し) X 68.5%
Tensorコア (scaling=256) 77.1% 69.7%
物体検出
![Page 37: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/37.jpg)
37
SEQ2SEQ
• OpenSeq2Seq
• https://github.com/NVIDIA/OpenSeq2Sseq
• NMT_ONE model
• Encoder: 2-layer bi-directional (512 LSTM)
• Attention: Normalized Bahdanau
• Decoder: 4-layer (512 LSTM)
NMT: ドイツ語 – 英語
![Page 38: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/38.jpg)
38
SEQ2SEQOpenSeq2Seq
fp32 TensorCore TensorCore (s=1024)
単にTensorコアを使用するだけでは、精度が低下
ロス・スケーリング(1024)で、FP32と同程度の精度
![Page 39: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/39.jpg)
39
SEQ2SEQNMT_ONE
fp32 TensorCore (s=32K)
fp32 TensorCore (s=32K)
スケーリングファクター小さくできないか?
ロス・スケーリング使用で、FP32と同程度の精度
スケーリングファクター: 32K
![Page 40: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/40.jpg)
40
ロス関数変更とラーニングレート調整
• Ave Loss Sum Loss
• LARS (Layer-wise Adaptive Rate Scaling)
レイヤー毎に学習率を調整
(*) Yang You, et al., “Large Batch Training of Convolutional Networks”, 2017
![Page 41: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/41.jpg)
41
SEQ2SEQNMT_ONE
fp32 TensorCore (s=512)
fp32 TensorCore (s=512)
Sum LossとLARS使用
スケーリングファクター: 512FP32と同程度の精度
![Page 42: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/42.jpg)
42
fp32 TensorCore (s=1024)
fp32 TensorCore (s=1024)
Encoder: 8-layer bi-directional (1024 LSTM)Attention: GNMT-style normalized BahdanauDecoder: 8-layer (1024 LSTM)
SEQ2SEQGNMT-like
(*) Yonghui Wu, et al.: “Google’s neural machine translation system: Bridging the gap between human and machine translation.”, 2016
Sum LossとLARS使用
スケーリングファクター: 1024FP32と同程度の精度
![Page 43: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/43.jpg)
43
言語モデル
• 1 Billion Word Language Benchmark
• BigLSTM
• 2 x 8192 LSTM, 1024 Projection
• Vocabulary: 800K words
• Solver: Adagrad
(*) Rafal Jozefowicz, et al.: “Exploring the Limits of Language Modeling.”, 2016
![Page 44: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/44.jpg)
44
言語モデルBigLSTM: 2 x 8192 LSTM, 1024 projection
ロス・スケーリング無しでは収束せず
![Page 45: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/45.jpg)
45
言語モデルBigLSTM: 2 x 8192 LSTM, 1024 projection
ロス・スケーリング(128)で、FP32と同程度の精度
![Page 46: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/46.jpg)
46
勾配値の特徴
勾配の範囲は、FP16の表現可能領域より、小さいほうに偏っている
• 最大値は高々10程度?
• オーバフローすることなく、スケールアップ可能( ~ 1024倍 )
重みの勾配 >> Activationの勾配
• 消失しやすいのは、Activationの勾配
• ほぼ全てのモデルで共通の傾向
Activation
Weight
![Page 47: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/47.jpg)
47
VOLTA 混合精度トレーニング
• ストレージ (weights, activation, gradients): FP16
• ForwardとBackpropの計算: Tensorコア
• Batch Normalizationの計算はFP32 (cuDNNは、FP16入力、FP32計算)
• Updateの計算: FP32 (weightsはfp16とfp32の両方で管理)
注意
• 勾配は、FP16で表現できないほど、小さくなることがある (勾配消失)
• 勾配消失は、ロススケーリングで解消できる
FP32と同じ精度のモデルをトレーニングする方法
![Page 48: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/48.jpg)
48
DLフレームワークの対応状況
![Page 49: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/49.jpg)
49
NVIDIA CAFFE 0.16
FP16、Tensorコアに完全対応
ForwardとBackward: それぞれ、データ型、計算型を指定可能 (FP32 or FP16)
ウェイト更新: FP32更新対応
ロス・スケーリング対応
https://github.com/NVIDIA/caffe/tree/caffe-0.16
![Page 50: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/50.jpg)
50
NVIDIA CAFFE 0.16https://github.com/NVIDIA/caffe/tree/caffe-0.16
![Page 51: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/51.jpg)
51
TENSOR FLOW
Tensorコア: TensorFlow 1.4で対応
データ型をFP16にすると、Tensorコアを使用
ウェイトFP32更新: 可能
ロススケーリング: 可能
tf.cast(tf.get_variable(..., dtype=tf.float32), tf.float16)
scale = 128
grads = [grad / scale for grad in tf.gradients(loss * scale, params)]
![Page 52: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/52.jpg)
52
PYTORCH
Tensorコア: 対応
FP16ストレージにすると、Tensorコアを使用
ウェイトFP32更新: 可能
ロススケーリング: 可能
Input = input.cuda().half()
model = model.cuda().half()
![Page 53: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/53.jpg)
53
CHAINER
Tensorコア: Chainer V4で対応予定
データ型をFP16にすると、Tensorコア使用
FP32パラメータ更新: 対応
ロススケーリング: 対応(予定)
x = F.cast(x, np.float16)
optimizer = chinaer.optimizers.SGD()
optimizer.use_fp32_update()
loss = lossfunc(y, t)
loss.backward(loss_scale=1024)
![Page 54: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/54.jpg)
54
ウェイトをFP16で更新できないか?
![Page 55: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/55.jpg)
55
ウェイトをFP32で更新する問題
FP16とFP32の2種類のデータ型で、ウェイトを管理する必要がある
メモリ使用量の増加
FP16でウェイトを更新できないか?
![Page 56: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/56.jpg)
56
SGD
SGDによるウェイト更新
W(t+1) = W(t) – λ * ΔW(t) (λ:学習率)
FP16を使うと、λ*ΔW(t) が小さくなりすぎることがある
• 学習初期: ΔW(t)が非常に小さい (λ<1)
• 中盤以降: 学習初期より、ΔW(t)は大きくなるが、λは小さくなる
FP16の問題: 更新消失
![Page 57: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/57.jpg)
57
モメンタムSGD
1.モメンタム計算: H(t+1) = m * H(t) – λ * ΔW(t) (m:モメンタム係数)
2.ウェイト更新: W(t+1) = W(t) + H(t+1)
FP16の場合、モメンタム計算、 λ * ΔW(t) の減算で更新消失が起きやすい
![Page 58: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/58.jpg)
58
モメンタムSGD
1.モメンタム計算: H(t+1) = m * H(t) – λ * ΔW(t) (m:モメンタム係数)
2.ウェイト更新: W(t+1) = W(t) + H(t+1)
モメンタム計算再考
H(t+1) = – λ*ΔW(t) + m*H(t)
= – λ*ΔW(t) + m*( – λ*ΔW(t-1) + m*H(t-1) )
= – λ*ΔW(t) + m*( – λ*ΔW(t-1) + m*( – λ*ΔW(t-2) + m*H(t-2) ) )
= – λ * ( ΔW(t) + m*ΔW(t-1) + m2*ΔW(t-2) + … + mk*ΔW(t-k) + …)
モメンタムは、勾配の蓄積と見なすことができる?
![Page 59: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/59.jpg)
59
修正モメンタムSGD
モメンタムSGD
1.モメンタム計算: H(t+1) = m * H(t) – λ * ΔW(t)
2.ウェイト更新: W(t+1) = W(t) + H(t+1)
こう、解釈することも可能
1.モメンタム計算: G(t+1) = m * G(t) + ΔW(t)
2.ウェイト更新: W(t+1) = W(t) – λ * G(t+1)
G(t)は勾配の蓄積なので消失しにくい ウェイトは正しく更新される?
FP32を使わなくても、更新消失を回避できる?
![Page 60: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/60.jpg)
60
ウェイトもFP16で更新
AlexNet
• FP32と同じ精度を達成
修正モメンタムSGD
![Page 61: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/61.jpg)
61
ALEXNET
トレーニングモード Top1 (%) Top5 (%)
FP32 58.6 81.3
FP16 (スケーリング無し) 56.7 78.1
FP16 (scaling=1000) 58.9 81.1
Tensorコア (scaling=1000) 59.1 81.2
Tensorコア (scale=1000), FP16ウェイト更新 58.5 81.2
修正モメンタムSGD
![Page 62: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/62.jpg)
62
INCEPTION-V3
トレーニングモード Top1 (%) Top5 (%)
FP32 73.8 91.4
FP16 (スケーリング無し) 51.4 90.8
FP16 (scaling=100) 74.1 91.5
FP16 (scale=100), FP16ウェイト更新 73.5 91.1
修正モメンタムSGD
![Page 63: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/63.jpg)
63
INCEPTION-V3修正モメンタムSGD
![Page 64: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/64.jpg)
64
RESNET50
トレーニングモード Top1 (%) Top5 (%)
FP32 73.2 91.2
FP16 (no scaling) 73.2 90.9
FP16 (no scaling), FP16ウェイト更新 72.7 91.4
Tensorコア (no scaling), FP16ウェイト更新 73.5 91.4
修正モメンタムSGD
![Page 65: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/65.jpg)
65
RESNET50修正モメンタムSGD
Iteration
![Page 66: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/66.jpg)
66
まとめ
Tensorコア(混合精度)トレーニング
• ForwardとBackprop(計算の大部分)はTensorコアで計算する
• ウェイトをFP32で更新する
• 多くのモデルはこれで収束 (FP32と同程度の精度)
• それ以外も、ロス・スケーリング設定でFP32レベルの精度に回復
ウェイトもFP16で更新
• モメンタムSGDの修正で、CNNでFP32と同等の精度を確認
![Page 67: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/67.jpg)
67
LINKS
“Mixed-Precision Training of Deep Neural Networks”, NVIDIA blog post
• devblogs.nvidia.com/parallelforall/mixed-precision-training-deep-neural-networks/
“Training with Mixed Precision”, NVIDIA DL SDK doc
• docs.nvidia.com/deeplearning/sdk/mixed-precision-training/index.html
Paulius Micikevicius, et al., “Mixed Precision Training”
• arxiv.org/abs/1710.03740
![Page 68: VOLTA TENSORコアで、 高速かつ高精度にDLモデ …成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12 VOLTA TENSORコアで、 高速かつ高精度にDLモデルを](https://reader033.vdocuments.net/reader033/viewer/2022041504/5e240c5452004a646b30329b/html5/thumbnails/68.jpg)