エヌビディアが加速するディープラーニング

エヌビディアが加速するディープラーニング
~進化するニューラルネットワークとその開発方法について~
エヌビディア
ディープラーニングソリューションアーキテクト 兼 CUDAエンジニア 村上 真奈
ディープラーニングとは
3
人工知能にとって驚くべき一年
マイクロソフト
スーパーディープネットワーク
マイクロソフトとグーグルが
画像認識で人間を超える
バークレーのブレット
全てのロボットを
一つのネットワークで
AlphaGo
世界チャンピオンを倒す
Deep Speech 2
二つの言語を
一つのネットワークで
新コンピューティングモデル
がポップカルチャーにも
5
ディープラーニングによって加速するAI競争
IMAGENET
Accuracy Rate
100%
Traditional CV
Deep Learning
90%
80%
70%
IBM Watson Achieves Breakthrough
in Natural Language Processing
Facebook
Launches Big Sur
Baidu Deep Speech 2
Beats Humans
Google
Launches TensorFlow
Toyota Invests $1B
in AI Labs
Microsoft & U. Science & Tech, China
Beat Humans on IQ
60%
50%
40%
30%
20%
10%
0%
2009 2010 2011 2012 2013 2014 2015 2016
6
ILSVRC top-5 error on Image Net
人間よりも早く正確な認識
ILSVRC15
7
拡がり続けるモダンAIの地平
1000以上のAIベンチャー
5000億円調達
8
様々な分野でディープラーニングを応用
インターネットとクラウド
医学と生物学
メディアとエンターテイメント
セキュリティと防衛
機械の自動化
画像分類
音声認識
言語翻訳
言語処理
感情分析
推薦
癌細胞の検出
糖尿病のランク付け
創薬
字幕
ビデオ検索
リアルタイム翻訳
顔検出
ビデオ監視
衛星画像
歩行者検出
白線のトラッキング
信号機の認識
9
AlphaGo
プロ棋士を破った世界初の囲碁のコンピュータープログラム
モンテカルロ木探索とディープラーニングを組み合わせたシステム
3 週間、50GPUを用いて3億4千万回のトレーニング・ステップでDNNをト
レーニング
対局: 40の検索スレッド、1202個のCPUと176個のGPUを使用して計算
バリューネットワークで基盤の状況を予測し、ポリシーネットワークで手の評
価を行う
全5局の対局、囲碁のヨーロッパチャンピオンと世界チャンピオンに勝利
http://www.nature.com/nature/journal/v529/n7587/full/nature16961.html
http://deepmind.com/alpha-go.html
10
Baidu Deep Speech 2
英語と中国語のディープラーニングを用いたエンドツーエンド音声認識
英語と中国語(北京語)の音声認識
シンプルにエンドツーエンドのディープラーニングを用いて英語から中国語への変換を行う
人間より高い認識精度
エラー率(Deep Speech 2) 3.7%
エラー率(人間へのテスト) 4%
http://svail.github.io/mandarin/
http://arxiv.org/abs/1512.02595
NVIDIA CONFIDENTIAL. DO NOT DISTRIBUTE.
11
自律走行車の為のディープラーニング
12
ディープラーニングを用いた画像合成
CNNを用いたテクスチャ合成と変換
NVIDIA Research、 Timo Aila 他
13
ディープラーニング事例
シーンセグメンテーションとシーン分類
Farabet, PAMI 2013
http://places.csail.mit.edu/ B. Zhou et al. NIPS 14
14
ディープラーニング事例
絵画様式認識と模倣
http://demo.vislab.berkeleyvision.org/
15
ディープラーニングの事例
画像ノイズ除去および高解像度化
Eigen , ICCV 2010
Dong et al, ECCV 2014
16
ディープラーニングの事例
曲調をベースとした音楽のリコメンデーション
http://benanne.github.io/2014/08/05/spotify-cnns.html
音楽のスペクトログラム
を入力
“タグ”出力
17
ディープラーニングの事例
言語理解
Stanford NLP Group
18
ディープラーニングの事例
ゲームプレイ
Google DeepMind
19
なぜGPUがディープラーニングに向いているか
20
ディープラーニングを加速する3つの要因
DNN
ビッグデータ
GPU
“The GPU is the workhorse of modern A.I.”
21
多量なトレーニングデータと多数の行列演算
典型的なネットワーク例
目的
顔認識
トレーニングデータ
1,000万~1億イメージ
ネットワークアーキテクチャ ラーニングアルゴリズム
10 層
30 エクサフロップスの計算量
10 億パラメータ
GPU を利用して30日
22
従来型の機械学習を用いた認識
人間が設計した特徴量を使用
Rowデータ
特徴抽出
分類・検出
結果
SVM,
shallow neural net,
…
HMM,
shallow neural net,
…
Clustering, HMM,
LDA, LSA
…
Speaker ID,
speech transcription, …
Topic classification,
machine translation,
sentiment analysis…
23
機械学習ソフトウェア
反復
フォワード プロパゲーション
“亀”
木
トレーニング
バックワード プロパゲーション
猫
犬
推論
“亀” から “犬” へ
計算の重み付けを更新
学習済みモデル
“猫”
25
DLトレーニングシステム
DLアプリケーション
DLフレームワーク
Caffe
Theano
Torch
Chainer
Tensor
Flow
CNTK
GPUs
29
DLトレーニングシステム
DLアプリケーション
DLフレームワーク
Caffe
Theano
Torch
Chainer
Tensor
Flow
CNTK
cuBLAS, cuDNN, cuSPARSE
GPUs
30
データサイエンティスト R&D サイクル
Idea
Test
Code
クリティカルパス:
Ideaが沸いてから
Testが完了するまで
サイクルを速く回すことが重要
Train
31
データサイエンティスト R&D サイクル
Idea
Test
Code
Train
時間がかかる
GPUの利用
32
ディープラーニングSDK
33
NVIDIA ディープラーニングSDK
GPUで高速化されたディープラーニングのアプリケー
ションを設計、開発する為の強力な開発ツールおよ
びライブラリ
NVIDIA GPUの為の高速なディープラーニング環
境を保障
最新のディープラーニング・アルゴリズムをGPUに
最適化した状態で提供
ディープラーニング・アプリケーションを簡単に構築
https://developer.nvidia.com/deep-learning-software
34
NVIDIA ディープラーニング SDK
GPUで高速化されたディープラーニングの為の開発ツールおよびライブラリ
cuBLAS
cuSPARSE
NCCL
cuDNN
ディープラーニング
cuFFT
数学ライブラリ
マルチGPU
35
NVIDIA cuDNN
Pascal
(cuDNN v5)
12.0x
10.0x
8.0x
M40
(cuDNN v3)
6.0x
GPU上でディープニューラルネットワークの計算を
高速に行う為のプリミティブ群
ディープニューラルネットワークの学習の高いパ
フォーマンスを発揮
Caffe、 CNTK、 Tensorflow、 Theano、
Torch、Chainerなどディープラーニングフレー
ムワークを高速化
バージョンアップ毎にパフォーマンスが向上
4.0x
K40
(cuDNN v1)
2.0x
0.0x
2014
2015
2016
AlexNet training throughput based on 20 iterations,
CPU: 1x E5-2680v3 12 Core 2.5GHz.
“NVIDIAはcuDNNのリリースの度により多くの操作
ができるような機能拡張をおこなっており、同時
に計算速度も向上させている”
—UC バークレー、 Caffe リードデベロッパー、 Evan Shelhamer
developer.nvidia.com/cudnn
36
cuDNN 5 のアップデート
Pascal世代GPU, リカレントニューラルネットワーク, パフォーマンスの向上
Torch上でLSTM リカレントニューラルネットワークの
計算を6倍高速化
パフォーマンスの向上:
• VGG、GoogleNet、ResNetsのような3x3 畳み込み
層を持つネットワークの高速化
• 3次元畳み込み
• Pascal世代のGPUの為のFP16ルーティンの追加
5.9x
char-rnn
RNN レイヤーの速度向上
2.8x
DeepSpeech 2
RNNレイヤーの速度向上
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
37
DL学習を加速するCUDAライブラリ
cuFFT
cuBLAS
cuSPARSE
高速フーリエ変換用ライブラリ
密行列演算ライブラリ
疎行列演算ライブラリ
cuSPARSE
39
cuSPARSE: 疎行列演算ライブラリ
NVIDIA cuSPARSE
自然言語処理向け機能拡張
密行列 x 疎ベクトル
cusparse<T>gemvi()
(例) テキスト内の単語の出現頻度
y = α ∗ op(A) ∗ x + β ∗ y
y1
y2
y3
密ベクトル
α
A11
A21
A31
A12
A22
A32
A13
A23
A33
密行列
A14 A15
A24 A25
A34 A35
2
1
+β
y1
y2
y3
疎ベクトル
40
密行列演算ライブラリ: cuBLAS
GPU向け行列演算ライブラリ(BLAS完全準拠)
DLで使われるのは単精度の行列積(SGEMM)
cuBLAS 6.5 on K40m, ECC on, input and output data on device.
m=n=k=4096, transpose=no, side=right, fill=lower
cuBLAS 6.5 on K40m, ECC ON, input and output data on device.
MKL 11.0.4 on Intel IvyBridge single socket 12 -core E5-2697 v2 @ 2.70GHz
41
密行列演算ライブラリ: cuBLAS
FP16(半精度浮動小数点)ストレージ
FP32と比べて, 2倍のデータをGPUメモリに搭載可能, メモリバンド幅
要求が半分
cublasSgemmEx()
FP16データ入出力対応の行列積 (演算はFP32)
符号部 指数部
(1 bit) (5 bit)
仮数部
(10 bit)
42
NCCL(NVIDIA Collective Collection Library)
ディープラーニング SDK
マルチGPU集合通信ライブラリ
•
最新リリースはv1.2.1
•
https://github.com/NVIDIA/nccl
all-gather, reduce, broadcast など標準的な集合通信の処理をバンド幅が出るように最適化
シングルプロセスおよびマルチプロセスで使用する事が可能
49
NCCL(NVIDIA Collective Collection Library)
NCCLの集合通信処理
50
DIGITS
52
DIGITS
ディープラーニング SDK
WebベースのディープラーニングGPUトレーニングシステム
ユーザー
データセット
の作成
インターフェース
学習モデルの
作成
学習過程の
可視化
レイヤーの
可視化
Chainer
Theano
DIGITS(UI/Server)
ディープラーニングの学習・テストを
簡単に行う為のUI
別マシンからDIGITSを操作する為の
サーバ機能
Torch
NVCaffe
Caffe
cuDNN, cuBLAS
CUDA
学習
GPU HW
GPU
マルチGPU
GPUクラスタ
NVCaffe
BVLC/caffe(本家)からフォーク
最新のCUDAライブラリを使用
エヌビディアGPUに最適化
クラウド
53
NVIDIA DIGITS
GPUで高速化されたディープラーニングトレーニング・システム
学習データの作成
モデルの作成
学習過程の可視化
モデルのテスト
Test Image
http://developer.nvidia.com/digits
54
DIGITS3
強化されたワークフローで効率よく学習
Torch7に対応(プレビュー)
cuDNN4を使った学習/推論
HDF5形式のデータセットのサポート
学習データセットのブラウジング機能
LMDB形式の学習データの中身を確認出来る機能が追加
ジョブマネージメント機能の強化
現在実行中のジョブ一覧を分かりやすく表示する機能が追加
学習結果比較用ブラウザ
学習済みモデルを正解率やロス率など幾つかの項目でソートしたり、分析できる画面が追加
55
DIGITS download
developer.nvidia.com/digits
github.com/NVIDIA/DIGITS
56
ディープラーニングの基礎
ディープラーニング・フレームワーク
58
ディープラーニング・フレームワーク
GPUで高速化されているディープラーニング・フレームワークが多数存在
Mocha.jl
ディープラーニング・フレームワーク
59
NVIDIA ディープラーニング学習コース
NVIDIA ディープラーニング・インスティチュート
ディープラーニングの為の自習型のクラス。ハンズオン、講義資料、講義の録画を公開
https://developer.nvidia.com/deep-learning-courses
1. ディープラーニング入門
2. 画像分類の為のDIGITS入門
3. Caffe入門
4. Theano入門
5. Torch入門
61
qwikLABS:AWSを用いた自主学習ラボ
手元のPCにGPUが搭載されていなくてもOK
• https://nvidia.qwiklab.comに多数のラボが存在
•
「ディープラーニング入門」は無料。日本語で受講可能。
62
NVIDIA ディープラーニング学習コース
NVIDIA ディープラーニング・インスティチュート
ディープラーニング・インスティチュートで今後公開予定のコース
1. TensorFlow入門
2. CNTK入門
3. Chainer入門
4. DIGITS中級講座
63
Thank you!