SlideShare a Scribd company logo
*本資料の内容 (添付文書、リンク先などを含む) は de:code 2020 における公開日時点のものであり、予告なく変更される場合があります。
#decode20 #
AI とデータ サイエンスを加速する
NVIDIA の最新 GPU アーキテクチャ
D32
佐々木邦暢 (@_ksasaki)
エヌビディア合同会社
シニア ソリューションアーキテクト
本セッションについて
対象者
課題
ゴール
• ディープラーニング モデルの開発に携わる開発者/データサイエンティスト
• ディープラーニングモデルのトレーニング時間を短縮したい
• 学習済みモデルを使った推論のスループットを向上させたい
• 現代的な GPU が備える機能を充分に活用し、モデルのトレーニングや
推論を高速化できるようになる
セッションアジェンダ
• 混合精度演算 (Mixed Precision Training)
• Tensor コア
• AMP
• NVIDIA A100 Tensor コア GPU
• TF32 による演算
• 構造化疎性 (Structural Sparsity)
• Multi Instance GPU (MIG)
• GPU の利用環境
• Azure の GPU インスタンス
混合精度演算
https://arxiv.org/abs/1710.03740
FP32 と FP16
FP32 (単精度) FP16 (半精度)
指数部: 8 ビット、仮数部: 23 ビット 指数部: 5 ビット、仮数部: 10 ビット
表現可能な範囲
1.4 x 10-45 < x < 3.4 x 1038
表現可能な範囲
5.96 x 10-8 < x < 65504
従来一般的だったのはこちら 混合精度演算で使うのはこちら
FP16 を使うことの利点
メモリが節約できる、だけではない
"half-precision math throughput in recent GPUs is 2× to 8× higher
than for single-precision."
「最近の GPU では FP16 の演算スループットが
FP32 の 2 倍から 8 倍高い」
https://arxiv.org/abs/1710.03740
Tensor コア
行列演算ユニット
D =
FP32
(FP16)
FP16 FP16 FP32
(FP16)
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
行列の FMA (Fused Multiply-Add)
125 TFlops: NVIDIA V100 では FP32 比で 8 倍のピーク性能
312 TFlops: NVIDIA A100 では FP32 比で 16 倍のピーク性能
A B C
NEW!
混合精度演算でトレーニングを高速化するには
モデル (計算グラフ) を FP16 にキャスト
• 重みのマスターコピーは FP32 で保持 (誤差の蓄積を防ぐ)
• ロススケーリング (勾配消失を防ぐ)
• FP16 の積和演算結果を FP32 で保持 (アキュムレーターが FP32)
これだけでは正確度が維持できない
対策
Tensor コアによる混合精度演算
モデルの正確度を妥協することなく高いスループットを実現
ILSVRC12 classification top-1 accuracy.
(Sharan Narang, Paulius Micikevicius et al., "Mixed Precision Training“, ICLR 2018)
**Same hyperparameters and learning rate schedule as FP32.
正確度(Accuracy)
Automatic
Mixed
Precision
自動混合精度演算
計算グラフを解析し適切にキャスト
Placeholder
Mul
Reciprocal
GradFilter
MatMul
Placeholder
GradInput
ReluGrad
LossGrad
MatMul
Conv2d
Relu
Add
Loss
MatMul
VariableV2
Mul
VariableV2
Mul
VariableV2
計算グラフを解析し適切にキャスト
FP16 Cast
Mul
Reciprocal
GradFilter
MatMul
Placeholder
GradInput
ReluGrad
LossGrad
MatMul
Conv2d
Relu
Add
Loss
MatMul
VariableV2
Mul
VariableV2
Mul
VariableV2
Placeholder
FP16 Cast
FP16 Cast
FP32 Cast FP16 Cast
FP32 Cast
FP32 Cast
FP16で表現可能な範囲
勾配のアンダーフロー
FP16 では勾配が小さく (< 2^-24) なるとアンダーフローする
ロス
勾配
勾配が小さくなると FP16
で表現できず 0 に
FP32で表現可能な範囲
MODEL
FP16 Layers
ロス スケーリング
ロスの値をスケールして FP16 で表現可能な範囲に収める
勾配をスケールダウンして FP32 で更新
MODEL
FP16 Layers
ロスの値を
スケール
スケールされた勾配
FP16で表現可能な範囲
FP32で表現可能な範囲
元のロス
自動混合精度演算 (AMP) の有効化
わずか数行の追加で高速化
詳しくはこちら: https://developer.nvidia.com/automatic-mixed-precision
TensorFlow
NVIDIA NGC コンテナイメージ 19.07 以降、TF 1.14 以降及び TF 2 以降では、オプティマイザのラッパーが利用可能:
opt = tf.train.experimental.enable_mixed_precision_graph_rewrite (opt)
Keras mixed precision API in TF 2.1+ for eager execution
https://tensorflow.org/api_docs/python/tf/train/experimental/enable_mixed_precision_graph_rewrite
PyTorch
PyTorch はネイティブに AMP をサポート。詳細は公式ドキュメントを:
https://pytorch.org/docs/stable/amp.html
https://pytorch.org/docs/stable/notes/amp_examples.html
MXNet
NVIDIA NGC コンテナイメージ 19.04 以降、MXNet 1.5 以降は、わずかな追加コードで AMP を利用可能:
amp.init()
amp.init_trainer(trainer)
with amp.scale_loss (loss, trainer) as scaled_loss:
autograd.backward(scaled_loss)
https://mxnet.apache.org/api/python/docs/tutorials/performance/backend/amp.html
NVIDIA A100 TENSOR コア GPU
NVIDIA A100 TENSOR コア GPU
かつてない飛躍 - Volta 比最大 20 倍高速
540 億トランジスタ | 826mm2 | TSMC 7N | 40GB Samsung HBM2 | 600 GB/s NVLink
ピーク性能 Volta 比
FP32 トレーニング 156 | 312 TFLOPS 10 | 20 倍
INT8 推論 624 | 1,248 TOPS 10 | 20 倍
FP64 HPC 19.5 TFLOPS 2.5 倍
MULTI INSTANCE GPU GPU を最大 7 分割
詳細はこちら: NVIDIA A100 Tensor コア GPU ホワイトペーパー
NVIDIA A100
Volta とのピーク性能比較
20X
10XV100 比
A100
SPARSE
TF32
A100
TF32
155
V100
FP32
16
310
A100
SPARSE
FP16
A100
FP16
310
V100
FP16
125
625
A100
INT8
V100
INT8
60
625
A100
SPARSE
INT8
1250
A100
FP64
20
V100
FP64
8
Peak Performance in Trillion Operations Per Second (TOPS) of A100 Compared to V100 | V100 Rounded off to the nearest whole number | A100 rounded off to the nearest 5.
V100 との FP16 演算性能の比較
V100 の Tensor コアとの比較でも 3 倍の高速化を実現
0
500
1000
1500
2000
1 2
Sequences/Sec
FP16
FP16
3X
1X
BERT Pre-Training Throughput using Pytorch including (2/3)Phase 1 and (1/3)Phase 2 | Phase 1 Seq Len = 128, Phase 2 Seq Len = 512 V100: DGX-1 Server with 8xV100 using FP32 and FP16 precision
A100: DGX A100 Server with 8xA100 using TF32 precision and FP16 |
TF32 TENSOR コア
FP32 のレンジと FP16 の精度を合わせ持つ新しい数値データ型
➢ FP32 の指数部、FP16 の仮数部
➢ FP32 を受け取り、TF32 で演算して FP32 で加算
➢ コード変更不要でモデルのトレーニングを高速化
FP32
TENSOR FLOAT 32 (TF32)
FP16
BFLOAT16
8 ビット 23 ビット
8 ビット 10 ビット
5 ビット 10 ビット
8 ビット 7 ビット
指数部 仮数部符号部
FP32 のレンジ
FP16 の精度
TF32 によりコード変更なしで AI トレーニングを高速化
V100 FP32 (CUDA コア) と A100 TF32 (Tensor コア) の比較
高
速
化
率
構造的疎性による推論の高速化
➢ 構造的疎性: 連続する 4 要素のうち 2 つを 0 に
➢ 0 要素の計算とメモリアクセスをスキップ
➢ 最大で 2 倍の高速化
1x
1.5x
1 2
BERT Large Inference
2:4 疎行列密 Dense A100 Tensor コア
最大2倍
高速化
BERT Large Inference | precision = INT8 with and without sparsity, large Batch inference, A100 with 7 MIGS
倍精度演算のピーク性能が 2.5 倍に
A100 の Tensor コアは FP64 に対応
1.5x
2x
0
1
2
1 2
A100 Speedup vs. V100 (FP64)
Application [Benchmarks]: BerkeleyGW [Chi Sum + MTXEL] using DGX-1V (8xV100) and DGX-A100 (8xA100) | LSMS [Fe128] single V100 SXM2 vs. A100 SXM4
• IEEE 754 準拠の倍精度浮動小数点数
• cuBLAS, cuTensor, cuSolver 等のライブラリで対応
NVIDIA V100 FP64 NVIDIA A100 Tensor コア FP64
HPC アプリケーションの性能向上
All results are measured
Except BerkeleyGW, V100 used is single V100 SXM2. A100 used is single A100 SXM4
More apps detail: AMBER based on PME-Cellulose, GROMACS with STMV (h-bond), LAMMPS with Atomic Fluid LJ-2.5, NAMD with v3.0a1 STMV_NVE
Chroma with szscl21_24_128, FUN3D with dpw, RTM with Isotropic Radius 4 1024^3, SPECFEM3D with Cartesian four material model
BerkeleyGW based on Chi Sum and uses 8xV100 in DGX-1, vs 8xA100 in DGX A100
1.5X
1.5X 1.6X
1.9X
2.0X
2.1X
1.7X
1.8X
1.9X
0.0x
0.5x
1.0x
1.5x
2.0x
1 2 3 4 5 6 7 8 9
系列1
Speedup
V100
分子動力学 物理 工学 地球科学
MULTI-INSTANCE GPU (MIG)
GPU 使用率を最適化、多くのユーザーに QoS の確保された GPU アクセスを提供
1 基の A100 を最大 7 分割: ハードウェアレベルの分割
各インスタンスに専用の SM、メモリ、L2キャッシュを割当
保障された QoS:
すべての MIG インスタンスは予測可能なスループットと
レイテンシをもって並列に動作
適切な GPU サイジング: ターゲットワークロードに応じて
適切なサイズの MIG インスタンスを作成可能
柔軟性: MIG インスタンスは動的にサイズ変更が可能
さまざまな環境で利用可能: ベアメタル、Docker、
Kubernetes、ハイパーバイザー ベースの仮想化、等
Amber
GPU Mem
GPU
GPU Mem
GPU
GPU Mem
GPU
GPU Mem
GPU
GPU Mem
GPU
GPU Mem
GPU
GPU Mem
GPU
MIG 構成で推論のスループットを 7 倍に
0.6x 1x 1x
7x
0
1000
2000
3000
4000
5000
6000
7000
Sequences/s
BERT Large 推論スループット
V100T4 1 MIG
(1/7 A100)
7 MIG
(1 A100)
BERT Large Inference | T4: TRT 7.1, Precision = INT8, Batch Size =256, V100: TRT 7.1, Precision = FP16, Batch Size =256 |
A100 with 7 MIG instances of 1g.5gb : Pre-production TRT, Batch Size =94, Precision = INT8 with Sparsity
利用可能な GPU リソース
NVIDIA GPU 製品のおおまかな一覧
GeForce
PC 向け
Quadro
ワークステーション向け
データセンター
GPU
Fermi
(2010)
M2070
6000
GTX
580
Kepler
(2012)
K6000
GTX
780
K80
K2
K1
NC
Maxwell
(2014)
M40
M6000
GTX
980
M60
NV
NVv3
Volta
(2017)
V100
TITAN V
GV100
NDv2
NCv3
Pascal
(2016)
GP100P5000
GTX
1060/1070
P40
P100
NCv2ND
Turing
(2018)
T4
RTX
3000
GTX
1660 Ti
Ampere
(2020)
A100
Surface
Studio 2
Surface Book 3
Microsoft Azure の GPU インスタンス
NC NV / NVv3 NCv2 ND NCv3 NDv2
用途 HPC & DL VDI / DL HPC & DL DL HPC & DL HPC & DL
GPU 世代 Kepler Maxwell Pascal Pascal Volta Volta
GPU 種別
Tesla K80
(1 ~ 4GPU)
Tesla M60
(1 ~ 4GPU)
Tesla P100
(1 ~ 4GPU)
Tesla P40
(1 ~ 4GPU)
Tesla V100
(1 ~ 4GPU)
V100 SXM2
8 GPU
CPU コア数 6 ~ 24 6 ~ 48 6 ~ 24 6 ~ 24 6 ~ 24 40
メモリ容量 (GiB) 56 ~ 224
56 ~ 224
112 ~ 448 (v3)
112 ~ 448 112 ~ 448 112 ~ 448 672
InfiniBand FDR InfiniBand N/A FDR InfiniBand FDR InfiniBand FDR InfiniBand EDR InfiniBand
GPU リソースの利用形態
https://azuremarketplace.microsoft.com/en-us/marketplace/apps/nvidia.ngc_azure_17_11?tab=Overview
Azure Machine Learning NVIDIA NGC Image for Deep Learning and HPC
まとめ
ディープラーニングモデルのトレーニングを高速化するために重要なこと
• Volta 世代以降の新しい GPU で、FP16 と FP32 の
混合精度演算を活用する (=Tensor コアを活用する)
• FP32 のみを使った既存のコードは AMP で混合精度演算を適用
最新の NVIDIA Ampere アーキテクチャによる NVIDIA A100 GPU
• 混合精度演算がさらに速くなった (V100 比 2.5 倍)
• FP32 の従来型コードも、TF32 によって Tensor コアで高速化
• さらに、構造的疎性の利用で推論を最大 2 倍高速化
• Tensor コアが FP64 にも対応して HPC アプリケーションを高速化
Azure でも Tensor コアを備えた GPU リソースが利用可能
• V100 搭載インスタンスを、Virtual Machines や Azure Machine Learning で
• "NVIDIA NGC Image for Deep Learning and HPC" でセットアップも手間いらず
混合精度演算、NVIDIA A100 GPU、Azure の GPU リソース
Copyright© 2020 NVIDIA Corporation. All rights reserved. NVIDIA Corporation, 2788 San Tomas Expressway Santa Clara, CA 95051
本情報の内容 (添付文書、リンク先などを含む) は、公開日時点のものであり、予告なく変更される場合があります。
本コンテンツの著作権、および本コンテンツ中に出てくる商標権、団体名、ロゴ、製品、サービスなどはそれぞれ、各権利保有者に帰属します。

More Related Content

PPTX
Tensor コアを使った PyTorch の高速化
PDF
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
PDF
[Track2-2] 最新のNVIDIA AmpereアーキテクチャによるNVIDIA A100 TensorコアGPUの特長とその性能を引き出す方法
PDF
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
PDF
HPC 的に H100 は魅力的な GPU なのか?
PDF
Physics-ML のためのフレームワーク NVIDIA Modulus 最新事情
PDF
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
PPTX
[研究室論文紹介用スライド] Adversarial Contrastive Estimation
Tensor コアを使った PyTorch の高速化
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
[Track2-2] 最新のNVIDIA AmpereアーキテクチャによるNVIDIA A100 TensorコアGPUの特長とその性能を引き出す方法
[GTCJ2018]CuPy -NumPy互換GPUライブラリによるPythonでの高速計算- PFN奥田遼介
HPC 的に H100 は魅力的な GPU なのか?
Physics-ML のためのフレームワーク NVIDIA Modulus 最新事情
2015年度GPGPU実践プログラミング 第5回 GPUのメモリ階層
[研究室論文紹介用スライド] Adversarial Contrastive Estimation

What's hot (20)

PDF
[DL輪読会] Residual Attention Network for Image Classification
PDF
ディープラーニングの2値化(Binarized Neural Network)
PDF
Profiling deep learning network using NVIDIA nsight systems
PDF
第4回 配信講義 計算科学技術特論B(2022)
PDF
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎
PPTX
【DL輪読会】DiffRF: Rendering-guided 3D Radiance Field Diffusion [N. Muller+ CVPR2...
PPTX
ニューラルチューリングマシン入門
PPTX
分散深層学習 @ NIPS'17
PDF
Openfermionを使った分子の計算 part I
PDF
GPU と PYTHON と、それから最近の NVIDIA
PDF
A Brief Survey of Schrödinger Bridge (Part I)
PDF
合成変量とアンサンブル:回帰森と加法モデルの要点
PPTX
Pycairo を使ってみる その1
PDF
GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust)
PDF
Cosine Based Softmax による Metric Learning が上手くいく理由
PDF
TransPose: Towards Explainable Human Pose Estimation by Transformer
PDF
【チュートリアル】コンピュータビジョンによる動画認識
PDF
Automatic Mixed Precision の紹介
PDF
平面グラフと交通ネットワークのアルゴリズム
PDF
モデルアーキテクチャ観点からのDeep Neural Network高速化
[DL輪読会] Residual Attention Network for Image Classification
ディープラーニングの2値化(Binarized Neural Network)
Profiling deep learning network using NVIDIA nsight systems
第4回 配信講義 計算科学技術特論B(2022)
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎
【DL輪読会】DiffRF: Rendering-guided 3D Radiance Field Diffusion [N. Muller+ CVPR2...
ニューラルチューリングマシン入門
分散深層学習 @ NIPS'17
Openfermionを使った分子の計算 part I
GPU と PYTHON と、それから最近の NVIDIA
A Brief Survey of Schrödinger Bridge (Part I)
合成変量とアンサンブル:回帰森と加法モデルの要点
Pycairo を使ってみる その1
GPGPU Seminar (GPU Accelerated Libraries, 3 of 3, Thrust)
Cosine Based Softmax による Metric Learning が上手くいく理由
TransPose: Towards Explainable Human Pose Estimation by Transformer
【チュートリアル】コンピュータビジョンによる動画認識
Automatic Mixed Precision の紹介
平面グラフと交通ネットワークのアルゴリズム
モデルアーキテクチャ観点からのDeep Neural Network高速化
Ad

Similar to 【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ (20)

PDF
A100 GPU 搭載! P4d インスタンス 使いこなしのコツ
PDF
【A-1】AIを支えるGPUコンピューティングの今
PDF
20170421 tensor flowusergroup
PDF
GTC 2020 発表内容まとめ
PDF
GTC 2020 発表内容まとめ
PDF
GTC 2017 基調講演からディープラーニング関連情報のご紹介
PDF
GPUディープラーニング最新情報
PPTX
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
PPTX
機械学習 / Deep Learning 大全 (4) GPU編
PDF
NVIDIA 更新情報: Tesla P100 PCIe/cuDNN 5.1
PDF
[db analytics showcase Sapporo 2017] B14: GPU コンピューティング最前線 by エヌビディア 佐々木邦暢
PDF
機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について
PPTX
機械学習 / Deep Learning 大全 (6) Library編
PDF
20170726 py data.tokyo
PDF
Deep Learning Lab MeetUp 学習編 AzureインフラとBatch AI
PPTX
Prometech Particleworks on Rescale
PDF
200625material naruse
PDF
Gpu deep learning community設立について0913
PDF
NVIDIA deep learning最新情報in沖縄
PDF
エヌビディアが加速するディープラーニング ~進化するニューラルネットワークとその開発方法について~
A100 GPU 搭載! P4d インスタンス 使いこなしのコツ
【A-1】AIを支えるGPUコンピューティングの今
20170421 tensor flowusergroup
GTC 2020 発表内容まとめ
GTC 2020 発表内容まとめ
GTC 2017 基調講演からディープラーニング関連情報のご紹介
GPUディープラーニング最新情報
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
機械学習 / Deep Learning 大全 (4) GPU編
NVIDIA 更新情報: Tesla P100 PCIe/cuDNN 5.1
[db analytics showcase Sapporo 2017] B14: GPU コンピューティング最前線 by エヌビディア 佐々木邦暢
機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について
機械学習 / Deep Learning 大全 (6) Library編
20170726 py data.tokyo
Deep Learning Lab MeetUp 学習編 AzureインフラとBatch AI
Prometech Particleworks on Rescale
200625material naruse
Gpu deep learning community設立について0913
NVIDIA deep learning最新情報in沖縄
エヌビディアが加速するディープラーニング ~進化するニューラルネットワークとその開発方法について~
Ad

More from 日本マイクロソフト株式会社 (20)

PDF
【BS15】.NET アップグレード アシスタントで簡単にできます! .NET Framework アプリの .NET 6 へのマイグレーション
PDF
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
PDF
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
PDF
【BS12】Visual Studio 2022 40分一本勝負!
PDF
【BS10】Microsoft と GitHub の開発エコシステムで、開発にドライブをかけよう!
PDF
【BS9】モダン & クラウドネイティブなソフトウエア開発はじめよう ~ Azure DevOps & GitHub を使ったアプリ開発 DevOps 101
PDF
【BS8】GitHub Advanced Security で実践できる DevSecOps 対策
PDF
【BS7】GitHubをフル活用した開発
PDF
【BS5】帰ってきたハードコアデバッギング ~.NET6 を添えて~
PDF
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
PDF
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
PDF
【BS2】.NET 6 最新アップデート
PDF
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
PDF
【BS6】 マイクロソフトの GitHub との取り組み
PDF
【BS1】What’s new in visual studio 2022 and c# 10
PDF
N08_次世代通信キャリアの "Resilience" を支援する Microsoft Cloud [Microsoft Japan Digital Days]
PDF
S09_プライバシー規約準拠の基本! Amazon S3 やオンプレ SQL もサポートする Azure Purview による情報分類と管理 [Micr...
PDF
S18_ゼロトラストを目指し、Windows 10 & M365E5 を徹底活用した弊社 (三井情報) 事例のご紹介 [Microsoft Japan D...
PDF
S17_25 分でわかる!Windows 365 [Microsoft Japan Digital Days]
PDF
S15_標準 PC にさようなら!ニューノーマルの働き方に合わせたデバイスの選択 [Microsoft Japan Digital Days]
【BS15】.NET アップグレード アシスタントで簡単にできます! .NET Framework アプリの .NET 6 へのマイグレーション
【BS14】Blazor WebAssemblyとJavaScriptのインターオペラビリティ
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS12】Visual Studio 2022 40分一本勝負!
【BS10】Microsoft と GitHub の開発エコシステムで、開発にドライブをかけよう!
【BS9】モダン & クラウドネイティブなソフトウエア開発はじめよう ~ Azure DevOps & GitHub を使ったアプリ開発 DevOps 101
【BS8】GitHub Advanced Security で実践できる DevSecOps 対策
【BS7】GitHubをフル活用した開発
【BS5】帰ってきたハードコアデバッギング ~.NET6 を添えて~
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
【BS2】.NET 6 最新アップデート
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
【BS6】 マイクロソフトの GitHub との取り組み
【BS1】What’s new in visual studio 2022 and c# 10
N08_次世代通信キャリアの "Resilience" を支援する Microsoft Cloud [Microsoft Japan Digital Days]
S09_プライバシー規約準拠の基本! Amazon S3 やオンプレ SQL もサポートする Azure Purview による情報分類と管理 [Micr...
S18_ゼロトラストを目指し、Windows 10 & M365E5 を徹底活用した弊社 (三井情報) 事例のご紹介 [Microsoft Japan D...
S17_25 分でわかる!Windows 365 [Microsoft Japan Digital Days]
S15_標準 PC にさようなら!ニューノーマルの働き方に合わせたデバイスの選択 [Microsoft Japan Digital Days]

【de:code 2020】 AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ

  • 1. *本資料の内容 (添付文書、リンク先などを含む) は de:code 2020 における公開日時点のものであり、予告なく変更される場合があります。 #decode20 # AI とデータ サイエンスを加速する NVIDIA の最新 GPU アーキテクチャ D32 佐々木邦暢 (@_ksasaki) エヌビディア合同会社 シニア ソリューションアーキテクト
  • 2. 本セッションについて 対象者 課題 ゴール • ディープラーニング モデルの開発に携わる開発者/データサイエンティスト • ディープラーニングモデルのトレーニング時間を短縮したい • 学習済みモデルを使った推論のスループットを向上させたい • 現代的な GPU が備える機能を充分に活用し、モデルのトレーニングや 推論を高速化できるようになる
  • 3. セッションアジェンダ • 混合精度演算 (Mixed Precision Training) • Tensor コア • AMP • NVIDIA A100 Tensor コア GPU • TF32 による演算 • 構造化疎性 (Structural Sparsity) • Multi Instance GPU (MIG) • GPU の利用環境 • Azure の GPU インスタンス
  • 6. FP32 と FP16 FP32 (単精度) FP16 (半精度) 指数部: 8 ビット、仮数部: 23 ビット 指数部: 5 ビット、仮数部: 10 ビット 表現可能な範囲 1.4 x 10-45 < x < 3.4 x 1038 表現可能な範囲 5.96 x 10-8 < x < 65504 従来一般的だったのはこちら 混合精度演算で使うのはこちら
  • 7. FP16 を使うことの利点 メモリが節約できる、だけではない "half-precision math throughput in recent GPUs is 2× to 8× higher than for single-precision." 「最近の GPU では FP16 の演算スループットが FP32 の 2 倍から 8 倍高い」 https://arxiv.org/abs/1710.03740
  • 8. Tensor コア 行列演算ユニット D = FP32 (FP16) FP16 FP16 FP32 (FP16) 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 行列の FMA (Fused Multiply-Add) 125 TFlops: NVIDIA V100 では FP32 比で 8 倍のピーク性能 312 TFlops: NVIDIA A100 では FP32 比で 16 倍のピーク性能 A B C NEW!
  • 9. 混合精度演算でトレーニングを高速化するには モデル (計算グラフ) を FP16 にキャスト • 重みのマスターコピーは FP32 で保持 (誤差の蓄積を防ぐ) • ロススケーリング (勾配消失を防ぐ) • FP16 の積和演算結果を FP32 で保持 (アキュムレーターが FP32) これだけでは正確度が維持できない 対策
  • 10. Tensor コアによる混合精度演算 モデルの正確度を妥協することなく高いスループットを実現 ILSVRC12 classification top-1 accuracy. (Sharan Narang, Paulius Micikevicius et al., "Mixed Precision Training“, ICLR 2018) **Same hyperparameters and learning rate schedule as FP32. 正確度(Accuracy)
  • 14. FP16で表現可能な範囲 勾配のアンダーフロー FP16 では勾配が小さく (< 2^-24) なるとアンダーフローする ロス 勾配 勾配が小さくなると FP16 で表現できず 0 に FP32で表現可能な範囲 MODEL FP16 Layers
  • 15. ロス スケーリング ロスの値をスケールして FP16 で表現可能な範囲に収める 勾配をスケールダウンして FP32 で更新 MODEL FP16 Layers ロスの値を スケール スケールされた勾配 FP16で表現可能な範囲 FP32で表現可能な範囲 元のロス
  • 16. 自動混合精度演算 (AMP) の有効化 わずか数行の追加で高速化 詳しくはこちら: https://developer.nvidia.com/automatic-mixed-precision TensorFlow NVIDIA NGC コンテナイメージ 19.07 以降、TF 1.14 以降及び TF 2 以降では、オプティマイザのラッパーが利用可能: opt = tf.train.experimental.enable_mixed_precision_graph_rewrite (opt) Keras mixed precision API in TF 2.1+ for eager execution https://tensorflow.org/api_docs/python/tf/train/experimental/enable_mixed_precision_graph_rewrite PyTorch PyTorch はネイティブに AMP をサポート。詳細は公式ドキュメントを: https://pytorch.org/docs/stable/amp.html https://pytorch.org/docs/stable/notes/amp_examples.html MXNet NVIDIA NGC コンテナイメージ 19.04 以降、MXNet 1.5 以降は、わずかな追加コードで AMP を利用可能: amp.init() amp.init_trainer(trainer) with amp.scale_loss (loss, trainer) as scaled_loss: autograd.backward(scaled_loss) https://mxnet.apache.org/api/python/docs/tutorials/performance/backend/amp.html
  • 17. NVIDIA A100 TENSOR コア GPU
  • 18. NVIDIA A100 TENSOR コア GPU かつてない飛躍 - Volta 比最大 20 倍高速 540 億トランジスタ | 826mm2 | TSMC 7N | 40GB Samsung HBM2 | 600 GB/s NVLink ピーク性能 Volta 比 FP32 トレーニング 156 | 312 TFLOPS 10 | 20 倍 INT8 推論 624 | 1,248 TOPS 10 | 20 倍 FP64 HPC 19.5 TFLOPS 2.5 倍 MULTI INSTANCE GPU GPU を最大 7 分割 詳細はこちら: NVIDIA A100 Tensor コア GPU ホワイトペーパー
  • 19. NVIDIA A100 Volta とのピーク性能比較 20X 10XV100 比 A100 SPARSE TF32 A100 TF32 155 V100 FP32 16 310 A100 SPARSE FP16 A100 FP16 310 V100 FP16 125 625 A100 INT8 V100 INT8 60 625 A100 SPARSE INT8 1250 A100 FP64 20 V100 FP64 8 Peak Performance in Trillion Operations Per Second (TOPS) of A100 Compared to V100 | V100 Rounded off to the nearest whole number | A100 rounded off to the nearest 5.
  • 20. V100 との FP16 演算性能の比較 V100 の Tensor コアとの比較でも 3 倍の高速化を実現 0 500 1000 1500 2000 1 2 Sequences/Sec FP16 FP16 3X 1X BERT Pre-Training Throughput using Pytorch including (2/3)Phase 1 and (1/3)Phase 2 | Phase 1 Seq Len = 128, Phase 2 Seq Len = 512 V100: DGX-1 Server with 8xV100 using FP32 and FP16 precision A100: DGX A100 Server with 8xA100 using TF32 precision and FP16 |
  • 21. TF32 TENSOR コア FP32 のレンジと FP16 の精度を合わせ持つ新しい数値データ型 ➢ FP32 の指数部、FP16 の仮数部 ➢ FP32 を受け取り、TF32 で演算して FP32 で加算 ➢ コード変更不要でモデルのトレーニングを高速化 FP32 TENSOR FLOAT 32 (TF32) FP16 BFLOAT16 8 ビット 23 ビット 8 ビット 10 ビット 5 ビット 10 ビット 8 ビット 7 ビット 指数部 仮数部符号部 FP32 のレンジ FP16 の精度
  • 22. TF32 によりコード変更なしで AI トレーニングを高速化 V100 FP32 (CUDA コア) と A100 TF32 (Tensor コア) の比較 高 速 化 率
  • 23. 構造的疎性による推論の高速化 ➢ 構造的疎性: 連続する 4 要素のうち 2 つを 0 に ➢ 0 要素の計算とメモリアクセスをスキップ ➢ 最大で 2 倍の高速化 1x 1.5x 1 2 BERT Large Inference 2:4 疎行列密 Dense A100 Tensor コア 最大2倍 高速化 BERT Large Inference | precision = INT8 with and without sparsity, large Batch inference, A100 with 7 MIGS
  • 24. 倍精度演算のピーク性能が 2.5 倍に A100 の Tensor コアは FP64 に対応 1.5x 2x 0 1 2 1 2 A100 Speedup vs. V100 (FP64) Application [Benchmarks]: BerkeleyGW [Chi Sum + MTXEL] using DGX-1V (8xV100) and DGX-A100 (8xA100) | LSMS [Fe128] single V100 SXM2 vs. A100 SXM4 • IEEE 754 準拠の倍精度浮動小数点数 • cuBLAS, cuTensor, cuSolver 等のライブラリで対応 NVIDIA V100 FP64 NVIDIA A100 Tensor コア FP64
  • 25. HPC アプリケーションの性能向上 All results are measured Except BerkeleyGW, V100 used is single V100 SXM2. A100 used is single A100 SXM4 More apps detail: AMBER based on PME-Cellulose, GROMACS with STMV (h-bond), LAMMPS with Atomic Fluid LJ-2.5, NAMD with v3.0a1 STMV_NVE Chroma with szscl21_24_128, FUN3D with dpw, RTM with Isotropic Radius 4 1024^3, SPECFEM3D with Cartesian four material model BerkeleyGW based on Chi Sum and uses 8xV100 in DGX-1, vs 8xA100 in DGX A100 1.5X 1.5X 1.6X 1.9X 2.0X 2.1X 1.7X 1.8X 1.9X 0.0x 0.5x 1.0x 1.5x 2.0x 1 2 3 4 5 6 7 8 9 系列1 Speedup V100 分子動力学 物理 工学 地球科学
  • 26. MULTI-INSTANCE GPU (MIG) GPU 使用率を最適化、多くのユーザーに QoS の確保された GPU アクセスを提供 1 基の A100 を最大 7 分割: ハードウェアレベルの分割 各インスタンスに専用の SM、メモリ、L2キャッシュを割当 保障された QoS: すべての MIG インスタンスは予測可能なスループットと レイテンシをもって並列に動作 適切な GPU サイジング: ターゲットワークロードに応じて 適切なサイズの MIG インスタンスを作成可能 柔軟性: MIG インスタンスは動的にサイズ変更が可能 さまざまな環境で利用可能: ベアメタル、Docker、 Kubernetes、ハイパーバイザー ベースの仮想化、等 Amber GPU Mem GPU GPU Mem GPU GPU Mem GPU GPU Mem GPU GPU Mem GPU GPU Mem GPU GPU Mem GPU
  • 27. MIG 構成で推論のスループットを 7 倍に 0.6x 1x 1x 7x 0 1000 2000 3000 4000 5000 6000 7000 Sequences/s BERT Large 推論スループット V100T4 1 MIG (1/7 A100) 7 MIG (1 A100) BERT Large Inference | T4: TRT 7.1, Precision = INT8, Batch Size =256, V100: TRT 7.1, Precision = FP16, Batch Size =256 | A100 with 7 MIG instances of 1g.5gb : Pre-production TRT, Batch Size =94, Precision = INT8 with Sparsity
  • 29. NVIDIA GPU 製品のおおまかな一覧 GeForce PC 向け Quadro ワークステーション向け データセンター GPU Fermi (2010) M2070 6000 GTX 580 Kepler (2012) K6000 GTX 780 K80 K2 K1 NC Maxwell (2014) M40 M6000 GTX 980 M60 NV NVv3 Volta (2017) V100 TITAN V GV100 NDv2 NCv3 Pascal (2016) GP100P5000 GTX 1060/1070 P40 P100 NCv2ND Turing (2018) T4 RTX 3000 GTX 1660 Ti Ampere (2020) A100 Surface Studio 2 Surface Book 3
  • 30. Microsoft Azure の GPU インスタンス NC NV / NVv3 NCv2 ND NCv3 NDv2 用途 HPC & DL VDI / DL HPC & DL DL HPC & DL HPC & DL GPU 世代 Kepler Maxwell Pascal Pascal Volta Volta GPU 種別 Tesla K80 (1 ~ 4GPU) Tesla M60 (1 ~ 4GPU) Tesla P100 (1 ~ 4GPU) Tesla P40 (1 ~ 4GPU) Tesla V100 (1 ~ 4GPU) V100 SXM2 8 GPU CPU コア数 6 ~ 24 6 ~ 48 6 ~ 24 6 ~ 24 6 ~ 24 40 メモリ容量 (GiB) 56 ~ 224 56 ~ 224 112 ~ 448 (v3) 112 ~ 448 112 ~ 448 112 ~ 448 672 InfiniBand FDR InfiniBand N/A FDR InfiniBand FDR InfiniBand FDR InfiniBand EDR InfiniBand
  • 32. まとめ ディープラーニングモデルのトレーニングを高速化するために重要なこと • Volta 世代以降の新しい GPU で、FP16 と FP32 の 混合精度演算を活用する (=Tensor コアを活用する) • FP32 のみを使った既存のコードは AMP で混合精度演算を適用 最新の NVIDIA Ampere アーキテクチャによる NVIDIA A100 GPU • 混合精度演算がさらに速くなった (V100 比 2.5 倍) • FP32 の従来型コードも、TF32 によって Tensor コアで高速化 • さらに、構造的疎性の利用で推論を最大 2 倍高速化 • Tensor コアが FP64 にも対応して HPC アプリケーションを高速化 Azure でも Tensor コアを備えた GPU リソースが利用可能 • V100 搭載インスタンスを、Virtual Machines や Azure Machine Learning で • "NVIDIA NGC Image for Deep Learning and HPC" でセットアップも手間いらず 混合精度演算、NVIDIA A100 GPU、Azure の GPU リソース
  • 33. Copyright© 2020 NVIDIA Corporation. All rights reserved. NVIDIA Corporation, 2788 San Tomas Expressway Santa Clara, CA 95051 本情報の内容 (添付文書、リンク先などを含む) は、公開日時点のものであり、予告なく変更される場合があります。 本コンテンツの著作権、および本コンテンツ中に出てくる商標権、団体名、ロゴ、製品、サービスなどはそれぞれ、各権利保有者に帰属します。