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.

Mixed Precisionのすゝめ

688 views

Published on

Mixed Precisionのすゝめ
第56回 コンピュータビジョン勉強会@関東での発表資料

Published in: Data & Analytics
  • Be the first to comment

  • Be the first to like this

Mixed Precisionのすゝめ

  1. 1. 1Copyright © Acroquest Technology Co., Ltd. All rights reserved. Mixed Precisionのすゝめ 2020/1/19 Acroquest Technology株式会社 山本 大輝(@tereka114)
  2. 2. 山本 大輝 (@tereka114) 1. Acroquest Technology株式会社 ① 画像処理・自然言語処理の研究開発 2. のんびりしているエンジニアの日記 http://nonbiri-tereka.hatenablog.com/ 3. Kaggle Master ① Home Credit Default Risk 2nd ② IEEE Signal Processing 10th 4. Interface 2018年12月号 AIひょっこり猫カメ ラ Interface 2020年2月号 組み込みコンピュータ 技術512
  3. 3. Acroquestのミッション・ビジョン Copyright © Acroquest Technology Co., Ltd. All rights reserved. 3 テクノロジストチームとして ビジネスの革新的価値創出に挑戦する ビジョン Acroquestの創り出す技術で 地球を感動で進化させる ミッション
  4. 4. 「働きがいのある会社(GPTW)」 ランキング(従業員25~99人部門) 1位 を 3回 受賞 1位 1位 1位
  5. 5. 目次 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 5 1. 本発表の目的 2. Mixed Precisionの紹介 3. Mixed Precision(AMP)を使ってみよう 4. まとめ 5. 参考資料
  6. 6. 本発表の目的 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 6
  7. 7. 本発表の目的 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 7 1. Mixed Precisionの仕組みの概要を知る。 2. 簡単に使えるAutomatic Mixed Precisionのライブラリを知って、 利用のお手軽さだと感じてもらう。 3. 一つの選択肢として認識・使えるようになってほしい
  8. 8. MIXED PRECISIONの紹介 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 8
  9. 9. Mixed Precisionとはなにか? Copyright © Acroquest Technology Co., Ltd. All rights reserved. 9 1. Mixed Precisionはfloat32とfloat16を組み合わせて計算する技術 2. 2017年に論文「Mixed Precision Training」がNVIDIA + Baido から発表されている。 3. 精度を維持しつつ、メモリ消費量の軽減や、計算速度の高速化を実 現した。 • 単純にFloat16による計算を行えば精度が下がることが知られている。
  10. 10. Mixed Precisionを何故、使うのか Copyright © Acroquest Technology Co., Ltd. All rights reserved. 10 1. メモリ消費量の削減ができる。 • 巨大なネットワーク(Semantic Segmentationなど)の利用が可能になる。 • バッチサイズを増加させることができるため、学習が安定する。 2. 計算速度の高速化 • 一部をfloat16で計算するので、Tensor Coreの有効活用ができる。 • GPUへの転送量が減るので、計算速度の高速化が実現できる。
  11. 11. Mixed Precisionの仕組み概要 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 11 1. float16へ重みをコピー 2. float16でForward処理 3. float16でBackward処理 ※オリジナルの重みは常にfloat32で保持する。
  12. 12. Mixed Precisionの工夫 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 12 1. 演算の工夫 • 演算子によって、float32, float16で計算するものを選定している。 – 行列計算はflaot16 – Pointwise Operation(誤差関数含む)はfloat32 2. Master Weightはfloat32を利用 • Float16だと、学習の終盤で勾配が小さすぎて重みの更新ができなくなる。 3. 誤差をスケール(X倍)させる。 • 誤差が小さすぎると勾配がfloat16で表現ができない。
  13. 13. Mixed Precision実行時の精度 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 13 ・精度はMixed Precisionの 有無で差が出ない。 ・Master Weightのfloat32は 効果がある。
  14. 14. Mixed Precision実行時の性能 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 14 https://devblogs.nvidia.com/nvidia-automatic-mixed-precision-tensorflow/
  15. 15. 複数タスクでのMixed Precisionの精度と性能 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 15 Model Script1 Framework Data Set FP32 Accuracy Mixed Precision Accuracy FP32 Throughput Mixed Precision Throughput Speed-up BERT Q&A2 TensorFlow SQuAD 90.83Top 1% 90.99Top 1% 66.65 sentences/sec 129.16 sentences/sec 1.94 SSD w/RN501 TensorFlow COCO 2017 0.268mAP 0.269mAP 569 images/sec 752 images/sec 1.32 GNMT3 PyTorch WMT16 English to German 24.16BLEU 24.22BLEU 314,831 tokens/sec 738,521 tokens/sec 2.35 Neural Collaborative Filter1 PyTorch MovieLens 20M 0.959HR 0.960HR 55,004,590 samples/sec 99,332,230 samples/sec 1.81 U-Net Industrial1 TensorFlow DAGM 2007 0.965-0.988 0.960-0.988 445 images/sec 491 images/sec 1.10 ResNet-50 v1.51 MXNet ImageNet 76.67Top 1% 76.49Top 1% 2,957 images/sec 10,263 images/sec 3.47 Tacotron 2 / WaveGlow 1.01 PyTorch LJ Speech Dataset 0.3629/- 6.1087 0.3645/- 6.0258 10,843 tok/s257,687 smp/s 12,742 tok/s500,375 smp/s 1.18/1.94 https://docs.nvidia.com/deeplearning/sdk/mixed-precision-training/index.html
  16. 16. MIXED PRECISION(AMP)を 使ってみよう Copyright © Acroquest Technology Co., Ltd. All rights reserved. 16
  17. 17. Automatic Mixed Precision Copyright © Acroquest Technology Co., Ltd. All rights reserved. 17 1. NVIDIA社のライブラリで、モデルを自動的にMixed Precisionに切り替える。 2. TensorFlow, PyTorch, MXNetはサポートされている。 ① PyTorchはapexのインストールが必要 – https://github.com/NVIDIA/apex ② その他のライブラリに関しても、次のサイトに記述あり – https://developer.nvidia.com/automatic-mixed-precision 3. 導入が簡単で、コードの修正もごくわずか。 4. ただし、TensorCoreがあるGPUでしか利用ができない
  18. 18. PyTorchにおける実装例 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 18 for images, labels in trainloader: images = images.cuda() labels = labels.cuda() loss = criterion(outputs, labels) loss.backward() optimizer.step() model, optimizer = amp.initialize(model, optimizer, opt_level="O1", verbosity=0) for images, labels in trainloader: images = images.cuda() labels = labels.cuda() loss = criterion(outputs, labels) with amp.scale_loss(loss, optimizer) as scaled_loss: scaled_loss.backward() optimizer.step() ampの初期化コード、 学習前に実行 学習時に追加する実 装
  19. 19. 実験 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 19 1. CIFAR10で実験 項目 値 理由 モデル ResNet50 画像認識で頻繁に利用されるモデルを利用 Batch size 32 適度に設定 Epoch 30 適度に設定 Data Augmentation なし 今回は比較した精度を知りたかったので、 Data Augmentationを実施していない。 Optimizer (最適化) Adam (lr=0.001) デフォルトで実験
  20. 20. 実験結果 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 20 項目 Mixed Precisionなし Mixed Precisionあり 効果 時間 4899s 3864s x1.26 メモリ 2467MB 2177MB x1.13 精度 0.854 0.846
  21. 21. 経験ベースの感想 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 21 1. バッチサイズや画像のサイズを担保する必要のあるタスクでは良さ そう。 • 高解像度Semantic Segmentationや一定のバッチサイズを確保する必要の あるBertでは、非常に有効なトリック 2. すべてfloat32計算と比較すると少々精度が下がる。コンペティシ ョンで利用する際には比較・検証するのが望ましい。
  22. 22. まとめ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 22
  23. 23. まとめ Copyright © Acroquest Technology Co., Ltd. All rights reserved. 23 1. Mixed Precisionはfloat32/16を利用した計算方法 • 精度は維持しつつ、メモリ消費量や計算速度の向上に貢献 • ただし、TensorCoreの利用が必須 2. NVIDIA社のライブラリ、Automatic Mixed Precisionで簡単に実 装可能 • ごくわずかな実装で使えるので、使いやすい 3. ぜひ、使ってみてください。
  24. 24. 参考資料 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 24
  25. 25. 5. 参考資料 Copyright © Acroquest Technology Co., Ltd. All rights reserved. 25 1. INTRODUCTION TO MIXED PRECISION TRAINING • https://nvlabs.github.io/iccv2019-mixed-precision- tutorial/files/dusan_stosic_intro_to_mixed_precision_training.pdf 2. Mixed Precision Training • https://arxiv.org/abs/1710.03740

×