エヌビディア合同会社
ディープラーニング ソリューションアーキテクト兼CUDAエンジニア 村上真奈
エヌビディアGPUでディープラーニング開発を始めよう
2
自己紹介
村上真奈(むらかみまな) / mmurakami@nvidia.com
• CUDAエンジニア+ディープラーニングSA
• ディープラーニング・CUDA技術サポートとか、いろいろ
埼玉県さいたま市
早稲田大学教育学部理学科数学⇒システム計画研究所⇒サムスン日本研究所⇒エヌビディア
画像処理(主に静止画)、ソフトの最適化とか、
プリクラとか放送機器とかテレビとか
2010年頃に初めてCUDAにふれる(CUDA1.XXとかの時代)
NVIDIAGPUComputing
NVIDIAJapan
@NVIDIAJapan
3
AGENDA
エヌビディア/エヌビディアのGPUについて
GPUディープラーニング
ディープラーニングを始めましょう
5
創業1993年
共同創立者兼CEO ジェンスン・フアン
(Jen-Hsun Huang)
1999年 NASDAQに上場(NVDA)
1999年にGPUを発明
その後の累計出荷台数は1億個以上
2016年度の売上高は50億ドル
社員は世界全体で9,227人
約7,300件の特許を保有
本社は米国カリフォルニア州サンタクララ
6
エヌビディアは「AI コンピューティングカンパニー」
GPU コンピューティング ビジュアル コンピューティング AI
7
NVIDIA GPU の歴史
CUDA
8
2012 20142008 2010 2016 2018
48
36
12
0
24
60
72
Tesla
Fermi
Kepler
Maxwell
Pascal
混合精度演算
倍精度演算
3D メモリ
NVLink
Volta
GPU ロードマップ
SGEMM/W
10
GPUディープラーニング
11
ディープラーニングを加速する3つの要因
MLテクノロジー 計算パワービッグデータ
100 hour video
uploaded
per minute
350 million
images uploaded
per day
2.5 trillion
transactions
per hour
0.0
0.5
1.0
1.5
2.0
2.5
3.0
2008 2009 2010 2011 2012 2013 2014
NVIDIA GPU x86 CPU
TFLOPS
TORCH
THEANO
CAFFE
MATCONVNET
PURINEMOCHA.JL
MINERVA MXNET*
12
画像認識
(Microsoft)
認識精度向上のため
モデルはよりディープに、データはより大きく
強力な計算パワーが必要に
2012
AlexNet
8 レイヤー
1.4 GFLOP
~16% エラー率
152 レイヤー
22.6 GFLOP
~3.5% エラー率
2015
ResNet
16X
モデル
2014
Deep Speech 1
80 GFLOP
7,000 時間データ
~8% エラー率
465 GFLOP
12,000時間データ
~5%エラー率
2015
Deep Speech 2
10X
Training Ops
音声認識
(Baidu)
13
ディープラーニングフレームワーク
コンピュータビジョン ボイス&オーディオ 自然言語処理
物体検出 音声認識 言語翻訳 推薦エンジン 感情分析
Mocha.jl
画像分類
ディープラーニング SDK
ディープラーニングを加速するディープラーニングライブラリ
ディープラーニング
cuDNN
CUDA 数学ライブラリ
cuBLAS cuSPARSE
マルチGPU間通信
NCCLcuFFT
ビデオ解析 インファレンス
14
DLトレーニングシステム
Caffe Theano Torch
GPUs
Chainer
DLフレームワーク
DLアプリケーション
Tensor
Flow
CNTK
15
DLトレーニングシステム
Caffe Theano Torch
GPUs
Chainer
DLフレームワーク
DLアプリケーション
Tensor
Flow
CNTK
cuBLAS, cuDNN, cuSPARSE
16
GPUで高速化されたディープラーニングのアプリケーションを設計、開発する為の強力な開発
ツールおよびライブラリ
NVIDIA GPUの為の高速なディープラーニング環境を保障
最新のディープラーニング・アルゴリズムをGPUに最適化した状態で提供
ディープラーニング・アプリケーションを簡単に構築
ディープラーニング SDK
ディープラーニングを加速するディープラーニングライブラリ
ディープラーニング
cuDNN
CUDA 数学ライブラリ
cuBLAS cuSPARSE
マルチGPU間通信
NCCLcuFFT
ビデオ解析 インファレンス
18
0.0x
0.5x
1.0x
1.5x
2.0x
AlexnetOWT GoogLenet VGG-D Incep v3 ResNet-50
8x M40 8x P40 8x P100 PCIE DGX-1
P100 SXM2 For fastest training
FP32 Training, 8 GPU Per Node
Refer to “Measurement Config.” slide for HW & SW details
AlexnetOWT/GoogLenet use total batch size=1024, VGG-D uses total batch size=512, Incep-v3/ResNet-50 use total batch size=256
Speedup
Img/sec
5506 2088 563 514 706
1.2x
1.2x1.7x
19
ディープラーニングを始めましょう
20
ディープラーニングを始める際に悩みがちなこと
• 計算リソース(GPUサーバーを持っていない)
• ディープラーニングのフレームワークがあり過ぎる(どれを使えばいいか分からない)
• ディープラーニングのHello Worldの敷居が高い(どこから勉強すれば良いのか)
• etc…
GPUディープラーニング
21
計算リソース問題
1. 既存のワークステーションにNVIDIA GPUを買ってきて増設
• PCIex16レーンに空きはあるか?
• 電源容量は足りているか? (例えばGeforce TITAN Xならピークで250W使います)
2. GPUクラウドを使う
• AWS / Microsoft Azure / Google Cloud Platform / IBM Softlayer /IDCフロンティア(日本)
GPU計算環境をどのように用意するか?
22
計算リソース問題
1. AWS(Amazon Web Services)
• Tesla K80に対応。Deep Learning AMI(Amazon Machine Image)が提供されており、すぐに機
械学習を始める事が出来る。
• https://aws.amazon.com
2. Microsoft Azure
• Tesla K80/M60に対応。インフィニバンドで高速にマルチノード計算が可能
• https://azure.microsoft.com
3. Google Cloud Platform
• Tesla K80/P100(近日対応予定)に対応。高速なマルチノード通信。パワフルな計算環境
• https://cloud.google.com
4. IBM Bluemix Infrastructure
• Tesla K80に対応。ベアメタルとして提供。好みの環境にカスタマイズ。
• https://www.ibm.com/cloud-computing/jp/ja/softlayer.html
5. IDCFクラウド
• Tesla K80/P100(近日対応予定)に対応。国内にデータセンター
• https://www.idcf.jp/cloud/
GPUクラウド
24
ディープラーニング・フレームワーク
Mocha.jl
ディープラーニング・フレームワーク
GPUで高速化されているディープラーニング・フレームワークが多数存在
https://developer.nvidia.com/deep-learning-frameworks
25
ディープラーニング・フレームワーク
Caffe Torch7 CNTK MXNet TensorFlow Chainer
インターフェース C++/Python/Matlab Lua/C
C++/Python/.Net/
BrainScript
C++/Scala/R
JS/python/Go/Matlab
C/C++/Python Python
ライセンス BSD-2 BSD MIT
Apache 2.0
Apache 2.0 MIT
マルチGPU
(1ノード)
○ ○ ○ ○ ○ ○
マルチノード × × ○ ○ ○
△
(※ChainerMN)
モデルの柔軟性 △ ◎ ○ ○ ○ ◎
CNN ○ ○ ○ ○ ○ ○
RNN
○
#2033
○ ○ ○ ○ ○
備考
高速
Caffe Model Zoo
多数のアルゴリズムを
サポート
高速
スケーラビリティ
スケーラビリティ
軽量で組み込みもOK
自動微分
TensorBoard
Define by Run
CuPy
26
敷居が高い問題
1. ディープラーニングフレームワークが辛い
• フレームワーク毎に勉強、Linuxセットアップ、コンソール辛い,etc…
2. ディープラーニングの分厚い本を読みたくない
• 理論の本は眠くなる。 DLアプリが作りたい、まずは手を動かしたい,etc…
どのように勉強を始めれば良いか?
27
敷居が高い問題
1. ディープラーニングフレームワークが辛い
• フレームワーク毎に勉強、Linuxセットアップ、コンソール辛い,etc…
2. ディープラーニングの分厚い本を読みたくない
• 理論の本は眠くなる。 DLアプリが作りたい、まずは手を動かしたい,etc…
どのように勉強を始めれば良いか?
28
エヌビディアDIGITS
GPUで高速化されたディープラーニングトレーニング・システム
Test Image
学習過程の可視化モデルの作成学習データの作成 モデルのテスト
http://developer.nvidia.com/digits
29
NVIDIA DIGITS
ユーザー
インターフェース
レイヤーの
可視化
学習モデルの
作成
データセット
の作成
学習過程の
可視化
Theano
クラウド
TensorFlow
Torch
Caffe
cuDNN, cuBLAS
CUDA
学習
NVCaffe
cuDNN, cuBLAS
CUDA
エヌビディアDIGITS
http://developer.nvidia.com/digits
学習
モデルの
ダウンロード
30
31
DIGITS 5
• Image segmentation(領域分割)問題に対応!
• ディープラーニング・モデルストア機能を追加!
• 様々なモデルのPre-trained modelをダウンロード可能に
• DIGITSジョブのグループ機能など
•
領域分割タスクに対応した新しいDIGITS
32
DIGITSで簡単にディープラーニング
• DIGITSで何が出来るの?
• 画像分類問題
• 物体検出(物体位置検出)問題
• DIGITS4~
• 領域分割問題
• DIGITS5~
• その他色々なサンプルも付いてきます
→https://github.com/NVIDIA/DIGITS/tree/master/examples
• オートエンコーダー/テキスト分類/リグレッション
• Etc…
エヌビディアDIGITSの機能について
33
例: DIGITSで物体検出
ファインチューニング前
ファインチューニング後
34
例: DIGITSで領域分割
Pascal-VOCデータセットとAlexnet-FCNによる領域分割の例
35
DIGITS インストール方法
developer.nvidia.com/digitsgithub.com/NVIDIA/DIGITS hub.docker.com/r/nvidia/digits
36
敷居が高い問題
1. ディープラーニングフレームワークが辛い
• フレームワーク毎に勉強、Linuxセットアップ、コンソール辛い,etc…
2. ディープラーニングの分厚い本を読みたくない
• 理論の本は眠くなる。 DLアプリが作りたい、まずは手を動かしたい,etc…
どのように勉強を始めれば良いか?
37
ディープラーニング学習コース・学習サイト
• ディープラーニング・インスティチュート
• エヌビディアが提供するディープラーニング学習の為のハンズオントレーニング
• http://www.nvidia.co.jp/object/deep-learning-institute-jp.html
• エヌビディア(Qwiklab)オンラインディープラーニング学習コース。
• AWS上のGPUを用いてディープラーニングを学ぶ事が可能。(受講料無料のものもあり)
• https://nvidia.qwiklab.com/?locale=jp
Deep Learning Institute
38
nvidia-docker
GPU(CUDA)を使ったアプリケーションの環境を簡単に構築出来る。GPUの為のDockerツール。
https://github.com/NVIDIA/nvidia-docker
TensorFlowのマルチGPU学習にお勧め
39
nvidia-docker+コンテナでアプリケーションを起動
GPU2 GPU3 GPU4 GPU6 GPU7
NVIDIA CUDA Driver
Dockerエンジン
GPU5GPU0 GPU1
ホストPC
GPU0 GPU1
CUDA Libraries
Dockerコンテナ1
CUDA 7.5 Runtime
アプリケーション1
GPU0 GPU1 GPU2
CUDA Libraries
Dockerコンテナ2
CUDA 8.0 Runtime
アプリケーション2
GPU0 GPU1 GPU2
CUDA Libraries
Dockerコンテナ3
CUDA 7.0 Runtime
アプリケーション3
40
明示的にどのGPUを使うか指定して起動
sudo NV_GPU=‘1,2’ nvidia-docker run –rm gcr.io/tensorflow/tensorflow:1.0.1
nvidia-dockerでコンテナの起動
GPU 1と2を使用
(GPU0は使用しない) dockerコンテナ名
THANK YOU!

20170518 eureka dli