Skip to main content
AI を支える GPU コンピューティングの今
エヌビディア エンタープライズマーケティング本部 佐々木邦暢 (@_ksasaki)
2
エヌビディア
AI コンピューティングカンパニー
1993 年創業
創業者兼 CEO ジェンスン フアン
従業員 12,000 人
2018 会計年度売上高 97 億ドル
時価総額 1600 億ドル
3
NVIDIA HOLODECK
未来のデザインラボ
4
5
GPU コンピューティング 12年の歩み
2010
Fermi: 世界初の
HPC 用 GPU
世界初の HIV カプシドの
原子モデルシミュレーション
GPU AI システムが碁の
世界チャンピオンを破る
2014
スタンフォード大学が
GPU を利用した
AI マシンを構築
世界初のヒトゲノムの
3次元マッピング
Google が
ImageNet で
人間を超える
2012
H1N1 の異変の
仕組みを解明
オークリッジ国立研究所の世界
最速 GPU スーパーコンピュータ
2008
世界初の GPU
Top500 システム
2006
CUDA
発表
GPU を利用した
AlexNet が圧勝
Green500 の
上位 13 システムが
NVIDIA GPUを利用
2017 2018
オークリッジ国立研究所の
“SUMMIT” が世界一に
6
GPU は速い!
0
50
100
150
200
250
AMBER のパフォーマンス
シングル GPU サーバーとマルチ CPU サーバーの比較
CPU Server: Dual Xeon Gold 6140@2.30GHz, GPU Servers: same CPU server w/ V100 PCIe or V100 SXM2 on 8X v100 config
CUDA Version: CUDA 9.0.176; Dataset: PME-Cellulose_NVE
To arrive at CPU node equivalence, we use measured benchmark with up to 8 CPU nodes. Then we use linear scaling to
scale beyond 8 nodes.
AMBER
生体高分子向け分子動力学計算パッケージ
VERSION
16.12
ACCELERATED FEATURES
PMEMD Explicit Solvent & GB; Explicit & Implicit
Solvent, REMD, aMD
SCALABILITY
Multi-GPU and Single-Node
MORE INFORMATION
http://ambermd.org/gpus
# of CPU Only Servers
1 server
4x V100 GPUs
95 CPU
サーバー
59x
CPU サーバー
との速度比
SKL/V100
#’s may
change
30x 126x
202
CPU
サーバー
48 CPU
サーバー
1 server
8x V100 GPUs
1 server
2x V100 GPUs
9
0
2
4
6
8
10
12
Linpack ベンチマークのパフォーマンス
シングル GPU サーバーとマルチ CPU サーバーの比較
CPU Server: Dual Xeon Gold 6140@2.30GHz, GPU Servers: same CPU server w/ V100 PCIe
CUDA Version: CUDA 9.0.103; Dataset: HPL.dat
To arrive at CPU node equivalence, we use measured benchmark with up to 8 CPU nodes. Then we use linear scaling to
scale beyond 8 nodes.
Linpack
ベンチマーク
浮動小数点演算性能の計測
VERSION
2.1
ACCELERATED FEATURES
All
SCALABILITY
Multi-GPU and Multi-Node
MORE INFORMATION
https://www.top500.org/project/linpack/
6 CPU
Servers
# of CPU Only Servers 11 CPU
Servers
9x 18x 22xCPU サーバー
との速度比
1 server
2x V100 GPUs
1 server
4x V100 GPUs
NVIDIA TENSORRT 3
CNN による画像分類 (推論) のパフォーマンス
CNN - IMAGES
0
1,000
2,000
3,000
4,000
5,000
6,000
画像/秒(レイテンシ目標:7ms)
ResNet-50 のスループット
17ms
CPU + Caffe P100 +
TensorRT
P4 +
TensorRT
CPU throughput based on measured inference throughput performance on Broadwell-based Xeon E2690v4 CPU, and doubled to reflect Intel’s
stated claim that Xeon Scalable Processor will deliver 2x the performance of Broadwell-based Xeon CPUs on Deep Learning Inference.
V100 +
TensorRT
0
1,000
2,000
3,000
4,000
5,000
6,000
7,000
8,000
9,000
GoogLeNet のスループット
8ms
CPU + Caffe P100 +
TensorRT
P4 +
TensorR
T
V100 +
TensorRT
7ms 7ms
CNN - IMAGES
画像/秒(レイテンシ目標:7ms)
なぜ GPU は速いのか
トランジスタ数
トランジスタ数
チップ面積
(mm2)
22-core Xeon
Broadwell-E5
(Intel, 2016)
7,200,000,000 456
POWER9
(IBM, 2017) 8,000,000,000 695
32-core AMD
EPYC
(AMD, 2017) 19,200,000,000 768
https://en.wikipedia.org/wiki/Transistor_count
トランジスタ数
チップ面積
(mm2)
Tesla P40
(2016) 12,000,000,000 471
Tesla P100
(2016) 15,300,000,000 610
Tesla V100
(2017) 21,100,000,000 815
CPU GPU
演算器の数
演算器の数
Haswell
(2014) 288
Broadwell
(2016) 352
Skylake
(2018) 896
http://jun-makino.sakura.ne.jp/articles/future_sc/note138.html
演算器の数
Kepler
(2012) 1,664
Pascal
(2016) 3,584
Volta
(2017) 5,120
CPU GPU
NVIDIA GPU 製品のおおまかな一覧
Kepler
(2012)
Maxwell
(2014)
Pascal
(2016)
Volta
(2017)
GeForceゲーミング
Quadro
プロフェッショナル
グラフィックス
M40
M6000K6000
GTX
980
GTX
780
HPC 用
GRID 用
K80
DL 用
M60
GP100P5000
K2
K1
GTX 1080 TITAN X
V100データセンタ
& クラウド
Tesla
P40
P100
P6
TITAN V
Fermi
(2010)
M2070
6000
GTX
580
P4
GV100
M6 M10
15
NVIDIA Tesla V100
AI と HPC のための大きな飛躍
Tensor コアを搭載した Volta アーキテクチャ
210 億トランジスタ | TSMC 12nm FFN | 815mm2
5120 CUDA コア
7.8 FP64 TFLOPS | 15.7 FP32 TFLOPS
125 Tensor TFLOPS
総レジスタファイル 20MB | 16MB キャッシュ
900 GB/s の 16GB HBM2
300 GB/s NVLink
16
P100 V100 性能UP
トレーニング性能 10 TOPS 125 TOPS 12x
インファレンス性能 21 TFLOPS 125 TOPS 6x
FP64/FP32 5/10 TFLOPS 7.8/15.6 TFLOPS 1.5x
HBM2 バンド幅 720 GB/s 900 GB/s 1.2x
NVLink バンド幅 160 GB/s 300 GB/s 1.9x
L2 キャッシュ 4 MB 6 MB 1.5x
L1 キャッシュ 1.3 MB 10 MB 7.7x
GPU ピーク性能比較: P100 vs v100
17
VOLTA
ディープラーニング性能を大幅に向上
P100 V100 P100 V100
ImagesperSecond
ImagesperSecond
2.4x faster 3.7x faster
FP32 Tensorコア FP16 Tensorコア
トレーニング インファレンス
TensorRT - 7ms Latency
(*) DLモデルはResNet50
18
VOLTA
HPC性能を大きく向上
P100に対する相対性能
HPCアプリケーション性能
System Config Info: 2X Xeon E5-2690 v4, 2.6GHz, w/ 1X Tesla
P100 or V100. V100 measured on pre-production hardware.
Summit
Supercomputer
200+ PetaFlops
~3,400 Nodes
10 Megawatts
トランジスタ数:21B
815 mm2
80 SM
5120 CUDAコア
640 Tensorコア
HBM2
16 GB, 900 GB/s
NVLink 300 GB/s
TESLA V100
*full GV100 chip contains 84 SMs
20
VOLTA GV100 SM
GV100
FP32ユニット 64
FP64ユニット 32
INT32ユニット 64
Tensorコア 8
レジスタファイル 256 KB
統合L1・共有メモリ 128 KB
Activeスレッド 2048
(*) SMあたり
21
VOLTA GV100 SM
命令セットを一新
スケジューラを2倍
命令発行機構をシンプルに
L1キャッシュの大容量・高速化
SIMTモデルの改善
テンソル計算の加速
最もプログラミングの簡単なSM
生産性の向上
VOLTA TENSORコア
TENSOR コア
混合精度行列計算ユニット
D = AB + C
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
4x4 の行列の積和演算を1サイクルで計算する性能 (128演算/サイクル)
行列のFMA (Fused Multiply-Add)
VOLTA TENSOR コア
Volta Tensor Core
P100 V100
FP16/Tensorコア 20 TFLOPS 125 TFLOPS
FP32 10 TFLOPS 15.6 TFLOPS
FP16
FP16
× + FP32
FP32
FP16 FP32
混合精度演算
16bit
16bit
32bit
CUBLAS: TENSORコアの実効性能
P100 FP32 vs. V100 Tensorコア
最大9倍の
性能向上
CUDNN: TENSOR コアの実効性能
P100 FP32 vs. V100 Tensorコア
Convolution層
の性能比較
Resnet50, Imagenet, Batch:128
P100 FP32, V100 FP32 vs. V100 Tensorコア
0 100 200 300 400 500 600
Conv BN Relu Cupy_* Misc.
570 ms
360 ms
197 ms
Time per iteration [ms]
約3倍
P100 FP32
V100 FP32
V100
Tensorコア
(*) Chainer 3.0.0rc1+ と CuPy 2.0.0rc1+ を使用
TENSOR コアの計算精度
Tensor コアの演算結果は、
FP16と比べて、FP32との
誤差が小さい
FP32の計算結果に近い
• 行列A: 指数分布 (activation)
• 行列B: 正規分布 (weight)
(平均0.0, 分散1.0)
• 内積長: 32 – 1024
• 1万サンプル
• 誤差区間: 99%
0.8
0.9
1
1.1
1.2
32
64
128
256
512
1024
32
64
128
256
512
1024
32
64
128
256
512
1024
FP32 TensorCore FP16
内積長
平均
誤差範囲
アプリケーション
依存
TESLA V100 搭載マシン
30
Tesla V100 搭載 NVIDIA DGX-1
AI 研究の必需品
1 Peta Tensor FLOPS | Tesla V100 8基 | NVLink ハイブリッドキューブ
CPU サーバー 400 台分の性能がワンボックスに
31
NVIDIA DGX Station
パーソナル DGX
500 Tensor TFLOPS | Tesla V100 4基
NVLink 全結合 | 3つの DisplayPort
1500W | 水冷
32
NVIDIA DGX-2
史上最大の GPU
2 ペタフロップス | 512GB HBM2 メモリ | 消費電力 10 キロワット | 重量 160 キログラム
33
NVIDIA DGX-2
“史上最大の GPU”
NVSwitch で接続された 16 基の Tesla V100 32GB | 全ての GPU を連結するオンチップ メモリ インターコネクト
512GB HBM2 メモリと 14.4 TB/sec 総バンド幅 | 81,920 CUDA コア | 2 ペタフロップス (混合精度)
GPU 間通信速度
300 ギガバイト / 秒
34
巨大なデータセットを迅速にキャッシュへ
SATA SSD より高速、大量データの転送に最適化
劇的に大きなユーザー スクラッチ領域
次世代のストレージ技術における主流プロトコル
8 x 3.84TB NVMe を RAID 0 構成 (データ領域用)
25.5 GB/sec のシーケンシャル リード性能
(DGX-1 の SAS SSD 7TB は 2 GB/s)
NVIDIA DGX-2
NVME SSD ストレージ
35
5 年間で 500 倍
2 個の GeForce GTX 580 (2012年 12月)
フレームワーク
システム
ソフトウェア
スタック
cuda-convnet
NCCL N/A
cuDNN N/A
cuBLAS 5.0
cuFFT 5.0
NPP 5.0
CUDA 5.0
Res Mgr R304
DGX-2 (2018年 3月)
AlexNet
フレームワーク
システム
ソフトウェア
スタック
NV Caffe 0.17
NCCL 2.2
cuDNN 7.1
cuBLAS 9.2
cuFFT 9.2
NPP 9.2
CUDA 9.2
Res Mgr R396
0
2
4
6
8
2 個の GTX 580 DGX-2
AlexNet を学習する時間
6 日
18 分
コンテナ環境での GPU 利用
ソフトウェアスタックの管理は大変
例: フレームワークを利用するアプリケーションのスタック
OS
NVIDIA driver
CUDA
cuDNN 6cuBLAS…
Applications
TensorFlow 1.3
OS
NVIDIA driver
CUDA
cuDNN 5 cuBLAS …
Applications
MXNet 0.10
フレームワークごとにGPUへの
対応状況が異なるため
複数バージョンが必要
NVIDIA driver
ソフトウェアスタックの管理は大変
例: フレームワークを利用するアプリケーションのスタック
OS
TensorFlow container
CUDA
cuDNN 6cuBLAS…
TensorFlow 1.3
MXNet container
CUDA
cuDNN 5 cuBLAS …
MXNet 0.10
コンテナにまとめることで、
複数バージョンの共存を容易に
NVIDIA-DOCKER 1.0
github.com/NVIDIA/nvidia-docker
GitHub 上のオープンソースプロジェクト
コンテナ内でホストの GPU を利用可能にする仕組み
様々な環境で利用可能
主要なディープラーニングフレームワークをサポート
NVIDIA CONTAINER RUNTIME
NVIDIA Docker 2
Docker のラッパーではなく、runC と並ぶ
一つのランタイムとして実装
NVIDIA-Docker 1.0 との後方互換性を確保
公式 CUDA イメージ以外の様々なイメージ
に対応
OCI ランタイム インタフェース
Caffe PyTorch
TensorF
low
NAMD CHROMA
コンポーネント
コンテナ化
アプリケーション
nvidia-container-runtime-hook
libnvidia-container
NVIDIA ドライバ
コンテナー オーケストレーション: KUBERNETES
代表的なコンテナ オーケストレーション ツール
大規模なクラスターをサポート
GPU サポートも急速に進みつつある状況
Service
Discovery
Intelligent
Scheduling
Self
Healing
Security
Metrics
&
Logging
Authentication
Authorization
Admission
Container
Runtime
KUBERNETES ON NVIDIA GPUs
k8s のメインラインに対する GPU 対応拡張
https://github.com/NVIDIA/kubernetes/
k8s コミュニティと緊密に連携しながら開発
オープンソース
NGC のレジストリにも登録済み
NVIDIA CONTAINER RUNTIME
KUBERNETES
NVIDIA DRIVER
NVIDIA DEVICE PLUGIN
In 1.8 we introduced the device plugin system
You deploy a Daemonset in your cluster for it to be GPU aware
Reports to the cluster and setup the GPU resources
Exposes the GPU resource inside your containers
$ kubectl create -f raw.github/.../NVIDIA/.../v1.10/device-plugin.yml
NVIDIA CONFIDENTIAL. DO NOT DISTRIBUTE.
NVIDIA GPU CLOUD
30 種類の GPU 対応アプリケーションイメージ
各種ディープラーニング フレームワーク、サードパーティの HPC
アプリケーション、NVIDIA の HPC 可視化ツール、数々のパー
トナー アプリケーション
数週間ではなく、数分でイノベーションを生み出す
ソフトウェア環境を構築するための複雑な作業を、
大幅に軽減します。
あらゆる環境からアクセス
Volta あるいは Pascal 世代 GPU を搭載した PC、
NVIDIA DGX Systems 製品群、
そして複数のクラウドサービスプロバイダ
GPU 対応アプリケーションの総合カタログ
NGC の GPU 最適化ディープラーニング コンテナ
NVCaffe
Caffe2
Chainer
Microsoft Cognitive
Toolkit (CNTK)
DIGITS
MXNet
PyTorch
TensorFlow
Theano
Torch
CUDA (base level
container for developers)
NVIDIA TensorRT inference
accelerator with ONNX
support
ディープラーニングソフトウェアの包括的なカタログ
コンテナ化されたアプリケーション
TF Tuned SW
NVIDIA Docker
CNTK Tuned SW
NVIDIA Docker
Caffe2 Tuned SW
NVIDIA Docker
PyTorch Tuned SW
NVIDIA Docker
CUDA RTCUDA RTCUDA RTCUDA RT
Linux Kernel と CUDA ドライバ
Tuned SW
NVIDIA Docker
CUDA RT
Other
Frameworks
and Apps. . .
常に最新
エヌビディアによるフレームワークとコンテナの月例更新
NGC 日本語ドキュメント
Web で公開中
ユーザーガイド
44 ページ
技術概要
10 ページ
NGC を始めましょう
サインアップ無料
GPU 対応アプリケーションの
一覧など詳細はこちら:
nvidia.com/cloud
サインアップはこちらから:
nvidia.com/ngcsignup
49
NVIDIA DEEP LEARNING INSTITUTE
DEEP LEARNING INSTITUTE
ディープラーニングのハンズオントレーニング
自習ラボ
パートナーコース
オンサイトワークショップ
技術ブログ
ディープラーニング基礎
自動運転車 ゲーム開発と
デジタルコンテンツ
金融
豊富なコンテンツ
様々な領域におけるディープラーニング
活用の基礎から応用まで幅広い教材
インテリジェント
ビデオ アナリティクス
医療
さらに拡大中
DLI ハンズオンコンテンツの例
0
0
0
0
0
0
0
0
1
1
1
0
0
0
0
1
2
2
1
1
1
0
1
2
2
2
1
1
0
1
2
2
2
1
1
0
0
1
1
1
1
1
0
0
0
0
0
0
0
4
0
0
0
0
0
0
0
-4
1
0
-8
入力ピクセル
コンボリューション
カーネル
出力ピクセル
コンボリューションカーネルの係数と、
入力ピクセルを掛け、足し合わせた
値を出力とする。
畳込み層(CONVOLUTIONAL LAYER)
「NVIDIA DIGITS による画像分類入門」より
データセットの作成
1.
2. 3.
1. Image Type : Grayscale
2. Image Size : 28 x 28
3. Training Images:
/data/train_small
4. Dataset Name: “mnist small”
5. Createボタンを押す
4.
5.
「NVIDIA DIGITS による画像分類入門」より
モデルの作成
1. “mnist small” データセットを選択
2. Training Epochs を”8”にする
3. モデルは、”LeNet” を選択
4. モデル名は、”The right model for
the data” を入力
1. “mnist small”データセットを選択
2. Training epochsを”8”に設定
3. “LeNet”を選択
4. “The right model
for the data”を入力
「NVIDIA DIGITS による画像分類入門」より
Loss 関数
(検証データ)
Loss 関数
(学習データ)
Accuracy
検証データセット
から求められる
「NVIDIA DIGITS による画像分類入門」より
DATA AUGMENTATION
白黒反転した画像を追加
Pixel(Inverted) = 255 – Pixel(original)
黒い背景に白い文字
→ 白い背景に黒い文字
“MNIST full”をクローン(データ/モデルとも)
Training Images: /data/train_invert
Dataset Name: MNIST invert
Select Dataset: MNIST invert
Model Name: MNIST invert
「NVIDIA DIGITS による画像分類入門」より
ネットワークの変更内容
編集後、Visualizeボタンを押して、
ネットワークを確認。
ReLUレイヤの追加
conv1
20 → 75
conv2
50 → 100
reluP1
「NVIDIA DIGITS による画像分類入門」より
コンテンツ パートナー
産業界のパートナー企業、フレームワークの開発コミュニティ、大学などの教育・研究機関と
連携してコンテンツの作成とワークショップのデリバリを行っています。
日本の DLI 認定パートナー
株式会社 日立インフォメーションアカデミー
日本サード・パーティ株式会社
61
September 13-14, 2018 | 東京 | #GTC18
https://www.nvidia.com/ja-jp/gtc/
WWW.GPUTECHCONF.COM
今年の GTC Japan は 9月13–14日開催
最も重要な GPU 開発者イベントにぜひご参加ください
台湾 | 5月30-31日
日本 | 9月13-14日
ヨーロッパ | 10月9-11日
イスラエル | 10月17-18日
ワシントンDC | 10月23-24日
シリコンバレー | 2019年3月18-22日
AI を支える GPU コンピューティングの今
エヌビディア エンタープライズマーケティング本部 佐々木邦暢 (@_ksasaki)