佐々木邦暢 (@_ksasaki)
エヌビディア合同会社
最新の NVIDIA AMPERE アーキテクチャに
よる NVIDIA A100 TENSOR コア GPU の
特長とその性能を引き出す方法
2
NVIDIA A100 Tensor コア GPU
かつてない飛躍 - Volta 比最大 20 倍のピーク性能
54B XTOR | 826mm2 | TSMC 7N | 40GB Samsung HBM2 | 600 GB/s NVLink
ピーク性能 V100 比
FP32 トレーニング 312 TFLOPS 20X
INT8 インファレンス 1,248 TOPS 20X
FP64 HPC 19.5 TFLOPS 2.5X
Multi-instance GPU (MIG) 7X GPUs
Tensor コアによる混合精度トレーニング
https://arxiv.org/abs/1710.03740
FP32 と FP16
FP32 (float32、単精度) FP16 (float16、半精度)
指数部: 8 ビット、仮数部: 23 ビット 指数部: 5 ビット、仮数部: 10 ビット
表現可能な範囲
1.4 x 10-45 < x < 3.4 x 1038
表現可能な範囲
5.96 x 10-8 < x < 65504
従来一般的だったのはこちら 混合精度演算で使うのはこちら
FP16 を使うことの利点
メモリが節約できる、だけではない
"half-precision math throughput in recent GPUs is 2× to 8× higher
than for single-precision."
「最近の GPU では FP16 の演算スループットが
FP32 の 2 倍から 8 倍高い」
https://arxiv.org/abs/1710.03740
Tensor コア
行列演算ユニット
D = A * B + C
C,DA
B
行列積は、「小」行列積に分解できる
「小」行列積を、各 Tensor コアで計算
A’
B’
C’
行列の FMA (Fused Multiply-Add: 融合積和演算)
125 TFLOPS: NVIDIA V100 では FP32 比で 8 倍のピーク性能
312 TFLOPS: NVIDIA A100 では FP32 比で 16 倍のピーク性能NEW!
混合精度演算でトレーニングを高速化するには
モデル (計算グラフ) を FP16 にキャスト
• 重みのマスターコピーは FP32 で保持 (誤差の蓄積を防ぐ)
• ロススケーリング (勾配消失を防ぐ)
• 積和演算の乗算を FP16 で、加算は FP32 で実行
これだけでは正確度が維持できない
対策
Tensor コアによる混合精度演算
モデルの正確度を妥協することなく高いスループットを実現
ILSVRC12 classificationtop-1 accuracy.
(Sharan Narang, Paulius Micikevicius et al., "Mixed Precision Training“, ICLR 2018)
**Same hyperparameters and learning rate schedule as FP32.
正確度(Accuracy)
Automatic
Mixed
Precision
自動混合精度演算
自動混合精度演算 (AMP) の有効化
わずか数行の追加で高速化
詳しくはこちら: https://developer.nvidia.com/automatic-mixed-precision
TensorFlow
NVIDIANGC コンテナイメージ19.07以降、TF 1.14 以降及びTF 2 以降では、オプティマイザのラッパーが利用可能:
opt = tf.train.experimental.enable_mixed_precision_graph_rewrite (opt)
Keras mixed precision API in TF 2.1+ for eager execution
https://tensorflow.org/api_docs/python/tf/train/experimental/enable_mixed_precision_graph_rewrite
PyTorch
PyTorch はネイティブにAMP をサポート。詳細は公式ドキュメントを:
https://pytorch.org/docs/stable/amp.html
https://pytorch.org/docs/stable/notes/amp_examples.html
MXNet
NVIDIANGC コンテナイメージ19.04以降、MXNet 1.5 以降は、わずかな追加コードでAMP を利用可能:
amp.init()
amp.init_trainer(trainer)
with amp.scale_loss (loss, trainer) as scaled_loss:
autograd.backward(scaled_loss)
https://mxnet.apache.org/api/python/docs/tutorials/performance/backend/amp.html
17
NVIDIA A100 Tensorコア GPU
18
NVIDIA A100 Tensor コア GPU
かつてない飛躍 - Volta 比最大 20 倍のピーク性能
54B XTOR | 826mm2 | TSMC 7N | 40GB Samsung HBM2 | 600 GB/s NVLink
ピーク性能 V100 比
FP32 トレーニング 312 TFLOPS 20X
INT8 インファレンス 1,248 TOPS 20X
FP64 HPC 19.5 TFLOPS 2.5X
Multi-instance GPU (MIG) 7X GPUs
19
世代別 NVIDIA GPU 製品 (の一部)
GeForce
PC 向け
Quadro
ワークステーション向け
データセンター
GPU
Fermi
(2010)
M2070
6000
GTX 580
Kepler
(2012)
K6000
GTX 780
K80
K2
K1
Maxwell
(2014)
M40
M6000
GTX 980
M60
Volta
(2017)
V100
TITAN V
GV100
Pascal
(2016)
GP100P5000
GTX 1080
P40
P100
Turing
(2018)
T4
RTX
2080
Ampere
(2020)
A100
HPC
DL
学習
DL
推論
VDI
P4
RTX
8000
TITAN XP
NEW!
V100P100
Tensor コア 世代
20
Tensor コア
V100 と A100 の違い
m: 4
n: 4
k: 4
(m, n, k) = (4, 4, 4)
8 スレッド、8 ユニット/SM
FP16
V100
k: 4
A’ C’,D’
B’
A100
n: 8
m: 8
k: 128 bits
(m, n, k) = (8, 8, x)
32 スレッド、4 ユニット/SM
1bit, Int4, Int8, FP16, BF16, TF32, FP64
k: 128
bits
A’ C’,D’
B’
NVIDIA A100
Volta とのピーク性能比較
20X
10XV100 比
A100
SPARSE
TF32
A100
TF32
155
V100
FP32
16
310
A100
SPARSE
FP16
A100
FP16
310
V100
FP16
125
625
A100
INT8
V100
INT8
60
625
A100
SPARSE
INT8
1250
A100
FP64
20
V100
FP64
8
Peak Performance in Trillion OperationsPer Second (TOPS) of A100 Compared to V100 | V100 Rounded offto the nearest whole nu mber | A100 rounded offto the nearest 5.
1.4X
2.0X
1.6X 1.7X
1.9X
2.0X
2.4X
2.7X 2.8X
0.0x
0.5x
1.0x
1.5x
2.0x
2.5x
3.0x
WaveGlow TacoTron 2 RN50 Mask R CNN DLRM Jasper GNMT Transformer BERT
A100
AMP による混合精度トレーニングが最大 2.8 倍高速に
V100 (FP16) と A100 (FP16) の比較
CV ASRRecSysTTS NLP
Speedup
V100
All results are measured
V100 used is DGX-1 (8xV100 16GB). A100 used is s DGX A100 (8xA100 SXM4), except DLRM which uses 1xV100 and 1xA100; all use FP16
RN50 uses MXNET Batch size =192, Mask R CNN uses PyTorch BS = 4 (V100) and BS=16 (A100), DLRM uses PyTorch and BS=32768, Jasper uses PyTorch and BS=32 (V100) and 96 (A10),
WaveGlow uses PyTorch and BS=10, TacoTron2 uses PyTorch and BS=104 (V100) and 100 (A100), Transformer uses PyTorch and BS=5120 (V100) and 13312 (A100 and GNMT uses PyTorch and
BS=128 (V100) and 256 (A100); BERT Pre-Training Throughput using Pytorch including (2/3)Phase 1 and (1/3)Phase 2 | Phase 1 Seq Len = 128, Phase 2 Seq Len = 512
TF32 TENSOR コア
FP32 のレンジと FP16 の精度を合わせ持つ新しい数値データ型
➢ FP32 の指数部、FP16 の仮数部
➢ FP32 を受け取り、TF32で乗算して FP32 で加算
➢ コード変更不要でモデルのトレーニングを高速化
FP32
TENSOR FLOAT 32 (TF32)
FP16
BFLOAT16
8 ビット 23 ビット
8 ビット 10 ビット
5 ビット 10 ビット
8 ビット 7 ビット
指数部 仮数部符号部
FP32 のレンジ
FP16 の精度
FP32 行列 FP32 行列
TF32 フォーマットで乗算
FP32 で加算
FP32 行列
A100 の行列積性能
A100 FP32 (FMA) と比較
TF32: 約 7x 性能 UP
FP16/BF16: 約 14x 性能 UP
cuBLAS 11.0
FP32 (FMA)
Better
2.0X 1.9X
2.9X
3.2X
4.2X 4.1X
5.0X 5.1X
5.8X
0.0x
0.5x
1.0x
1.5x
2.0x
2.5x
3.0x
3.5x
4.0x
4.5x
5.0x
5.5x
6.0x
6.5x
RN50 Mask R CNN Jasper WaveGlow TacoTron 2 DLRM Transformer GNMT BERT
A100
TF32 によりコード変更なしで AI トレーニングを高速化
V100 (FP32) と A100 (TF32) の比較
CV RecSysASR TTS NLP
All results are measured
V100 used is DGX-1 (8xV100 16GB). A100 used is s DGX A100 (8xA100 SXM4), except DLRM which uses 1xV100 and 1xA100; V100 uses FP32 and A100 uses TF32
RN50 uses MXNET Batch size = 96, Mask R CNN uses PyTorch BS = 4 (V100) and BS=8 (A100), DLRM uses PyTorch and BS=32768, Jasper uses PyTorch and BS=16,, WaveGlow uses PyTorch and
BS=4 (V100) and 10 (A100), TacoTron2 uses PyTorch and BS=48 (V100) and 128 (A100), Transformer uses PyTorch and BS=2560 (V100) and 6656 (A100 and GNMT uses PyTorch and BS=128
(V100) and 512 (A100); BERT Pre-Training Throughput using Pytorchincluding (2/3)Phase 1 and (1/3)Phase 2 | Phase 1 Seq Len = 128, Phase 2 Seq Len = 512
Speedup
V100
構造化疎行列による推論高速化
構造的に枝刈り
(連続4要素の内
2要素をゼロに)
圧縮
非ゼロ
index
非ゼロ
要素
ゼロ
×
dot-product
トレーニング後の
「重み」行列
入力
activations
mux
重みを再トレーニング
出力
activations
select
「疎行列化」で計算スループット 2x
「重み」行列のメモリ使用量半減
「疎行列化」後もインファレンス精度は同等
画像・物体認識、セグメンテーション、自然言語モデル、翻訳
Sparse
Tensor Core
mux
ASP: Automatic Sparsity for Retraining in Frameworks
倍精度演算のピーク性能が 2.5 倍に
A100 の Tensor コアは FP64 に対応
1.5x
2x
0
1
2
LSMS BerkeleyGW
A100 Speedup vs. V100 (FP64)
Application [Benchmarks]: BerkeleyGW [Chi Sum + MTXEL] using DGX-1V (8xV100) and DGX-A100 (8xA100) | LSMS [Fe128] single V100 SXM2 vs. A100 SXM4
• IEEE 754 準拠の倍精度浮動小数点数
• cuBLAS, cuTensor, cuSolver 等のライブラリで対応
NVIDIA V100 FP64 NVIDIA A100 Tensor コア FP64
MULTI-INSTANCE GPU (MIG)
GPU 使用率を最適化、多くのユーザーに QoS の確保された GPU アクセスを提供
1 基の A100 を最大 7 分割: ハードウェアレベルの分割
各インスタンスに専用のSM、メモリ、L2キャッシュを割当
保障された QoS:
すべての MIG インスタンスは予測可能なスループットと
レイテンシをもって並列に動作
適切な GPU サイジング: ターゲットワークロードに応じて
適切なサイズの MIG インスタンスを作成可能
柔軟性: MIG インスタンスは動的にサイズ変更が可能
さまざまな環境で利用可能:ベアメタル、Docker、
Kubernetes、ハイパーバイザー ベースの仮想化、等
Amber
GPU Mem
GPU
GPU Mem
GPU
GPU Mem
GPU
GPU Mem
GPU
GPU Mem
GPU
GPU Mem
GPU
GPU Mem
GPU
31
MIG の構成要素
GPU インスタンスとコンピュート インスタンス
メモリ メモリ メモリ
GPU インスタンス
4g.20gb
GPU インスタンス
2g.10gb
GPU インスタンス
1g.5gb
GPU
コンピュート
インスタンス
コンピュート
インスタンス
1c.4g.20gb 1c.4g.20gb 1c.4g.20gb 1c.4g.20gb
GPC GPC GPC GPC GPC GPC GPC
33
GPU「共有」のレベル
カーネル
同時実行
アドレス空間
分離
演算性能
分離
メモリ性能
分離
エラー
分離
CUDA
ストリーム
Yes No No No No
MPS Yes Yes Yes (*) No No
Compute
インスタンス
Yes Yes Yes No Yes
GPU
インスタンス
Yes Yes Yes Yes Yes
CUDAストリーム、MPS、Compute インスタンス、GPU インスタンス
(*) 環境変数で各プロセスが使用するSM数の上限を設定可能、完全な分離ではない
34
GA100 と MIG
GPU
GPC
TPC
SM
SM
#1
GPC
TPC
SM
SM
#2
GPC
TPC
SM
SM
#3
GPC
TPC
SM
SM
#4
GPC
TPC
SM
SM
#5
GPC
TPC
SM
SM
#6
GPC
TPC
SM
SM
#7
GPC
TPC
SM
SM
#8
#1
#2
#3
#4
#5
#6
#7
#8
GPU
GPC
TPC
SM
SM
#1
GPC
TPC
SM
SM
#2
GPC
TPC
SM
SM
#3
GPC
TPC
SM
SM
#4
GPC
TPC
SM
SM
#5
GPC
TPC
SM
SM
#6
GPC
TPC
SM
SM
#7
GPC
TPC
SM
SM
#8
GA100 全体
8 GPC, 8 TPC/GPC, 2 SM/TPC, 128 SM
通常の GA100 – MIG 無効
7 GPC, 7 or 8 TPC/GPC, 2 SM/TPC, 108 SM
GPU
GPC
TPC
SM
SM
#1
GPC
TPC
SM
SM
#2
GPC
TPC
SM
SM
#3
GPC
TPC
SM
SM
#4
GPC
TPC
SM
SM
#5
GPC
TPC
SM
SM
#6
GPC
TPC
SM
SM
#7
GPC
TPC
SM
SM
#8
通常の GA100 – MIG 有効
7 GPC, 7 TPC/GPC, 2 SM/TPC, 98 SM
#1
#2
#3
#4
#5
#6
#7
#8
MIG 構成で推論のスループットを 7 倍に
0.6x 1x 1x
7x
0
1000
2000
3000
4000
5000
6000
7000
Sequences/s
BERT Large 推論スループット
V100T4 1 MIG
(1/7 A100)
7 MIG
(1 A100)
BERT Large Inference | T4: TRT 7.1, Precision = INT8, Batch Size =256, V100: TRT 7.1, Precision = FP16, Batch Size =256 |
A100 with 7 MIG instances of 1g.5gb : Pre-production TRT,Batch Size =94, Precision = INT8 with Sparsity
38
A100 提供形態
NVIDIA HGX A100 4-GPU
• 4 基の NVIDIA A100 SXM4
• さまざまなワークロードに対応
NVIDIA HGX A100 8-GPU
• 8 基の NVIDIA A100 SXM4
• 6 基の NVIDIA NVSwitch
• ハイエンド機向け
NVIDIA A100 PCIe
• SXM4 版と同じピーク性能
(実アプリ性能は 10% 程度ダウン)
• TDP: 250W
39
NVIDIA DGX A100
5 ペタフロップスの混合精度演算性能
8 基の NVIDIA A100 GPU で合計 320GB の HBM2 メモリ
GPU 毎に V100 の 2 倍となる 600GB/s の NVLink
PCIe Gen4 の最大 10 倍の帯域幅
6 基の NVSwitch で全ての GPU を接続
4.8TB/s のバイセクションバンド幅
HD ビデオ 426 時間分に相当するデータを 1 秒で転送
2 基の AMD EPYC 7742 - 合計 128 コア
PCIe Gen4 128 レーン
1 TB のメモリを標準搭載、2 TB に拡張可能
40
ノード間通信とストレージアクセスに最高の性能を
クラスター
ネットワーク
ストレージネットワーク
シングルポート
CX-6 NIC
クラスター
ネットワーク
クラスターネットワーク:
8 枚のシングルポート Mellanox ConnectX-6
HDR/HDR100/EDR InfiniBand と 200GigE をサポート
データ/ストレージネットワーク:
2ポートの Mellanox ConnectX-6 を標準で 1 枚
Supporting: 200/100/50/40/25/10Gb Ethernet default or
HDR/HDR100/EDR InfiniBand
オプションで同じ ConnectX-6 をもう 1 枚追加可能
450GB/sec のバイセクション バンド幅
全ての I/O を PCIe Gen4 化、Gen3 の 2 倍高速
複数の DGX A100 ノードを Mellanox Quantum スイッチでスケール可能
MELLANOX ネットワーキングによる比類なき拡張性
41
電力性能比は 20 GFLOPS/W を突破
DGX A100 ベースの
SuperPOD が Green500 #2
“Selene”- DGX A100 ベースの SuperPOD
280 ノードの DGX A100
合計 2,240 基の NVIDIA A100 Tensor コア GPU
494 基の NVIDIA Mellanox 200G HDR スイッチ
7 PB のオールフラッシュストレージ
FP64 (HPL) : 27.6 PetaFLOPS
FP16/FP32 の混合精度演算では 1 ExaFLOPS越え
42
身近な GPU リソース
Microsoft Azure の GPU インスタンス
NC NV / NVv3 NCv2 ND NCv3 NDv2
用途 HPC & DL VDI / DL HPC & DL DL HPC & DL HPC & DL
GPU 世代 Kepler Maxwell Pascal Pascal Volta Volta
GPU 種別
K80
(1 ~ 4GPU)
M60
(1 ~ 4GPU)
P100
(1 ~ 4GPU)
P40
(1 ~ 4GPU)
V100 PCIe
(1 ~ 4GPU)
V100 SXM2
8 GPU
CPU コア数 6 ~ 24 6 ~ 48 6 ~ 24 6 ~ 24 6 ~ 24 40
メモリ容量
(GiB)
56 ~ 224
56 ~ 224
112 ~ 448 (v3)
112 ~ 448 112 ~ 448 112 ~ 448 672
InfiniBand
FDR
InfiniBand
N/A
FDR
InfiniBand
FDR
InfiniBand
FDR
InfiniBand
EDR
InfiniBand
44
Linux (WSL2 の 軽量 VM)
CUDA ON WSL2
libcuda
libdxcore
/dev/dxg
drivers/gpu/dxgkrnl
Windows (ホスト)
ハイパーバイザ (Hyper-V)
NVIDIA
GPU
ドライバ
dxgkrnl
VMBus
ユーザーモード
カーネルモード
GPU デバイス
みんなの思い
• Linux 用の CUDAプログラムや NGC のコンテナを
Windows で動かしたい!
課題
• WSL では GPU が使えない…
CUDA on WSL2
• Windows 側で制御している GPU デバイスを
Linux VM からも使えるように
• WSL2 は Hyper-V を使うので、Hyper-V の機能で
それができるのでは?
→ Hyper-V の準仮想化デバイスとして GPU を!
45
CUDA on WSL2
46
https://qiita.com/ksasaki/items/ee864abd74f95fea1efa
47
まとめ
ディープラーニングモデルのトレーニングを高速化するために重要なこと
• Volta 世代以降の新しい GPU で、FP16 と FP32 の
混合精度演算を活用する (=Tensor コアを活用する)
• FP32 のみを使った既存のコードは AMP で混合精度演算を適用
最新の NVIDIA Ampere アーキテクチャによる NVIDIA A100 GPU
• 混合精度演算がさらに速くなった (V100 比 2.5 倍)
• FP32 の従来型コードも、TF32 によって Tensor コアで高速化
• さらに、構造的疎性の利用で推論を最大 2 倍高速化
• Tensor コアが FP64 にも対応して HPC アプリケーションを高速化
Tensor コアを備えた GPU リソースは様々な環境で利用可能
• Microsoft Azure の GPU インスタンス
• CUDA on WSL2
混合精度演算、NVIDIA A100 GPU
48
[Track2-2] 最新のNVIDIA AmpereアーキテクチャによるNVIDIA A100 TensorコアGPUの特長とその性能を引き出す方法

[Track2-2] 最新のNVIDIA AmpereアーキテクチャによるNVIDIA A100 TensorコアGPUの特長とその性能を引き出す方法

  • 1.
    佐々木邦暢 (@_ksasaki) エヌビディア合同会社 最新の NVIDIAAMPERE アーキテクチャに よる NVIDIA A100 TENSOR コア GPU の 特長とその性能を引き出す方法
  • 2.
    2 NVIDIA A100 Tensorコア GPU かつてない飛躍 - Volta 比最大 20 倍のピーク性能 54B XTOR | 826mm2 | TSMC 7N | 40GB Samsung HBM2 | 600 GB/s NVLink ピーク性能 V100 比 FP32 トレーニング 312 TFLOPS 20X INT8 インファレンス 1,248 TOPS 20X FP64 HPC 19.5 TFLOPS 2.5X Multi-instance GPU (MIG) 7X GPUs
  • 3.
  • 4.
  • 5.
    FP32 と FP16 FP32(float32、単精度) FP16 (float16、半精度) 指数部: 8 ビット、仮数部: 23 ビット 指数部: 5 ビット、仮数部: 10 ビット 表現可能な範囲 1.4 x 10-45 < x < 3.4 x 1038 表現可能な範囲 5.96 x 10-8 < x < 65504 従来一般的だったのはこちら 混合精度演算で使うのはこちら
  • 6.
    FP16 を使うことの利点 メモリが節約できる、だけではない "half-precision maththroughput in recent GPUs is 2× to 8× higher than for single-precision." 「最近の GPU では FP16 の演算スループットが FP32 の 2 倍から 8 倍高い」 https://arxiv.org/abs/1710.03740
  • 7.
    Tensor コア 行列演算ユニット D =A * B + C C,DA B 行列積は、「小」行列積に分解できる 「小」行列積を、各 Tensor コアで計算 A’ B’ C’ 行列の FMA (Fused Multiply-Add: 融合積和演算) 125 TFLOPS: NVIDIA V100 では FP32 比で 8 倍のピーク性能 312 TFLOPS: NVIDIA A100 では FP32 比で 16 倍のピーク性能NEW!
  • 8.
    混合精度演算でトレーニングを高速化するには モデル (計算グラフ) をFP16 にキャスト • 重みのマスターコピーは FP32 で保持 (誤差の蓄積を防ぐ) • ロススケーリング (勾配消失を防ぐ) • 積和演算の乗算を FP16 で、加算は FP32 で実行 これだけでは正確度が維持できない 対策
  • 9.
    Tensor コアによる混合精度演算 モデルの正確度を妥協することなく高いスループットを実現 ILSVRC12 classificationtop-1accuracy. (Sharan Narang, Paulius Micikevicius et al., "Mixed Precision Training“, ICLR 2018) **Same hyperparameters and learning rate schedule as FP32. 正確度(Accuracy)
  • 10.
  • 11.
    自動混合精度演算 (AMP) の有効化 わずか数行の追加で高速化 詳しくはこちら:https://developer.nvidia.com/automatic-mixed-precision TensorFlow NVIDIANGC コンテナイメージ19.07以降、TF 1.14 以降及びTF 2 以降では、オプティマイザのラッパーが利用可能: opt = tf.train.experimental.enable_mixed_precision_graph_rewrite (opt) Keras mixed precision API in TF 2.1+ for eager execution https://tensorflow.org/api_docs/python/tf/train/experimental/enable_mixed_precision_graph_rewrite PyTorch PyTorch はネイティブにAMP をサポート。詳細は公式ドキュメントを: https://pytorch.org/docs/stable/amp.html https://pytorch.org/docs/stable/notes/amp_examples.html MXNet NVIDIANGC コンテナイメージ19.04以降、MXNet 1.5 以降は、わずかな追加コードでAMP を利用可能: amp.init() amp.init_trainer(trainer) with amp.scale_loss (loss, trainer) as scaled_loss: autograd.backward(scaled_loss) https://mxnet.apache.org/api/python/docs/tutorials/performance/backend/amp.html
  • 12.
  • 13.
    18 NVIDIA A100 Tensorコア GPU かつてない飛躍 - Volta 比最大 20 倍のピーク性能 54B XTOR | 826mm2 | TSMC 7N | 40GB Samsung HBM2 | 600 GB/s NVLink ピーク性能 V100 比 FP32 トレーニング 312 TFLOPS 20X INT8 インファレンス 1,248 TOPS 20X FP64 HPC 19.5 TFLOPS 2.5X Multi-instance GPU (MIG) 7X GPUs
  • 14.
    19 世代別 NVIDIA GPU製品 (の一部) GeForce PC 向け Quadro ワークステーション向け データセンター GPU Fermi (2010) M2070 6000 GTX 580 Kepler (2012) K6000 GTX 780 K80 K2 K1 Maxwell (2014) M40 M6000 GTX 980 M60 Volta (2017) V100 TITAN V GV100 Pascal (2016) GP100P5000 GTX 1080 P40 P100 Turing (2018) T4 RTX 2080 Ampere (2020) A100 HPC DL 学習 DL 推論 VDI P4 RTX 8000 TITAN XP NEW! V100P100 Tensor コア 世代
  • 15.
    20 Tensor コア V100 とA100 の違い m: 4 n: 4 k: 4 (m, n, k) = (4, 4, 4) 8 スレッド、8 ユニット/SM FP16 V100 k: 4 A’ C’,D’ B’ A100 n: 8 m: 8 k: 128 bits (m, n, k) = (8, 8, x) 32 スレッド、4 ユニット/SM 1bit, Int4, Int8, FP16, BF16, TF32, FP64 k: 128 bits A’ C’,D’ B’
  • 16.
    NVIDIA A100 Volta とのピーク性能比較 20X 10XV100比 A100 SPARSE TF32 A100 TF32 155 V100 FP32 16 310 A100 SPARSE FP16 A100 FP16 310 V100 FP16 125 625 A100 INT8 V100 INT8 60 625 A100 SPARSE INT8 1250 A100 FP64 20 V100 FP64 8 Peak Performance in Trillion OperationsPer Second (TOPS) of A100 Compared to V100 | V100 Rounded offto the nearest whole nu mber | A100 rounded offto the nearest 5.
  • 17.
    1.4X 2.0X 1.6X 1.7X 1.9X 2.0X 2.4X 2.7X 2.8X 0.0x 0.5x 1.0x 1.5x 2.0x 2.5x 3.0x WaveGlowTacoTron 2 RN50 Mask R CNN DLRM Jasper GNMT Transformer BERT A100 AMP による混合精度トレーニングが最大 2.8 倍高速に V100 (FP16) と A100 (FP16) の比較 CV ASRRecSysTTS NLP Speedup V100 All results are measured V100 used is DGX-1 (8xV100 16GB). A100 used is s DGX A100 (8xA100 SXM4), except DLRM which uses 1xV100 and 1xA100; all use FP16 RN50 uses MXNET Batch size =192, Mask R CNN uses PyTorch BS = 4 (V100) and BS=16 (A100), DLRM uses PyTorch and BS=32768, Jasper uses PyTorch and BS=32 (V100) and 96 (A10), WaveGlow uses PyTorch and BS=10, TacoTron2 uses PyTorch and BS=104 (V100) and 100 (A100), Transformer uses PyTorch and BS=5120 (V100) and 13312 (A100 and GNMT uses PyTorch and BS=128 (V100) and 256 (A100); BERT Pre-Training Throughput using Pytorch including (2/3)Phase 1 and (1/3)Phase 2 | Phase 1 Seq Len = 128, Phase 2 Seq Len = 512
  • 18.
    TF32 TENSOR コア FP32のレンジと FP16 の精度を合わせ持つ新しい数値データ型 ➢ FP32 の指数部、FP16 の仮数部 ➢ FP32 を受け取り、TF32で乗算して FP32 で加算 ➢ コード変更不要でモデルのトレーニングを高速化 FP32 TENSOR FLOAT 32 (TF32) FP16 BFLOAT16 8 ビット 23 ビット 8 ビット 10 ビット 5 ビット 10 ビット 8 ビット 7 ビット 指数部 仮数部符号部 FP32 のレンジ FP16 の精度 FP32 行列 FP32 行列 TF32 フォーマットで乗算 FP32 で加算 FP32 行列
  • 19.
    A100 の行列積性能 A100 FP32(FMA) と比較 TF32: 約 7x 性能 UP FP16/BF16: 約 14x 性能 UP cuBLAS 11.0 FP32 (FMA) Better
  • 20.
    2.0X 1.9X 2.9X 3.2X 4.2X 4.1X 5.0X5.1X 5.8X 0.0x 0.5x 1.0x 1.5x 2.0x 2.5x 3.0x 3.5x 4.0x 4.5x 5.0x 5.5x 6.0x 6.5x RN50 Mask R CNN Jasper WaveGlow TacoTron 2 DLRM Transformer GNMT BERT A100 TF32 によりコード変更なしで AI トレーニングを高速化 V100 (FP32) と A100 (TF32) の比較 CV RecSysASR TTS NLP All results are measured V100 used is DGX-1 (8xV100 16GB). A100 used is s DGX A100 (8xA100 SXM4), except DLRM which uses 1xV100 and 1xA100; V100 uses FP32 and A100 uses TF32 RN50 uses MXNET Batch size = 96, Mask R CNN uses PyTorch BS = 4 (V100) and BS=8 (A100), DLRM uses PyTorch and BS=32768, Jasper uses PyTorch and BS=16,, WaveGlow uses PyTorch and BS=4 (V100) and 10 (A100), TacoTron2 uses PyTorch and BS=48 (V100) and 128 (A100), Transformer uses PyTorch and BS=2560 (V100) and 6656 (A100 and GNMT uses PyTorch and BS=128 (V100) and 512 (A100); BERT Pre-Training Throughput using Pytorchincluding (2/3)Phase 1 and (1/3)Phase 2 | Phase 1 Seq Len = 128, Phase 2 Seq Len = 512 Speedup V100
  • 21.
  • 22.
    倍精度演算のピーク性能が 2.5 倍に A100の Tensor コアは FP64 に対応 1.5x 2x 0 1 2 LSMS BerkeleyGW A100 Speedup vs. V100 (FP64) Application [Benchmarks]: BerkeleyGW [Chi Sum + MTXEL] using DGX-1V (8xV100) and DGX-A100 (8xA100) | LSMS [Fe128] single V100 SXM2 vs. A100 SXM4 • IEEE 754 準拠の倍精度浮動小数点数 • cuBLAS, cuTensor, cuSolver 等のライブラリで対応 NVIDIA V100 FP64 NVIDIA A100 Tensor コア FP64
  • 23.
    MULTI-INSTANCE GPU (MIG) GPU使用率を最適化、多くのユーザーに QoS の確保された GPU アクセスを提供 1 基の A100 を最大 7 分割: ハードウェアレベルの分割 各インスタンスに専用のSM、メモリ、L2キャッシュを割当 保障された QoS: すべての MIG インスタンスは予測可能なスループットと レイテンシをもって並列に動作 適切な GPU サイジング: ターゲットワークロードに応じて 適切なサイズの MIG インスタンスを作成可能 柔軟性: MIG インスタンスは動的にサイズ変更が可能 さまざまな環境で利用可能:ベアメタル、Docker、 Kubernetes、ハイパーバイザー ベースの仮想化、等 Amber GPU Mem GPU GPU Mem GPU GPU Mem GPU GPU Mem GPU GPU Mem GPU GPU Mem GPU GPU Mem GPU
  • 24.
    31 MIG の構成要素 GPU インスタンスとコンピュートインスタンス メモリ メモリ メモリ GPU インスタンス 4g.20gb GPU インスタンス 2g.10gb GPU インスタンス 1g.5gb GPU コンピュート インスタンス コンピュート インスタンス 1c.4g.20gb 1c.4g.20gb 1c.4g.20gb 1c.4g.20gb GPC GPC GPC GPC GPC GPC GPC
  • 25.
    33 GPU「共有」のレベル カーネル 同時実行 アドレス空間 分離 演算性能 分離 メモリ性能 分離 エラー 分離 CUDA ストリーム Yes No NoNo No MPS Yes Yes Yes (*) No No Compute インスタンス Yes Yes Yes No Yes GPU インスタンス Yes Yes Yes Yes Yes CUDAストリーム、MPS、Compute インスタンス、GPU インスタンス (*) 環境変数で各プロセスが使用するSM数の上限を設定可能、完全な分離ではない
  • 26.
    34 GA100 と MIG GPU GPC TPC SM SM #1 GPC TPC SM SM #2 GPC TPC SM SM #3 GPC TPC SM SM #4 GPC TPC SM SM #5 GPC TPC SM SM #6 GPC TPC SM SM #7 GPC TPC SM SM #8 #1 #2 #3 #4 #5 #6 #7 #8 GPU GPC TPC SM SM #1 GPC TPC SM SM #2 GPC TPC SM SM #3 GPC TPC SM SM #4 GPC TPC SM SM #5 GPC TPC SM SM #6 GPC TPC SM SM #7 GPC TPC SM SM #8 GA100全体 8 GPC, 8 TPC/GPC, 2 SM/TPC, 128 SM 通常の GA100 – MIG 無効 7 GPC, 7 or 8 TPC/GPC, 2 SM/TPC, 108 SM GPU GPC TPC SM SM #1 GPC TPC SM SM #2 GPC TPC SM SM #3 GPC TPC SM SM #4 GPC TPC SM SM #5 GPC TPC SM SM #6 GPC TPC SM SM #7 GPC TPC SM SM #8 通常の GA100 – MIG 有効 7 GPC, 7 TPC/GPC, 2 SM/TPC, 98 SM #1 #2 #3 #4 #5 #6 #7 #8
  • 27.
    MIG 構成で推論のスループットを 7倍に 0.6x 1x 1x 7x 0 1000 2000 3000 4000 5000 6000 7000 Sequences/s BERT Large 推論スループット V100T4 1 MIG (1/7 A100) 7 MIG (1 A100) BERT Large Inference | T4: TRT 7.1, Precision = INT8, Batch Size =256, V100: TRT 7.1, Precision = FP16, Batch Size =256 | A100 with 7 MIG instances of 1g.5gb : Pre-production TRT,Batch Size =94, Precision = INT8 with Sparsity
  • 28.
    38 A100 提供形態 NVIDIA HGXA100 4-GPU • 4 基の NVIDIA A100 SXM4 • さまざまなワークロードに対応 NVIDIA HGX A100 8-GPU • 8 基の NVIDIA A100 SXM4 • 6 基の NVIDIA NVSwitch • ハイエンド機向け NVIDIA A100 PCIe • SXM4 版と同じピーク性能 (実アプリ性能は 10% 程度ダウン) • TDP: 250W
  • 29.
    39 NVIDIA DGX A100 5ペタフロップスの混合精度演算性能 8 基の NVIDIA A100 GPU で合計 320GB の HBM2 メモリ GPU 毎に V100 の 2 倍となる 600GB/s の NVLink PCIe Gen4 の最大 10 倍の帯域幅 6 基の NVSwitch で全ての GPU を接続 4.8TB/s のバイセクションバンド幅 HD ビデオ 426 時間分に相当するデータを 1 秒で転送 2 基の AMD EPYC 7742 - 合計 128 コア PCIe Gen4 128 レーン 1 TB のメモリを標準搭載、2 TB に拡張可能
  • 30.
    40 ノード間通信とストレージアクセスに最高の性能を クラスター ネットワーク ストレージネットワーク シングルポート CX-6 NIC クラスター ネットワーク クラスターネットワーク: 8 枚のシングルポートMellanox ConnectX-6 HDR/HDR100/EDR InfiniBand と 200GigE をサポート データ/ストレージネットワーク: 2ポートの Mellanox ConnectX-6 を標準で 1 枚 Supporting: 200/100/50/40/25/10Gb Ethernet default or HDR/HDR100/EDR InfiniBand オプションで同じ ConnectX-6 をもう 1 枚追加可能 450GB/sec のバイセクション バンド幅 全ての I/O を PCIe Gen4 化、Gen3 の 2 倍高速 複数の DGX A100 ノードを Mellanox Quantum スイッチでスケール可能 MELLANOX ネットワーキングによる比類なき拡張性
  • 31.
    41 電力性能比は 20 GFLOPS/Wを突破 DGX A100 ベースの SuperPOD が Green500 #2 “Selene”- DGX A100 ベースの SuperPOD 280 ノードの DGX A100 合計 2,240 基の NVIDIA A100 Tensor コア GPU 494 基の NVIDIA Mellanox 200G HDR スイッチ 7 PB のオールフラッシュストレージ FP64 (HPL) : 27.6 PetaFLOPS FP16/FP32 の混合精度演算では 1 ExaFLOPS越え
  • 32.
  • 33.
    Microsoft Azure のGPU インスタンス NC NV / NVv3 NCv2 ND NCv3 NDv2 用途 HPC & DL VDI / DL HPC & DL DL HPC & DL HPC & DL GPU 世代 Kepler Maxwell Pascal Pascal Volta Volta GPU 種別 K80 (1 ~ 4GPU) M60 (1 ~ 4GPU) P100 (1 ~ 4GPU) P40 (1 ~ 4GPU) V100 PCIe (1 ~ 4GPU) V100 SXM2 8 GPU CPU コア数 6 ~ 24 6 ~ 48 6 ~ 24 6 ~ 24 6 ~ 24 40 メモリ容量 (GiB) 56 ~ 224 56 ~ 224 112 ~ 448 (v3) 112 ~ 448 112 ~ 448 112 ~ 448 672 InfiniBand FDR InfiniBand N/A FDR InfiniBand FDR InfiniBand FDR InfiniBand EDR InfiniBand
  • 34.
    44 Linux (WSL2 の軽量 VM) CUDA ON WSL2 libcuda libdxcore /dev/dxg drivers/gpu/dxgkrnl Windows (ホスト) ハイパーバイザ (Hyper-V) NVIDIA GPU ドライバ dxgkrnl VMBus ユーザーモード カーネルモード GPU デバイス みんなの思い • Linux 用の CUDAプログラムや NGC のコンテナを Windows で動かしたい! 課題 • WSL では GPU が使えない… CUDA on WSL2 • Windows 側で制御している GPU デバイスを Linux VM からも使えるように • WSL2 は Hyper-V を使うので、Hyper-V の機能で それができるのでは? → Hyper-V の準仮想化デバイスとして GPU を!
  • 35.
  • 36.
  • 37.
    47 まとめ ディープラーニングモデルのトレーニングを高速化するために重要なこと • Volta 世代以降の新しいGPU で、FP16 と FP32 の 混合精度演算を活用する (=Tensor コアを活用する) • FP32 のみを使った既存のコードは AMP で混合精度演算を適用 最新の NVIDIA Ampere アーキテクチャによる NVIDIA A100 GPU • 混合精度演算がさらに速くなった (V100 比 2.5 倍) • FP32 の従来型コードも、TF32 によって Tensor コアで高速化 • さらに、構造的疎性の利用で推論を最大 2 倍高速化 • Tensor コアが FP64 にも対応して HPC アプリケーションを高速化 Tensor コアを備えた GPU リソースは様々な環境で利用可能 • Microsoft Azure の GPU インスタンス • CUDA on WSL2 混合精度演算、NVIDIA A100 GPU
  • 38.