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
190
Mixed Precisionのすゝめ
Mixed Precisionのすゝめ
第56回 コンピュータビジョン勉強会@関東での発表資料
tereka114
March 15, 2022
Tweet
Share
More Decks by tereka114
See All by tereka114
KDD2023学会参加報告
tereka114
2
340
Prompting Large Language Models with Answer Heuristics for Knowledge-based Visual Question Answering
tereka114
0
250
Mobile-Former: Bridging MobileNet and Transformer
tereka114
0
870
DER: Dynamically Expandable Representation for Class Incremental Learning
tereka114
0
110
Jupyter Notebookを納品した話
tereka114
0
210
Multi Scale Recognition with DAG-CNNs
tereka114
0
85
How to use scikit-image for data augmentation
tereka114
0
120
面倒くさいこと考えたくないあなたへ〜Tpotと機械学習〜
tereka114
0
170
Chainerを使ったらカノジョができたお話
tereka114
0
100
Other Decks in Programming
See All in Programming
try!Swift Tokyo 2024 参加報告 LT
akidon0000
1
190
オブジェクト指向のリ・オリエンテーション~歴史を振り返り、AI時代に向きなおる~
hanyudaeiiti
10
5.6k
From Spring Boot 2 to Spring Boot 3 with Java 22 and Jakarta EE
ivargrimstad
0
910
両面どころかインフラもTSでできるよ ~ 全方位TypeScriptによるプロダクト開発 ~
myfinder
9
3.2k
雑に思考を整理する技術と効能
konifar
55
26k
今、知っておきたい! 生成AIエージェントの世界
elith
3
340
#phpcon_odawara オープン・クローズドなテストフィクスチャを求めて / open closed test fixtures
77web
3
220
Git Lint
bkuhlmann
4
740
二郎系ラーメンのコールで学ぶ AST 解析
memory1994
PRO
7
1.7k
Elm Form Validation
bkuhlmann
0
510
Ruby GitHub Packages
bkuhlmann
0
620
はてなにおける CSS Modules、及び CSS Modules に足りないもの / CSS Modules in Hatena, and CSS Modules missing parts
mizdra
3
520
Featured
See All Featured
How to name files
jennybc
64
92k
Fashionably flexible responsive web design (full day workshop)
malarkey
397
65k
Build The Right Thing And Hit Your Dates
maggiecrowley
23
2k
Building Your Own Lightsaber
phodgson
98
5.7k
Designing for humans not robots
tammielis
247
25k
jQuery: Nuts, Bolts and Bling
dougneiner
59
7.1k
Principles of Awesome APIs and How to Build Them.
keavy
120
16k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
24
2.3k
A Modern Web Designer's Workflow
chriscoyier
688
190k
Visualization
eitanlees
135
14k
We Have a Design System, Now What?
morganepeng
42
6.7k
Optimising Largest Contentful Paint
csswizardry
7
2.3k
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