$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Mixed Precisionのすゝめ
Search
tereka114
March 15, 2022
Programming
0
430
Mixed Precisionのすゝめ
Mixed Precisionのすゝめ
第56回 コンピュータビジョン勉強会@関東での発表資料
tereka114
March 15, 2022
Tweet
Share
More Decks by tereka114
See All by tereka114
トラブルがあったコンペに学ぶデータ分析
tereka114
2
1.8k
Harnessing Large Language Models for Training-free Video Anomaly Detection
tereka114
1
1.7k
KDD2023学会参加報告
tereka114
2
630
Prompting Large Language Models with Answer Heuristics for Knowledge-based Visual Question Answering
tereka114
0
420
Mobile-Former: Bridging MobileNet and Transformer
tereka114
0
1.1k
DER: Dynamically Expandable Representation for Class Incremental Learning
tereka114
0
230
Jupyter Notebookを納品した話
tereka114
0
510
Multi Scale Recognition with DAG-CNNs
tereka114
0
160
How to use scikit-image for data augmentation
tereka114
0
290
Other Decks in Programming
See All in Programming
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
120
20 years of Symfony, what's next?
fabpot
2
340
CSC509 Lecture 14
javiergs
PRO
0
220
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
120
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
120
【CA.ai #3】ワークフローから見直すAIエージェント — 必要な場面と“選ばない”判断
satoaoaka
0
230
堅牢なフロントエンドテスト基盤を構築するために行った取り組み
shogo4131
8
2.2k
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
200
スタートアップを支える技術戦略と組織づくり
pospome
8
16k
複数人でのCLI/Infrastructure as Codeの暮らしを良くする
shmokmt
5
2.2k
DSPy Meetup Tokyo #1 - はじめてのDSPy
masahiro_nishimi
1
160
ハイパーメディア駆動アプリケーションとIslandアーキテクチャ: htmxによるWebアプリケーション開発と動的UIの局所的適用
nowaki28
0
380
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
The Pragmatic Product Professional
lauravandoore
37
7.1k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Rails Girls Zürich Keynote
gr2m
95
14k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
It's Worth the Effort
3n
187
29k
Automating Front-end Workflow
addyosmani
1371
200k
What's in a price? How to price your products and services
michaelherold
246
12k
A Modern Web Designer's Workflow
chriscoyier
698
190k
How to train your dragon (web standard)
notwaldorf
97
6.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
How GitHub (no longer) Works
holman
316
140k
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