Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Volta は、Chainer で使えるの?

6,742 views

Published on

2017年9月30日の Chainer Meetup #6 でエヌビディアの成瀬が発表した資料です。
https://chainer.connpass.com/event/65093/

Published in: Technology
  • Dating for everyone is here: ♥♥♥ http://bit.ly/2Q98JRS ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Sex in your area is here: ♥♥♥ http://bit.ly/2Q98JRS ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • こんにちは。このスライドはChainer 3RCですが、Chainer 4ではどうでしょうか。Titan Vをお借りしています。このスライドでは float16 にしていますが、float32 でも動いているように思います。これは、Tensor Core を使用せずに動作しているということでしょうか。
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Volta は、Chainer で使えるの?

  1. 1. Akira Naruse, Senior Developer Technology Engineer, Sep 30, 2017 Voltaは、Chainerで使えるの?
  2. 2. 2 Voltaは、Chainerで使えるの? はい、使えます! • Voltaって何? • どれぐらい、Voltaで速くなるの? • どうすれば、Voltaを使えるの?
  3. 3. 3 VOLTA (V100) The Fastest GPU for DL and HPC Volta Architecture Most Productive GPU Improved SIMT Model New Algorithms Volta MPS Inference Utilization Improved NVLink & HBM2 Efficient Bandwidth
  4. 4. 4 VOLTA (V100) The Fastest GPU for DL and HPC Volta Architecture Most Productive GPU Improved SIMT Model New Algorithms Volta MPS Inference Utilization Improved NVLink & HBM2 Efficient Bandwidth Tensor Core 120 Programmable TFLOPS Deep Learning
  5. 5. 5 TENSOR CORE 128 ops /cycle 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 BA C Mixed Precision
  6. 6. 6 VOLTA TENSOR OPERATION FP16 storage/input Full precision product Sum with FP32 accumulator Convert to FP32 result FP16 FP16 × + FP32 FP32 more products
  7. 7. 7 VOLTA GV100 SM Units Ops/cycle FP32 64 128 Tensor Core 8 1024 Per SM
  8. 8. 8 80 SM 5120 FP32 units 640 Tensor Cores VOLTA: TESLA V100 *full GV100 chip contains 84 SMs Units Ops/cycle FP32 5,120 10,240 Tensor Core 640 81,920 80 SM
  9. 9. 9 P100 V100 Ratio FP16 or Tensor Core 21 TOPS 120 TOPS 6x FP32 10 TFLOPS 15 TFLOPS 1.5x FP64 5 TFLOPS 7.5 TFLOPS 1.5x HBM2 Bandwidth 720 GB/s 900 GB/s 1.2x 理論ピーク性能
  10. 10. 10 どれぐらい、Voltaで速くなるの? P100 FP32, V100 FP32 vs. V100 Tensor Core Resnet50 (*) Chainer 3.0.0rc1+ と CuPy 2.0.0rc1+ を使用 Conv,1x1,64 Conv,3x3,64 Conv,1x1,256 BN ReLU BN ReLU BN + x ReLU
  11. 11. 11 精度は大丈夫? http://docs.nvidia.com/deeplearning/sdk/mixed-precision-training/index.html Training with Mixed-Precision User Guide
  12. 12. 12 どうすれば、Tensor Coreを使えるの? • Volta(Tesla V100)が必要です。 8 GPUs 4 GPUs
  13. 13. 13 どうすれば、Tensor Coreを使えるの? • Voltaが必要です。 • CUDA9, cuDNN7が必要です。 • CUDA8, cuDNN6は Voltaに対応していません。
  14. 14. 14 cuBLAS9 Tensor Core Operations
  15. 15. 15 cuBLAS9 C = alpha * AB + beta * C
  16. 16. 16 cuDNN7 Tensor Core Operations 制限 • 一部のConvolutionアルゴリズムの み、Tensor Coreに対応 • 入力・出力チャネル数は8の倍数
  17. 17. 17 どうすれば、Tensor Coreを使えるの? • Voltaが必要です。 • CUDA9, cuDNN7が必要です。 • CUDA8, cuDNN6はVoltaに対応していません。 • モデルは、FP16向けに書き換えが必要です。
  18. 18. 18 FP16対応AlexNet (examples/imagenet/alex.py) def __init__(self): chainer.Chain.__init__(self) W = initializers.HeNormal(1 / np.sqrt(2), np.float16) bias = initializers.Zero(np.float16) with self.init_scope(): self.conv1 = L.Convolution2D(None, 96, 11, stride=4, initialW=W, initial_bias=bias) self.conv2 = L.Convolution2D(None, 256, 5, pad=2, initialW=W, initial_bias=bias) self.conv3 = L.Convolution2D(None, 384, 3, pad=1, initialW=W, initial_bias=bias) self.conv4 = L.Convolution2D(None, 384, 3, pad=1, initialW=W, initial_bias=bias) self.conv5 = L.Convolution2D(None, 256, 3, pad=1, initialW=W, initial_bias=bias) self.fc6 = L.Linear(None, 4096, initialW=W, initial_bias=bias) self.fc7 = L.Linear(None, 4096, initialW=W, initial_bias=bias) self.fc8 = L.Linear(None, 1000, initialW=W, initial_bias=bias) def __call__(self, x, t): return Alex.__call__(self, F.cast(x, np.float16), t)
  19. 19. 19 どうすれば、Tensor Coreを使えるの? • Voltaが必要です。 • CUDA9, cuDNN7が必要です。 • CUDA8, cuDNN6はVoltaに対応していません。 • モデルは、FP16向けに書き換えが必要です。 • ChainerとCuPyの、最新のmasterブランチが必要です。 • CUDA9, cuDNN7, Tensor Core対応のPRが、既にマージされています。 • CuPy#353, #362, #363, #492, #494, #495
  20. 20. 20 どうすれば、Tensor Coreを使えるの? • Voltaが必要です。 • CUDA9, cuDNN7が必要です。 • CUDA8, cuDNN6はVoltaに対応していません。 • モデルは、FP16向けに書き換えが必要です。 • ChainerとCuPyの、最新のmasterブランチが必要です。 • CUDA9, cuDNN7, Tensor Core対応のPRが、既にマージされています。 • Stable版(Chainer2とCuPy1)では使えません。 • プラス、以下のPRが必要です。 (いずれ、マージされるでしょう…) • Chainer#3386: FP16でcuDNNのBNを使用 (9/29に、マージされました) • Chainer#3388: Convolution層に、Tensor Coreを使用
  21. 21. 21 どうすれば、Tensor Coreを使えるの? • Voltaが必要です。 • CUDA9, cuDNN7が必要です。 • CUDA8, cuDNN6はVoltaに対応していません。 • モデルは、FP16向けに書き換えが必要です。 • ChainerとCuPyの、最新のmasterブランチが必要です。 • CUDA9, cuDNN7, Tensor Core対応のPRが、既にマージされています。 • Stable版(Chainer2とCuPy1)では使えません。 • プラス、以下のPRが必要です (いずれマージされるでしょう)。 • Chainer#3386: FP16でも、cuDNNのBatch Normalizationを使用 • Chainer#3388: Convolution層に、Tensor Coreを使用 • すると、自動でTensor Coreが使えます!
  22. 22. 22 どうすれば、Tensor Coreを使えるの? • Voltaが必要です。 • CUDA9, cuDNN7が必要です。 • CUDA8, cuDNN6はVoltaに対応していません。 • モデルは、FP16向けに書き換えが必要です。 • ChainerとCuPyの、最新のmasterブランチが必要です。 • CUDA9, cuDNN7, Tensor Core対応のPRが、既にマージされています。 • Stable版(Chainer2とCuPy1)では使えません。 • プラス、以下のPRが必要です (いずれマージされるでしょう)。 • Chainer#3386: FP16でも、cuDNNのBatch Normalizationを使用 • Chainer#3388: Convolution層に、Tensor Coreを使用 • すると、自動でTensor Coreが使えます! • あと、以下のPRもあると良いです。 • Chainer#3336: GPUカーネル実行と入力データ転送をオーバーラップ • Chainer#3097: FP16でマルチGPUトレーニング (NCCL2)
  23. 23. 23 (*) CUDA 9, cuDNN 7, NCCL 2, Chainer 3.0.0rc1+, CuPy 2.0.0rc1+ を使用、マシンはDGX1V トレーニング中の様子 ImageNet, ResNet50, Volta, Tensor Core使用 グラフ作成、メモリ管理、カーネル投入 Forward Backward 次のデータ準備 データ転送 GPU CPU
  24. 24. 24 バッチサイズ、そんなに大きくして大丈夫? https://research.preferred.jp/2017/02/chainermn-benchmark-results/ https://research.fb.com/publications/imagenet1kin1h/
  25. 25. 25 日本最大の GPU 技術イベントにぜひご参加ください 2017/12/12~13 | 東京 | #GTCJapan http://www.gputechconf.jp/ 基調講演は CEO ジェンスン ファン GPU テクノロジが可能にする AI、VR、自動運転の最先端がここに GTC Japan 2017 は 2017年12月12 ~ 13日に東京で開催

×