Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Mixed Precisionのすゝめ
Search
tereka114
March 15, 2022
Programming
0
350
Mixed Precisionのすゝめ
Mixed Precisionのすゝめ
第56回 コンピュータビジョン勉強会@関東での発表資料
tereka114
March 15, 2022
Tweet
Share
More Decks by tereka114
See All by tereka114
トラブルがあったコンペに学ぶデータ分析
tereka114
2
1.3k
Harnessing Large Language Models for Training-free Video Anomaly Detection
tereka114
1
1.5k
KDD2023学会参加報告
tereka114
2
530
Prompting Large Language Models with Answer Heuristics for Knowledge-based Visual Question Answering
tereka114
0
360
Mobile-Former: Bridging MobileNet and Transformer
tereka114
0
1.1k
DER: Dynamically Expandable Representation for Class Incremental Learning
tereka114
0
170
Jupyter Notebookを納品した話
tereka114
0
370
Multi Scale Recognition with DAG-CNNs
tereka114
0
120
How to use scikit-image for data augmentation
tereka114
0
210
Other Decks in Programming
See All in Programming
AWSのLambdaで PHPを動かす選択肢
rinchoku
2
360
QA環境で誰でも自由自在に現在時刻を操って検証できるようにした話
kalibora
1
120
競技プログラミングへのお誘い@阪大BOOSTセミナー
kotamanegi
0
390
선언형 UI에서의 상태관리
l2hyunwoo
0
250
Androidアプリのモジュール分割における:x:commonを考える
okuzawats
1
260
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
6
1.3k
AppRouterを用いた大規模サービス開発におけるディレクトリ構成の変遷と問題点
eiganken
1
410
Androidアプリの One Experience リリース
nein37
0
730
php-conference-japan-2024
tasuku43
0
410
テストコード書いてみませんか?
onopon
2
290
各クラウドサービスにおける.NETの対応と見解
ymd65536
0
230
技術的負債と向き合うカイゼン活動を1年続けて分かった "持続可能" なプロダクト開発
yuichiro_serita
0
270
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
850
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
How to Ace a Technical Interview
jacobian
276
23k
Making Projects Easy
brettharned
116
6k
Git: the NoSQL Database
bkeepers
PRO
427
64k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.2k
Embracing the Ebb and Flow
colly
84
4.5k
Statistics for Hackers
jakevdp
797
220k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.3k
KATA
mclloyd
29
14k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Transcript
1 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
Mixed Precisionのすゝめ 2020/1/19 Acroquest Technology株式会社 ⼭本 ⼤輝(@tereka114)
⼭本 ⼤輝 (@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
Acroquestのミッション・ビジョン Copyright © Acroquest Technology Co., Ltd. All rights reserved.
3 テクノロジストチームとして ビジネスの⾰新的価値創出に挑戦する ビジョン Acroquestの創り出す技術で 地球を感動で進化させる ミッション
「働きがいのある会社(GPTW)」 ランキング(従業員25〜99⼈部⾨) 1位 を 3回 受賞 1位 1位 1位
⽬次 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
5 1. 本発表の⽬的 2. Mixed Precisionの紹介 3. Mixed Precision(AMP)を使ってみよう 4. まとめ 5. 参考資料
本発表の⽬的 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
6
本発表の⽬的 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
7 1. Mixed Precisionの仕組みの概要を知る。 2. 簡単に使えるAutomatic Mixed Precisionのライブラリを知って、 利⽤のお⼿軽さだと感じてもらう。 3. ⼀つの選択肢として認識・使えるようになってほしい
MIXED PRECISIONの紹介 Copyright © Acroquest Technology Co., Ltd. All rights
reserved. 8
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による計算を⾏えば精度が下がることが知られている。
Mixed Precisionを何故、使うのか Copyright © Acroquest Technology Co., Ltd. All rights
reserved. 10 1. メモリ消費量の削減ができる。 • 巨⼤なネットワーク(Semantic Segmentationなど)の利⽤が可能になる。 • バッチサイズを増加させることができるため、学習が安定する。 2. 計算速度の⾼速化 • ⼀部をfloat16で計算するので、Tensor Coreの有効活⽤ができる。 • GPUへの転送量が減るので、計算速度の⾼速化が実現できる。
Mixed Precisionの仕組み概要 Copyright © Acroquest Technology Co., Ltd. All rights
reserved. 11 1. float16へ重みをコピー 2. float16でForward処理 3. float16でBackward処理 ※オリジナルの重みは常にfloat32で保持する。
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で表現ができない。
Mixed Precision実⾏時の精度 Copyright © Acroquest Technology Co., Ltd. All rights
reserved. 13 ・精度はMixed Precisionの 有無で差が出ない。 ・Master Weightのfloat32は 効果がある。
Mixed Precision実⾏時の性能 Copyright © Acroquest Technology Co., Ltd. All rights
reserved. 14 https://devblogs.nvidia.com/nvidia-automatic-mixed-precision-tensorflow/
複数タスクでの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
MIXED PRECISION(AMP)を 使ってみよう Copyright © Acroquest Technology Co., Ltd. All
rights reserved. 16
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でしか利⽤ができない
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の初期化コード、 学習前に実⾏ 学習時に追加する実 装
実験 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) デフォルトで実験
実験結果 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
経験ベースの感想 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
21 1. バッチサイズや画像のサイズを担保する必要のあるタスクでは良さ そう。 • ⾼解像度Semantic Segmentationや⼀定のバッチサイズを確保する必要の あるBertでは、⾮常に有効なトリック 2. すべてfloat32計算と⽐較すると少々精度が下がる。コンペティシ ョンで利⽤する際には⽐較・検証するのが望ましい。
まとめ Copyright © Acroquest Technology Co., Ltd. All rights reserved.
22
まとめ Copyright © Acroquest Technology Co., Ltd. All rights reserved.
23 1. Mixed Precisionはfloat32/16を利⽤した計算⽅法 • 精度は維持しつつ、メモリ消費量や計算速度の向上に貢献 • ただし、TensorCoreの利⽤が必須 2. NVIDIA社のライブラリ、Automatic Mixed Precisionで簡単に実 装可能 • ごくわずかな実装で使えるので、使いやすい 3. ぜひ、使ってみてください。
参考資料 Copyright © Acroquest Technology Co., Ltd. All rights reserved.
24
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