volta は、chainer で使えるの?

26
Akira Naruse, Senior Developer Technology Engineer, Sep 30, 2017 Voltaは、Chainerで使えるの?

Upload: nvidia-japan

Post on 21-Jan-2018

3.240 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Volta は、Chainer で使えるの?

Akira Naruse, Senior Developer Technology Engineer, Sep 30, 2017

Voltaは、Chainerで使えるの?

Page 2: Volta は、Chainer で使えるの?

2

Voltaは、Chainerで使えるの?

はい、使えます!

• Voltaって何?

• どれぐらい、Voltaで速くなるの?

• どうすれば、Voltaを使えるの?

Page 3: Volta は、Chainer で使えるの?

3

VOLTA (V100)The Fastest GPU for DL and HPC

Volta Architecture

Most Productive GPU

Improved SIMT Model

New Algorithms

Volta MPS

Inference Utilization

Improved NVLink &

HBM2

Efficient Bandwidth

Page 4: Volta は、Chainer で使えるの?

4

VOLTA (V100)The Fastest GPU for DL and HPC

Volta Architecture

Most Productive GPU

Improved SIMT Model

New Algorithms

Volta MPS

Inference Utilization

Improved NVLink &

HBM2

Efficient Bandwidth

Tensor Core

120 Programmable TFLOPS

Deep Learning

Page 5: Volta は、Chainer で使えるの?

5

TENSOR CORE128 ops /cycle

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

BA C

Mixed Precision

Page 6: Volta は、Chainer で使えるの?

6

VOLTA TENSOR OPERATION

FP16

storage/input

Full precision

product

Sum with

FP32

accumulator

Convert to

FP32 result

FP16

FP16× + FP32

FP32

more products

Page 7: Volta は、Chainer で使えるの?

7

VOLTA GV100 SM

Units Ops/cycle

FP32 64 128

Tensor

Core8 1024

Per SM

Page 8: Volta は、Chainer で使えるの?

8

80 SM5120 FP32 units640 Tensor Cores

VOLTA: TESLA V100

*full GV100 chip contains 84 SMs

Units Ops/cycle

FP32 5,120 10,240

Tensor

Core640 81,920

80 SM

Page 9: Volta は、Chainer で使えるの?

9

P100 V100 Ratio

FP16 or Tensor Core 21 TOPS 120 TOPS 6x

FP32 10 TFLOPS 15 TFLOPS 1.5x

FP64 5 TFLOPS 7.5 TFLOPS 1.5x

HBM2 Bandwidth 720 GB/s 900 GB/s 1.2x

理論ピーク性能

Page 10: Volta は、Chainer で使えるの?

10

どれぐらい、Voltaで速くなるの?P100 FP32, V100 FP32 vs. V100 Tensor Core

Resnet50

(*) Chainer 3.0.0rc1+ と CuPy 2.0.0rc1+ を使用

Conv,

1x1,

64

Conv,

3x3,

64

Conv,

1x1,

256

BN

ReLU

BN

ReLU

BN +x

ReLU

Page 11: Volta は、Chainer で使えるの?

11

精度は大丈夫?http://docs.nvidia.com/deeplearning/sdk/mixed-precision-training/index.html

Training with Mixed-Precision User Guide

Page 12: Volta は、Chainer で使えるの?

12

どうすれば、Tensor Coreを使えるの?

• Volta(Tesla V100)が必要です。

8 GPUs

4 GPUs

Page 13: Volta は、Chainer で使えるの?

13

どうすれば、Tensor Coreを使えるの?

• Voltaが必要です。

• CUDA9, cuDNN7が必要です。

• CUDA8, cuDNN6は

Voltaに対応していません。

Page 14: Volta は、Chainer で使えるの?

14

cuBLAS9Tensor Core Operations

Page 15: Volta は、Chainer で使えるの?

15

cuBLAS9

C = alpha * AB + beta * C

Page 16: Volta は、Chainer で使えるの?

16

cuDNN7Tensor Core Operations

制限

• 一部のConvolutionアルゴリズムのみ、Tensor Coreに対応

• 入力・出力チャネル数は8の倍数

Page 17: Volta は、Chainer で使えるの?

17

どうすれば、Tensor Coreを使えるの?

• Voltaが必要です。

• CUDA9, cuDNN7が必要です。

• CUDA8, cuDNN6はVoltaに対応していません。

• モデルは、FP16向けに書き換えが必要です。

Page 18: Volta は、Chainer で使えるの?

18

FP16対応AlexNet (examples/imagenet/alex.py)

def __init__(self):

chainer.Chain.__init__(self)

W = initializers.HeNormal(1 / np.sqrt(2), np.float16)

bias = initializers.Zero(np.float16)

with self.init_scope():

self.conv1 = L.Convolution2D(None, 96, 11, stride=4, initialW=W, initial_bias=bias)

self.conv2 = L.Convolution2D(None, 256, 5, pad=2, initialW=W, initial_bias=bias)

