47
森野慎也, シニアCUDAエンジニア, エヌビディアジャパン, 2017/2/10 ディープラーニング・スーパーコンピュータの 応用について

機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

Embed Size (px)

Citation preview

Page 1: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

森野慎也, シニアCUDAエンジニア, エヌビディアジャパン, 2017/2/10

ディープラーニング・スーパーコンピュータの応用について

Page 2: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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

Page 3: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

3https://www.youtube.com/watch?v=B0pt6gpgCXQ

Page 4: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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

Page 5: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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

Page 6: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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

Page 7: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

7

Tesla P100 GPU : GP100

56 SM

3584 CUDAコア

倍精度 5.3 TFLOPS

単精度 10.6 TFLOPS

半精度 21.2 TFLOPS

16 GB HBM2

バンド幅 720 GB/s

Page 8: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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

Page 9: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

9

HBM2 :バンド幅は 720 GB/sECCサポート

スペーサ

4層のHBM2スタック

バンプ

シリコンキャリア

GPU

基板

Page 10: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

10

DGX-1 DEMO 1

Tesla P100のパフォーマンス

Page 11: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

11

行列演算の例

- 行列の次元は、(9600,9600)

- 正規直交系の行列を作成。Gram-Schmidt Process

- 行列積をとることで、単位行列。

GEMMの性能を見る

𝐼 = 𝐴 𝐴𝑇

Page 12: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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

Page 13: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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.

Page 14: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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.

Page 15: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

17

Page 16: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

18

NVLink

Page 17: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

19

Tesla P100 物理コネクタNVLink接続も含む

Page 18: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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

Page 19: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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

Page 20: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

22

DGX-1 DEMO 2

NVLink

Page 21: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

23

NCCLの実装

• 例) 1 CPU と 4 GPUs (PCIe)

リングアルゴリズム

リング上、もしくは、多くのトポロジー上で、有効にバンド幅を活かすコレクティブの実装は、1つ、もしくは、それ以上の個数のリングで、表すことができる。s [P. Patarasuk and X. Yuan]

Page 22: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

24

BroadcastデータをすべてのGPUに送出

Page 23: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

25

Broadcast片方向リングを利用した場合

GPU0 GPU1 GPU2 GPU3

Page 24: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

26

Broadcast

Step 1: Δt = N/B

N: bytes to broadcast

B: bandwidth of each link

片方向リングを利用した場合

GPU0 GPU1 GPU2 GPU3

Page 25: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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

Page 26: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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

Page 27: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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

Page 28: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

30

Broadcast

データをS個のメッセージに分解

片方向リングを利用した場合

GPU0 GPU1 GPU2 GPU3

Page 29: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

31

Broadcast

データをS個のメッセージに分解

Step 1: Δt = N/BS

片方向リングを利用した場合

GPU0 GPU1 GPU2 GPU3

Page 30: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

32

Broadcast

データをS個のメッセージに分解

Step 1: Δt = N/BS

Step 2: Δt = N/BS

片方向リングを利用した場合

GPU0 GPU1 GPU2 GPU3

Page 31: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

33

Broadcast

データをS個のメッセージに分解

Step 1: Δt = N/BS

Step 2: Δt = N/BS

Step 3: Δt = N/BS

片方向リングを利用した場合

GPU0 GPU1 GPU2 GPU3

Page 32: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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

Page 33: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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

Page 34: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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

Page 35: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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

Page 36: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

38

DGX-1 ソフトウエアスタック

Page 37: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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

Page 38: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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

Page 39: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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

Page 40: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

42

すでに提供されているコンテナ2017/2/8時点

Page 41: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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

Page 42: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

44

NVIDIA DOCKER コンテナ

Page 43: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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 |

Page 44: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

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

Page 45: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

47

• すぐに活用できます— plug-and-play, AIフレームワークのサポート

• ソフトウエアスタック全域にわたる、最適化

• フレームワーク混在環境—コンテナ化

• NVIDIAのエクスパートへの直接的なアクセス

NVIDIA DGX-1 SOFTWARE STACK完全に統合されたDLプラットフォーム 短い時間で価値を作り上げるために、

NVIDIAのR&Dの成果を活用してください。

Page 46: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について
Page 47: 機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について

49

Back up