NVIDIA更新情報:
TESLA P100 PCIE/CUDNN 5.1
ディープラーニング部
井﨑 武士
2
NVIDIA Deep Learning プラットフォーム
COMPUTER VISION SPEECH AND AUDIO BEHAVIOR
Object Detection Voice Recognition Translation
Recommendation
Engines
Sentiment Analysis
DEEP LEARNING
cuDNN
MATH LIBRARIES
cuBLAS cuSPARSE
MULTI-GPU
NCCL
cuFFT
Mocha.jl
Image Classification
DEEP LEARNING
SDK
FRAMEWORKS
APPLICATIONS
GPU PLATFORM
CLOUD GPU
Tesla
P100
Tesla
M40/K80/M4
Jetson TX1
SERVER
DGX-1
GIE
DRIVEPX2
3
倍精度 5.3TF | 単精度 10.6TF | 半精度 21.2TF
TESLA P100
ハイパースケールデータセンターのための
世界で最も先進的な GPU
4
Tesla P100 の先進テクノロジー
16nm FinFETPascal アーキテクチャ HBM2 積層メモリ NVLink システム
インターコネクト
5
Tesla P100 SXM2 board and HBM2
6
Tesla P100 SXM2 board and NVLINK
7
あらゆる面で大きな飛躍
3倍のメモリバンド幅3倍の演算性能 5倍のGPU間通信速度
Teraflops(FP32/FP16)
5
10
15
20
K40
P100
(FP32)
P100
(FP16)
M40
K40
Bandwidth(GB/Sec)
40
80
120
160 P100
M40
K40
Bandwidth
1x
2x
3x
P100
M40
8
Pascal GP100 Block diagram
9
Tesla P100 Whitepaper
http://www.nvidia.com/object/pascal-architecture-whitepaper.html
10
Tesla p100
Most Advanced data center gpu for
mixed-app hpc
CoWoS with HBM2
PAGE MIGRATION ENGINE
18.7 TF HP ∙ 9.3 TF SP ∙ 4.7 TF DP
New Deep Learning Instructions
More Registers & Cache per SM
Tesla P100 for PCIe-based Servers
PASCAL
Up to 720 GB/Sec Bandwidth
Up to 16 GB Memory Capacity
ECC with Full Performance & Capacity
Simpler Parallel Programming
Virtually Unlimited Data Size
Performance w/ data locality
11
Tesla p100 accelerators
Tesla P100
for NVLink-enabled Servers
Tesla P100
for PCIe-Based Servers
5.3 TF DP ∙ 10.6 TF SP ∙ 21 TF HP
720 GB/sec Memory Bandwidth, 16 GB
4.7 TF DP ∙ 9.3 TF SP ∙ 18.7 TF HP
Config 1: 16 GB, 720 GB/sec
Config 2: 12 GB, 540 GB/sec
12
Tesla p100 specifications
Tesla Products Tesla K40 Tesla M40 Tesla P100 (NVLink) Tesla P100 (PCIe)
GPU / Form Factor Kepler GK110 / PCIe Maxwell GM200 / PCIe Pascal GP100 / SXM2 Pascal GP100 / PCIe
SMs 15 24 56 56
TPCs 15 24 28 28
FP32 CUDA Cores / SM 192 128 64 64
FP32 CUDA Cores / GPU 2880 3072 3584 3584
FP64 CUDA Cores / SM 64 4 32 32
FP64 CUDA Cores / GPU 960 96 1792 1792
Base Clock 745 MHz 948 MHz 1328 MHz 1126 MHz
GPU Boost Clock 810/875 MHz 1114 MHz 1480 MHz 1303 MHz
FP64 GFLOPs 1680 213 5304 4670
Texture Units 240 192 224 224
Memory Interface 384-bit GDDR5 384-bit GDDR5 4096-bit HBM2
3072-bit HBM2 (12GB)
4096-bit HBM2 (16GB)
Memory Bandwidth 288 GB/s 288 GB/s 720 GB/s
540 GB/s (12GB)
720 GB/s (16GB)
Memory Size Up to 12 GB Up to 24 GB 16 GB 12 GB or 16 GB
L2 Cache Size 1536 KB 3072 KB 4096 KB 4096 KB
Register File Size / SM 256 KB 256 KB 256 KB 256 KB
Register File Size / GPU 3840 KB 6144 KB 14336 KB 14336 KB
TDP 235 Watts 250 Watts 300 Watts 250 Watts
Transistors 7.1 billion 8 billion 15.3 billion 15.3 billion
GPU Die Size 551 mm² 601 mm² 610 mm² 610 mm²
Manufacturing Process 28-nm 28-nm 16-nm 16-nm
13
NVIDIA cuDNN
最新はバージョン5.1RC
GPU上でディープニューラルネットワークの計算を
高速に行う為のプリミティブ群
ディープニューラルネットワークの学習の高いパ
フォーマンスを発揮
Caffe、 CNTK、 Tensorflow、 Theano、
Torch、Chainerなどディープラーニングフレー
ムワークを高速化
バージョンアップ毎にパフォーマンスが向上
“NVIDIAはcuDNNのリリースの度により多く
の操作ができるような機能拡張をおこなって
おり、同時に計算速度も向上させている”
—UC バークレー、 Caffe リードデベロッパー、Evan Shelhamer
developer.nvidia.com/cudnn
14
NVIDIA cuDNN
• 畳込み以外にもプーリング、ソフトマックス、活性化、batch normalization、テンソルのトランス
ポーズなどディープラーニングの順伝播・逆伝播でよく使われるレイヤータイプ、計算手法をサポート
• リカレント・ニューラルネットワーク(LSTM/GRU/RNN)をサポート。
• マルチスレッド化が容易なコンテクストベースのAPI
• 以下のOSとGPUの組み合わせで仕様が可能
• Windows(7/10),Linux(x64,power8/ARM),MacOS
• Pascal/Maxwell/Kepler世代のGPU, Tegra K1およびTegra X1
ディープラーニング計算の為の高速なプリミティブ群
15
cuDNN 5 のアップデート
Torch上でLSTM リカレントニューラルネットワークの
計算を6倍高速化
パフォーマンスの向上:
• VGG、GoogleNet、ResNetsのような3x3 畳み込み
層を持つネットワークの高速化
• 3次元畳み込み
• Pascal世代のGPUの為のFP16ルーティンの追加
• Bilinear Spatial Transformer /ドロップアウト追加
Pascal世代GPU, リカレントニューラルネットワーク, パフォーマンスの向上
Performance relative to torch-rnn
(https://github.com/jcjohnson/torch-rnn)
DeepSpeech2: http://arxiv.org/abs/1512.02595
Char-rnn: https://github.com/karpathy/char-rnn
5.9x
char-rnn
RNN レイヤーの速度向上
2.8x
DeepSpeech 2
RNNレイヤーの速度向上
16
最適なコンボリューションアルゴリズムは、コンボリューションレイヤの次元に依存する。
0.73
1.84 1.83
2.03 2.07
2.26
1.92 1.98
1.25
conv 1.1 conv 1.2 conv 2.1 conv 2.2 conv 3.1 conv 3.2 conv 4.1 conv 4.2 conv 5.0
Winogradによる実行性能向上 (GEMMを用いたコンボリューションと比較 VGG-E layers, N=1)
Winograd:3x3の畳み込みの高速化
小さいバッチで、コンボリューションを高効率で演算する
17
cuDNN 5.1
• 3x3と5x5の畳込みの順伝播・および逆伝播計算の為の新しいWinogradアルゴリズムが追加。
• CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD_NONFUSED
• CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD_NONFUSED
• FP16の順伝播、逆伝播計算のパフォーマンスの向上
• CUDA8.0のサポート
ディープラーニング計算の為の高速なプリミティブ群
18
cuDNN 5.1
パフォーマンス
3x3のコンボリューション層をもつ
ネットワークの学習が2.7倍高速に
Speed-upoftrainingvs.cuDNNv4
cuDNN 4 + K40 vs. cuDNN 5.1 RC + M40 on Torch and Intel Xeon Haswell
Single-socket 16-core E5-2698 v3 @2.3GHz 3.6GHz Turbo
この3年間で60倍学習が高速に
Speed-upofimages/SecvsK40in2013
Alexnet training throughput on:
CPU: 1xE5-2680v3 12 Co 2.5GHz 128GB System Memory, Ubuntu 14.04
M40 bar: 8xM40 GPUs in a node. P100: 8xP100 NVLink-enabled
19
cuDNN アルゴリズム
• 多種多様なアルゴリズムを提供。
• CUDNN_CONVOLUTION_FWD_ALGO_IMPLICIT_GEMM
• CUDNN_CONVOLUTION_FWD_ALGO_IMPLICIT_PRECOMP_GEMM
• CUDNN_CONVOLUTION_FWD_ALGO_GEMM
• CUDNN_CONVOLUTION_FWD_ALGO_DIRECT
• CUDNN_CONVOLUTION_FWD_ALGO_FFT
• CUDNN_CONVOLUTION_FWD_ALGO_FFT_TILING
• CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
• CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD_NONFUSED
20
簡単に最適なアルゴリズムを決定出来る
cudnnConvolutionFwdAlgo_t algo;
cudnnGetConvolutionForwardAlgorithm(cudnnHandle,
srcTensorDesc,
filterDesc,
convDesc,
dstTensorDesc,
CUDNN_CONVOLUTION_FWD_PREFER_FASTEST,
workspaceLimit, &algo );
cout << "Fastest algorithm is " << algo << endl;
cudnnGetConvolutionForwardAlgorithm
指定したワークスペースサイズ内で
最速のものが選択される
21
NVIDIA cuDNN
バージョンアップ毎に強力な機能を追加
Speed-upoftrainingvs.cuDNNv4
x1
x2
x4
x6
cuDNN 5.1
cuDNN 5
cuDNN 6
cuDNN 4
Feb.
2016
May.
2016
June.
2016
Batch Normalization追加
FFT Tilingアルゴリズムの追加
FP16サポート
推論計算速度の向上
Coming soon!
?
RNNのサポート
3D convolution対応
3x3畳込みの高速化
Bilinear Spatial Transformer/
ドロップアウト追加
?
5x5畳込みの高速化
FP16ルーチンの高速化
CUDA8対応
THANK YOU!

NVIDIA 更新情報: Tesla P100 PCIe/cuDNN 5.1