View
230
Download
2
Embed Size (px)
Citation preview
森野慎也, シニアCUDAエンジニア, エヌビディアジャパン, 2017/2/10
ディープラーニング・スーパーコンピュータの応用について
2
NVIDIA DGX-1AI スーパーコンピューター
170 TFLOPS | 8x Tesla P100 16GB | NVLink Hybrid Cube Mesh
2x Xeon | 8 TB RAID 0 | Quad IB 100Gbps, Dual 10GbE | 3U — 3200W
3https://www.youtube.com/watch?v=B0pt6gpgCXQ
4
DGX-1 ダイアグラム
CPU2x Intel® Xeon® E5-2698 v4,
20-core, 2.2GHz
GPU 8x Tesla P100 SXM2 16GB
DRAM512 GB
2133 MHz 32 GB DDR4 LRDIMM
Storage(OS) 1x 480 GB, 6 Gb/s, SATA 3.0 SSD
(Data) 4x 1.92 TB, 6 Gb/s, SATA 3.0
SSD
5
TESLA P100世界最速の演算ノードを実現する新しいGPUアーキテクチャ
Pascalアーキテクチャ NVLink HBM2 Stacked Memory Page Migration Engine
PCIe
Switch
PCIe
Switch
CPU CPU
最高の演算性能 最大限のスケーラビリティをもたらすGPU間のインターコネクト
演算とメモリを一つのパッケージに 512 TBの仮想メモリによるシンプルな並列プログラミング
Unified Memory
CPU
Tesla P100
6NVIDIA CONFIDENTIAL. DO NOT DISTRIBUTE.
すべてにおける大きな飛躍
3x GPU Mem BW
K40
Bandw
idth
1x
2x
3x P100
M40
5x GPU-GPU BW
K40Bandw
idth
(G
B/Sec)
40
80
120
160 P100
M40
3x Compute
Tera
flops
(FP32/FP16)
5
10
15
20
K40
P100
(FP32)
P100
(FP16)
M40
7
Tesla P100 GPU : GP100
56 SM
3584 CUDAコア
倍精度 5.3 TFLOPS
単精度 10.6 TFLOPS
半精度 21.2 TFLOPS
16 GB HBM2
バンド幅 720 GB/s
8
IEEE 754 Floating Point on GP1003つのサイズと3つのスピード, すべて高速
Feature Half precision Single precision Double precision
レイアウト s5.10 s8.23 s11.52
命令発行 2演算 / 1 clock 1演算 / 1 clock 1 演算 / 2 clocks
Subnormalサポート Yes Yes Yes
Atomic加算 Yes Yes Yes
9
HBM2 :バンド幅は 720 GB/sECCサポート
スペーサ
4層のHBM2スタック
バンプ
シリコンキャリア
GPU
基板
10
DGX-1 DEMO 1
Tesla P100のパフォーマンス
11
行列演算の例
- 行列の次元は、(9600,9600)
- 正規直交系の行列を作成。Gram-Schmidt Process
- 行列積をとることで、単位行列。
GEMMの性能を見る
𝐼 = 𝐴 𝐴𝑇
12
演算性能(FP32)
GPU: Tesla P100-SXM2-16GB, CC=6.0, 3584 CUDA cores.GPU: Tesla P100-SXM2-16GB, CC=6.0, 3584 CUDA cores.GPU: Tesla P100-SXM2-16GB, CC=6.0, 3584 CUDA cores.(略)GPU: Tesla P100-SXM2-16GB, CC=6.0, 3584 CUDA cores.dim=(9600, 9600), precision: fp32Generating orthogonal matrix.
init: err(diag)=3.304e+03, err(off-diag)=2.512e+030: err(diag)=1.192e-06, err(off-diag)=1.780e-011: err(diag)=1.192e-06, err(off-diag)=3.960e-062: err(diag)=1.192e-06, err(off-diag)=1.203e-073: err(diag)=1.311e-06, err(off-diag)=1.418e-074: err(diag)=1.431e-06, err(off-diag)=1.216e-07
done.
prepare ... 0 1 2 3 4 5 6 7 GPU0 GPU1 GPU2 GPU3 GPU4 GPU5 GPU6 GPU7
Perf [GFLOPS] 9956.4 9928.5 9949.3 9948.4 9815.4 9963.8 9952.4 9974.8 Time [ms] 177.72 178.22 177.85 177.86 180.28 177.59 177.79 177.39
13
演算性能(FP64)
GPU: Tesla P100-SXM2-16GB, CC=6.0, 3584 CUDA cores.GPU: Tesla P100-SXM2-16GB, CC=6.0, 3584 CUDA cores.GPU: Tesla P100-SXM2-16GB, CC=6.0, 3584 CUDA cores.(略)GPU: Tesla P100-SXM2-16GB, CC=6.0, 3584 CUDA cores.dim=(9600, 9600), precision: fp64Generating orthogonal matrix.
init: err(diag)=3.304e+03, err(off-diag)=2.512e+030: err(diag)=2.220e-15, err(off-diag)=4.797e-091: err(diag)=2.665e-15, err(off-diag)=3.596e-162: err(diag)=2.220e-15, err(off-diag)=2.525e-163: err(diag)=2.665e-15, err(off-diag)=2.254e-164: err(diag)=2.442e-15, err(off-diag)=2.249e-16
done.
prepare ... 0 1 2 3 4 5 6 7 GPU0 GPU1 GPU2 GPU3 GPU4 GPU5 GPU6 GPU7
Perf [GFLOPS] 4853.2 4851.0 4961.6 4890.0 4842.0 4973.6 4880.2 4882.9 Time [ms] 364.60 364.77 356.63 361.86 365.44 355.77 362.58 362.38
freeing resources.
14
演算性能(FP64)
(略)init: err(diag)=3.304e+03, err(off-diag)=2.512e+03(略)
4: err(diag)=1.431e-06, err(off-diag)=1.216e-07done.GPU0 GPU1 GPU2 GPU3 GPU4 GPU5 GPU6 GPU7 Hgemm : (math on FP16)Perf [GFLOPS] 19192.8 19132.2 19225.2 19214.1 19227.7 19220.5 19240.0 19235.7 Time [ms] 92.19 92.49 92.04 92.09 92.03 92.06 91.97 91.99 Err(diag) 2.8e-01 2.8e-01 2.8e-01 2.8e-01 2.8e-01 2.8e-01 2.8e-01 2.8e-01Err(off-diag) 1.1e-03 1.1e-03 1.1e-03 1.1e-03 1.1e-03 1.1e-03 1.1e-03 1.1e-03
SgemmEx : R16 x R16 = R16 (math on FP32)Perf [GFLOPS] 9900.2 9855.1 9901.4 9897.4 9901.4 9897.3 9893.2 9899.8 Time [ms] 178.73 179.55 178.71 178.78 178.71 178.78 178.86 178.74 Err(diag) 3.2e-05 3.2e-05 3.2e-05 3.2e-05 3.2e-05 3.2e-05 3.2e-05 3.2e-05Err(off-diag) 1.9e-05 1.9e-05 1.9e-05 1.9e-05 1.9e-05 1.9e-05 1.9e-05 1.9e-05
SgemmEx : R16 x R16) = R32 (math on FP32)Perf [GFLOPS] 9901.9 9860.0 9898.7 9896.9 9902.8 9895.6 9886.2 9901.5 Time [ms] 178.70 179.46 178.76 178.79 178.68 178.81 178.98 178.71 Err(diag) 3.2e-05 3.2e-05 3.2e-05 3.2e-05 3.2e-05 3.2e-05 3.2e-05 3.2e-05Err(off-diag) 1.9e-05 1.9e-05 1.9e-05 1.9e-05 1.9e-05 1.9e-05 1.9e-05 1.9e-05
freeing resources.
17
18
NVLink
19
Tesla P100 物理コネクタNVLink接続も含む
20
NVLink
P100 一つあたり、4リンク。
94% のバンド幅効率
対向するGPUに対して、read/writes/atomics をサポート
NVLinkをサポートするCPUからのread/write アクセス
複数のリンクを束ねることで、より高いバンド幅
通信レイテンシの削減
NVLink on Tesla P100
40 GB/s
40 GB/s
40 GB/s
40 GB/s
21
DGX-1 ダイアグラム
CPU2x Intel® Xeon® E5-2698 v4,
20-core, 2.2GHz
GPU 8x Tesla P100 SXM2 16GB
DRAM512 GB
2133 MHz 32 GB DDR4 LRDIMM
Storage(OS) 1x 480 GB, 6 Gb/s, SATA 3.0 SSD
(Data) 4x 1.92 TB, 6 Gb/s, SATA 3.0
SSD
22
DGX-1 DEMO 2
NVLink
23
NCCLの実装
• 例) 1 CPU と 4 GPUs (PCIe)
リングアルゴリズム
リング上、もしくは、多くのトポロジー上で、有効にバンド幅を活かすコレクティブの実装は、1つ、もしくは、それ以上の個数のリングで、表すことができる。s [P. Patarasuk and X. Yuan]
24
BroadcastデータをすべてのGPUに送出
25
Broadcast片方向リングを利用した場合
GPU0 GPU1 GPU2 GPU3
26
Broadcast
Step 1: Δt = N/B
N: bytes to broadcast
B: bandwidth of each link
片方向リングを利用した場合
GPU0 GPU1 GPU2 GPU3
27
Broadcast
Step 1: Δt = N/B
Step 2: Δt = N/B
N: bytes to broadcast
B: bandwidth of each link
片方向リングを利用した場合
GPU0 GPU1 GPU2 GPU3
28
Broadcast
Step 1: Δt = N/B
Step 2: Δt = N/B
Step 3: Δt = N/B
N: bytes to broadcast
B: bandwidth of each link
片方向リングを利用した場合
GPU0 GPU1 GPU2 GPU3
29
Broadcast
Step 1: Δt = N/B
Step 2: Δt = N/B
Step 3: Δt = N/B
Total time: (K-1)N/B
N: bytes to broadcast
B: bandwidth of each link
K: number of GPUs
片方向リングを利用した場合
GPU0 GPU1 GPU2 GPU3
30
Broadcast
データをS個のメッセージに分解
片方向リングを利用した場合
GPU0 GPU1 GPU2 GPU3
31
Broadcast
データをS個のメッセージに分解
Step 1: Δt = N/BS
片方向リングを利用した場合
GPU0 GPU1 GPU2 GPU3
32
Broadcast
データをS個のメッセージに分解
Step 1: Δt = N/BS
Step 2: Δt = N/BS
片方向リングを利用した場合
GPU0 GPU1 GPU2 GPU3
33
Broadcast
データをS個のメッセージに分解
Step 1: Δt = N/BS
Step 2: Δt = N/BS
Step 3: Δt = N/BS
片方向リングを利用した場合
GPU0 GPU1 GPU2 GPU3
34
Broadcast
データをS個のメッセージに分解
Step 1: Δt = N/BS
Step 2: Δt = N/BS
Step 3: Δt = N/BS
Step 4: Δt = N/BS
片方向リングを利用した場合
GPU0 GPU1 GPU2 GPU3
35
Broadcast
データをS個のメッセージに分解
Step 1: Δt = N/BS
Step 2: Δt = N/BS
Step 3: Δt = N/BS
Step 4: Δt = N/BS
Step 5: Δt = N/BS
片方向リングを利用した場合
GPU0 GPU1 GPU2 GPU3
36
Broadcast
データをS個のメッセージに分解
Step 1: Δt = N/BS
Step 2: Δt = N/BS
Step 3: Δt = N/BS
Step 4: Δt = N/BS
Step 4: Δt = N/BS
...
Total time:
(S+k-2)N/BS N/B
片方向リングを利用した場合
GPU0 GPU1 GPU2 GPU3
37
Broadcast 性能値
# bytes N type root time algbw busbw delta10000000 10000000 char 0 0.317 31.52 31.52 0e+0010000000 10000000 char 1 0.316 31.61 31.61 0e+0010000000 10000000 char 2 0.300 33.28 33.28 0e+0010000000 10000000 char 3 0.310 32.22 32.22 0e+0010000000 10000000 char 4 0.318 31.49 31.49 0e+0010000000 10000000 char 5 0.325 30.73 30.73 0e+0010000000 10000000 char 6 0.312 32.04 32.04 0e+0010000000 10000000 char 7 0.318 31.42 31.42 0e+0010000000 2500000 int 0 0.309 32.32 32.32 0e+0010000000 2500000 int 1 0.317 31.54 31.54 0e+0010000000 2500000 int 2 0.306 32.71 32.71 0e+0010000000 2500000 int 3 0.320 31.21 31.21 0e+0010000000 2500000 int 4 0.322 31.05 31.05 0e+0010000000 2500000 int 5 0.321 31.19 31.19 0e+0010000000 2500000 int 6 0.311 32.15 32.15 0e+0010000000 2500000 int 7 0.317 31.59 31.59 0e+0010000000 5000000 half 0 0.313 31.95 31.95 0e+0010000000 5000000 half 1 0.312 32.01 32.01 0e+0010000000 5000000 half 2 0.302 33.06 33.06 0e+00
38
DGX-1 ソフトウエアスタック
39
NVLinkによる、リニアなマルチGPUスケーリング
1.0x
2.0x
3.0x
4.0x
5.0x
6.0x
7.0x
8.0x
1GPU 2GPU 4GPU 8GPU
AlexnetOWT
DGX-1
P100 PCIE
Deepmark test with NVCaffe. AlexnetOWT use batch 128, Incep-v3/ResNet-50 use batch 32, weak scaling,
P100 and DGX-1 are measured, FP32 training, software optimization in progress, CUDA8/cuDNN5.1, Ubuntu 14.04
1.0x
2.0x
3.0x
4.0x
5.0x
6.0x
7.0x
8.0x
1GPU 2GPU 4GPU 8GPU
Incep-v3
DGX-1
P100 PCIE
1.0x
2.0x
3.0x
4.0x
5.0x
6.0x
7.0x
8.0x
1GPU 2GPU 4GPU 8GPU
ResNet-50
DGX-1
P100 PCIE
Speedup
2.3x
1.3x
1.5x
40
Multi-GPU performance with NCCLNVIDIA DGX-1, Chainer with NCCL patch
0
2
4
6
8
0 2 4 6 8
Number of GPUs
Scala
bilit
y
ResNet (152 layers)VGG-D (16 layers)AlexNet (7 layers)
0
2
4
6
8
0 2 4 6 8
0
2
4
6
8
0 2 4 6 8
NCCL (DGX-1)NCCL (1-ring)Gather & Bcast
[Batch size per GPU] AlexNet:768, VGG-D:32, ResNet:12
41
Multi-GPU performance with NCCLNVIDIA DGX-1, Chainer 1.17.0 with NCCL patch
0
0.5
1
1.5
2
2.5
…
G&
B
NCCL
(1-r
ing)
NCCL
(DG
X-1
)
G&
B
NCCL
(1-r
ing)
NCCL
(DG
X-1
)
G&
B
NCCL
(1-r
ing)
NCCL
(DG
X-1
)
1 GPU 2 GPUs 4 GPUs 8 GPUs
Rela
tive t
ime t
o 1
GPU
Time per one batch (VGG-D)
Update
Allreduce
Backward
Forward
42
すでに提供されているコンテナ2017/2/8時点
43
78
5,300
13,000
0
2,000
4,000
6,000
8,000
10,000
12,000
14,000
CPU Server Server with 8x Tesla M40 DGX-1
Microsoft cognitive toolkit 170X Faster on dgx-1
Toolkit Accelerates 170x Faster on DGX-1
images
/ s
ec
170x Faster
vs CPU server
60x Faster
vs CPU server
Latest Framework Fully Optimized for NVIDIA DGX-1
AlexNet training batch size 128, CNTK 2.0b2 for CPU. CNTK 2.0b3 (to be released) includes cuDNN 5.1.8, NCCL 1.6.1, NVLink enabled
44
NVIDIA DOCKER コンテナ
45
NVIDIA Dockerによる、GPUのアイソレーション
$ NV_GPU=0,1 nvidia-docker run -ti --rm compute.nvidia.com/nvidia/cuda nvidia-smi
+-----------------------------------------------------------------------------+| NVIDIA-SMI 361.93.02 Driver Version: 361.93.02 ||-------------------------------+----------------------+----------------------+| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC || Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. ||===============================+======================+======================|| 0 Tesla P100-SXM2... Off | 0000:06:00.0 Off | 0 || N/A 36C P0 30W / 300W | 0MiB / 16280MiB | 0% Default |+-------------------------------+----------------------+----------------------+| 1 Tesla P100-SXM2... Off | 0000:07:00.0 Off | 0 || N/A 33C P0 33W / 300W | 0MiB / 16280MiB | 0% Default |+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+| Processes: GPU Memory || GPU PID Type Process name Usage ||=============================================================================|| No running processes found |
46NVIDIA CONFIDENTIAL. DO NOT DISTRIBUTE.
複数のフレームワークを、同時に使うチューニングされたDockerコンテナ
DGX-1
コンテナ化されたアプリケーション
TF Tuned SW
NVIDIA Docker
CNTK Tuned SW
NVIDIA Docker
Caffe Tuned SW
NVIDIA Docker
Torch Tuned SW
NVIDIA Docker
CUDA RTCUDA RTCUDA RTCUDA RT
Linux Kernel + CUDA Driver
47
• すぐに活用できます— plug-and-play, AIフレームワークのサポート
• ソフトウエアスタック全域にわたる、最適化
• フレームワーク混在環境—コンテナ化
• NVIDIAのエクスパートへの直接的なアクセス
NVIDIA DGX-1 SOFTWARE STACK完全に統合されたDLプラットフォーム 短い時間で価値を作り上げるために、
NVIDIAのR&Dの成果を活用してください。
49
Back up