1018: ディープラーニング最新技術情報~cudnn 3、digits 2、cuda 7.5のご紹介~
TRANSCRIPT
エヌビディア合同会社 CUDAエンジニア 村上真奈
ディープラーニング最新技術情報~cuDNN 3、DIGITS 2、CUDA 7.5のご紹介~
NVIDIA ディープラーニング プラットフォーム音声認識 画像分析 自然言語処理
エンドユーザ アプリケーション
DIGITS
ディープラーニング フレームワーク (Caffe, Chainer, Torch, Theano)
高度に最適化された CUDA ライブラリ
CUDA プログラミング ツールキット
GPU ハードウェア
ディープラーニングの性能を倍増
DIGITS 2 cuDNN 3 CUDA 7.5
自動Multi-GPU スケーリングで2倍の学習スピードを実現
単一GPUで2倍の学習スピードを実現より大きなモデルのサポート
2倍のデータセットインストラクションレベルの
プロファイリング
CUDA 7.5: ディープラーニング研究者を強力に支援FP16(半精度浮動小数点)ストレージ
GPUメモリ上に最大2倍のデータセットを保持可能
ディープラーニングに最適
cuSPARSE 密行列×疎ベクタールーチン自然言語処理を加速
命令レベル・プロファイリングピンポイントでボトルネックを特定
CUDA7.5: FP16(半精度浮動小数点)ストレージFP32と比べて, 2倍のデータをGPUメモリに搭載可能, メモリバンド幅要求が半分
cuda_fp16.h
FP16データ型: half, half2
IEEE 754
範囲: 6*10-8 ~ 6*104
FP16/FP32変換: half2float(), float2half()
cublasSgemmEx()
FP16データ入出力対応の行列積 (演算はFP32)
符号部(1 bit)
指数部(5 bit)
仮数部(10 bit)
CUDA7.5: cuSPARSE 密行列×疎ベクタールーチン
自然言語処理を高速化
Bag of Words(BoW)をより高速に処理
cusparse{S,D,C,Z}gemvi()
y = α ∗ op(A)∗x + β∗y
𝑦1𝑦2𝑦3
= 𝛼𝐴11 𝐴12 𝐴13 𝐴14 𝐴15𝐴21 𝐴22 𝐴23 𝐴24 𝐴25𝐴31 𝐴32 𝐴33 𝐴34 𝐴35
−2−−1
+ 𝛽
𝑦1𝑦2𝑦3
CUDA7.5: 命令レベル・プロファイリング(GM200以降)
命令レベルで遅延発生箇所を特定可能
性能改善作業の効率UP
対応CUDAコード
SASSコード
ホットスポットと遅延要因分析
cuDNN: ディープラーニング用ライブラリ
最新はバージョン3 (2015/09~)
ディープニューラルネットワークの為のGPUプリミティブ群
Caffe, Torch, Theano, Chainer等の主要ディープラーニングフレームワークが採用
以下のOSをサポート (※2015.9.18現在)
Windows
Linux(x64/ARMv7/ARM64/Power8)
Mac OSX
Android(ARMv7/ARM64)
cuDNN: APIsconvolution
cudnnConvolutionForward()
cudnnConvolutionBackward[Bias|Filter|Data]()
activationcudnnActivationForward()
cudnnActivationBackward()
poolingcudnnPoolingForward()
cudnnPoolingBackward()
softmax
cudnnSoftmaxForward()
cudnnSoftmaxBackward()
…
cuDNN: 性能比較
AlexNet [A. Krizhevsky et al.,2012]
2.5M
18M23M
43M
0
10
20
30
40
50
16 CoreCPU
GTX Titan Titan BlackcuDNN v1
Titan XcuDNN v2
画像数(M)
1日あたりの学習画像数 (Caffe)
0
20
40
60
80
cuDNN 1(TITAN Black)
cuDNN 2(TITAN X)
cuDNN 3(TITAN X)
性能向上
E5-2698 v3 @ 2.3GHz / 3.6GHz Turbo 1日で学習できる画像の数(100万枚単位)
new cuDNN3 (2015/9~)
学習の高速化2D畳み込み演算の高速化(Maxwell向け最適化)
FFTコンボリューション対応
より大きなモデル16ビット浮動小数点ストレージ
レイヤー機能の強化
3次元レイヤー
Logarithmic softmax layer
etc…
https://developer.nvidia.com/cuDNN
cuDNN3: 学習の高速化Maxwellアーキテクチャ向けの最適化
CUDNN_CONVOLUTION_FWD_ALGO1 CUDNN_CONVOLUTION_BWD_DATA_ALGO1
0.0x
0.5x
1.0x
1.5x
2.0x
2.5x
Alexnet OverFeat VGG
cuDNN v2 cuDNN v3
学習性能: 最大2倍
cuDNN 3 performance vs. previous version on Ubuntu 14.04 LTS with
NVIDIA® GeForce® TITAN X and Intel® Core™ i7-4930K @ 3.40GHz
cuDNN3: 学習の高速化FFTによる高速な畳み込み処理の追加
CUDNN_CONVOLUTION_FWD_ALGO_FFTCUDNN_CONVOLUTION_BWD_FILTER_ALGO_FFTCUDNN_CONVOLUTION_BWD_DATA_ALGO_FFT
0x
2x
4x
6x
8x
10x
3x3 5x5 7x7 9x9
FFT CONVOLUTIONS UP TO 10x FASTER
Speedup v
s. P
revio
us
Vers
ion
cuDNN 3 performance vs. previous version on Ubuntu 14.04 LTS with
NVIDIA® GeForce® TITAN X and Intel® Core™ i7-4930K @ 3.40GHz
cuDNN: FP16ストレージ/レイヤー機能の強化FP16(半精度浮動小数点)ストレージ
最大2倍の学習データでトレーニングを行う事が出来る
cudnnDataType_tにCUDNN_DATA_HALFが追加
レイヤー機能の強化
新しいレイヤータイプの追加Logarithmic softmax layer
Divisive Normalization layer(within channel 2D/3D LRN & LCN)
Cross-channel Local Response Normalization layer
その他すべてのレイヤーで3次元を使用可能に計算ハードウェアに最適アルゴリズムの選択機能
Chainer
DIGITSWebベースのディープラーニングGPUトレーニングシステム
ユーザーインターフェース
レイヤーの可視化
学習モデルの作成
データセットの作成
GPUGPU HW クラウドGPUクラスタマルチGPU
Theano
Torch
学習過程の可視化
CaffecuDNN, cuBLAS
CUDA
最新はバージョン2(2015/09~)
データサイエンティスト向けDNNsモデルの設計
学習状況・結果の可視化
多数の学習の管理
学習
Chainer
DIGITSWebベースのディープラーニングGPUトレーニングシステム
ユーザーインターフェース
レイヤーの可視化
学習モデルの作成
データセットの作成
GPUGPU HW クラウドGPUクラスタマルチGPU
Theano
Torch
学習過程の可視化
CaffecuDNN, cuBLAS
CUDA
学習
NVCaffecuDNN, cuBLAS
CUDA
DIGITS(UI/Server)
ディープラーニングの学習・テストを簡単に行う為のUI
別マシンからDIGITSを操作する為のサーバ機能
NVCaffe
BVLC/caffe(本家)からフォーク最新のCUDAライブラリを使用エヌビディアGPUに最適化
DIGITS: ヒストリー
2015/03/18 2015/07/07 2015/07/24 2015/08/27
v1.0
• 画像分類
• レイヤーの可視化
• cuDNN2対応
• Nvcaffe 0.10(1ジョブ、1GPU)
v2.0 Preview
• Nvcaffe 0.12
(マルチGPU)
• JSON REST API
• GPU使用率/メモリ使用量表示
• 対応画像フォーマット追加(PPM)
• 標準データセットツールの追加
v2.0 RC
• Nvcaffe 0.13
• cuDNN3対応
v2.0
• V2.0正式版
回帰/RNN
マルチノードその他のフレームワーク等随時対応予定
DL のアプリケーション開発を支援
学習データセットの作成 学習モデルの作成 学習過程の可視化 学習済みモデルのテスト
new DIGITS 2
マルチGPUによる学習の高速化GPUの数に処理データ分割し並列処理計算性能の高いGPUに優先的に割り当て
Rest APIによるDIGITSサーバの操作機能
GPU利用情報の表示機能メモリ使用率/GPU利用率/温度/etc…
推論処理にGPUを使用
標準データセット作成ツールの追加
対応画像フォーマットの追加
マルチGPUトレーニングに対応
DIGITS2: マルチGPUによる学習の高速化自動的にマルチGPUにスケールして学習
マルチGPUにスケールする事で従来より高速に学習する事が可能
DIGITS 2 performance vs. previous version on an NVIDIA
DIGITS DevBox system
0.0x
0.5x
1.0x
1.5x
2.0x
2.5x
1-GPU 2-GPUs 4-GPUs
DIGITS2: REST API/推論処理/学習データセットJSON REST API
スクリプトからDIGITSを操作可能
学習済みモデルをダウンロード
推論処理のGPU化学習処理だけでなく推論処理もGPUで計算可能
学習データセットDIGITSで学習する為の標準データセット(MNIST/CIFAR)作成ツール
対応画像フォーマットにPPM形式を追加
BMP/JPEG/PNG/PPM
TX1 TX1
DIGITS:ダウンロードdeveloper.nvidia.com/digits github.com/NVIDIA/DIGITS
Thank You
新しい CUDA 本
2015年9月24日発売
インプレス社 5,400円(税込み)
Professional CUDA C Programmingの翻訳書
CUDA プログラミングモデルから各種メモリの特徴、ストリームの機能紹介
CUDA エンジニア 森野 慎也監訳
本日4階ホワイエにて10%割引で先行販売!
CUDA C プロフェッショナルプログラミング