self.conv3 = L.Convolution2D(None, 384, 3, pad=1, initialW=W, initial_bias=bias)

self.conv4 = L.Convolution2D(None, 384, 3, pad=1, initialW=W, initial_bias=bias)

self.conv5 = L.Convolution2D(None, 256, 3, pad=1, initialW=W, initial_bias=bias)

self.fc6 = L.Linear(None, 4096, initialW=W, initial_bias=bias)

self.fc7 = L.Linear(None, 4096, initialW=W, initial_bias=bias)

self.fc8 = L.Linear(None, 1000, initialW=W, initial_bias=bias)

def __call__(self, x, t):

return Alex.__call__(self, F.cast(x, np.float16), t)

Page 19: Volta は、Chainer で使えるの?

19

どうすれば、Tensor Coreを使えるの?

• Voltaが必要です。

• CUDA9, cuDNN7が必要です。

• CUDA8, cuDNN6はVoltaに対応していません。

• モデルは、FP16向けに書き換えが必要です。

• ChainerとCuPyの、最新のmasterブランチが必要です。

• CUDA9, cuDNN7, Tensor Core対応のPRが、既にマージされています。

• CuPy#353, #362, #363, #492, #494, #495

Page 20: Volta は、Chainer で使えるの?

20

どうすれば、Tensor Coreを使えるの?

• Voltaが必要です。

• CUDA9, cuDNN7が必要です。

• CUDA8, cuDNN6はVoltaに対応していません。

• モデルは、FP16向けに書き換えが必要です。

• ChainerとCuPyの、最新のmasterブランチが必要です。

• CUDA9, cuDNN7, Tensor Core対応のPRが、既にマージされています。

• Stable版(Chainer2とCuPy1)では使えません。

• プラス、以下のPRが必要です。 (いずれ、マージされるでしょう…)

• Chainer#3386: FP16でcuDNNのBNを使用 (9/29に、マージされました)

• Chainer#3388: Convolution層に、Tensor Coreを使用

Page 21: Volta は、Chainer で使えるの?

21

どうすれば、Tensor Coreを使えるの?

• Voltaが必要です。

• CUDA9, cuDNN7が必要です。

• CUDA8, cuDNN6はVoltaに対応していません。

• モデルは、FP16向けに書き換えが必要です。

• ChainerとCuPyの、最新のmasterブランチが必要です。

• CUDA9, cuDNN7, Tensor Core対応のPRが、既にマージされています。

• Stable版(Chainer2とCuPy1)では使えません。

• プラス、以下のPRが必要です (いずれマージされるでしょう)。

• Chainer#3386: FP16でも、cuDNNのBatch Normalizationを使用

• Chainer#3388: Convolution層に、Tensor Coreを使用

• すると、自動でTensor Coreが使えます!

Page 22: Volta は、Chainer で使えるの?

22

どうすれば、Tensor Coreを使えるの?

• Voltaが必要です。

• CUDA9, cuDNN7が必要です。

• CUDA8, cuDNN6はVoltaに対応していません。

• モデルは、FP16向けに書き換えが必要です。

• ChainerとCuPyの、最新のmasterブランチが必要です。

• CUDA9, cuDNN7, Tensor Core対応のPRが、既にマージされています。

• Stable版(Chainer2とCuPy1)では使えません。

• プラス、以下のPRが必要です (いずれマージされるでしょう)。

• Chainer#3386: FP16でも、cuDNNのBatch Normalizationを使用

• Chainer#3388: Convolution層に、Tensor Coreを使用

• すると、自動でTensor Coreが使えます!

• あと、以下のPRもあると良いです。• Chainer#3336: GPUカーネル実行と入力データ転送をオーバーラップ

• Chainer#3097: FP16でマルチGPUトレーニング (NCCL2)

Page 23: Volta は、Chainer で使えるの?

23(*) CUDA 9, cuDNN 7, NCCL 2, Chainer 3.0.0rc1+, CuPy 2.0.0rc1+ を使用、マシンはDGX1V

トレーニング中の様子ImageNet, ResNet50, Volta, Tensor Core使用

グラフ作成、メモリ管理、カーネル投入

Forward Backward

次のデータ準備

データ転送

GPU

CPU

Page 24: Volta は、Chainer で使えるの?

24

バッチサイズ、そんなに大きくして大丈夫?

https://research.preferred.jp/2017/02/chainermn-benchmark-results/ https://research.fb.com/publications/imagenet1kin1h/

Page 25: Volta は、Chainer で使えるの?

25日本最大の GPU 技術イベントにぜひご参加ください

2017/12/12~13 | 東京 | #GTCJapanhttp://www.gputechconf.jp/

基調講演は CEO ジェンスン ファンGPU テクノロジが可能にする AI、VR、自動運転の最先端がここに

GTC Japan 2017 は 2017年12月12 ~ 13日に東京で開催

Page 26: Volta は、Chainer で使えるの?