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
A Few Ways to Accelerate Deep Learning
Search
UENISHI Kota
April 04, 2019
Technology
0
990
A Few Ways to Accelerate Deep Learning
UENISHI Kota
April 04, 2019
Tweet
Share
More Decks by UENISHI Kota
See All by UENISHI Kota
Metadata Management in Distributed File Systems
kuenishi
2
470
Behind The Scenes: Cloud Native Storage System for AI
kuenishi
2
330
Apache Ozone behind Simulation and AI Industries
kuenishi
0
290
Distributed Deep Learning with Chainer and Hadoop
kuenishi
3
1.1k
Introducing Retz
kuenishi
5
1.1k
Introducing Retz and how to develop practical frameworks
kuenishi
3
670
Formalization and Proof of Distributed Systems (ja)
kuenishi
10
6.3k
Mesos Frameworkの作り方 (How to Make Mesos Framework)
kuenishi
7
2.3k
分散スケジューラMesosの紹介
kuenishi
2
1.3k
Other Decks in Technology
See All in Technology
TypeScript、上達の瞬間
sadnessojisan
46
13k
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
3
940
Amazon CloudWatch Network Monitor のススメ
yuki_ink
1
200
AWS Lambdaと歩んだ“サーバーレス”と今後 #lambda_10years
yoshidashingo
1
170
100 名超が参加した日経グループ横断の競技型 AWS 学習イベント「Nikkei Group AWS GameDay」の紹介/mediajaws202411
nikkei_engineer_recruiting
1
170
TanStack Routerに移行するのかい しないのかい、どっちなんだい! / Are you going to migrate to TanStack Router or not? Which one is it?
kaminashi
0
570
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
【令和最新版】AWS Direct Connectと愉快なGWたちのおさらい
minorun365
PRO
5
750
強いチームと開発生産性
onk
PRO
33
11k
Why does continuous profiling matter to developers? #appdevelopercon
salaboy
0
180
OCI Network Firewall 概要
oracle4engineer
PRO
0
4.1k
いざ、BSC討伐の旅
nikinusu
2
780
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
Being A Developer After 40
akosma
86
590k
Done Done
chrislema
181
16k
Unsuck your backbone
ammeep
668
57k
Ruby is Unlike a Banana
tanoku
97
11k
Intergalactic Javascript Robots from Outer Space
tanoku
269
27k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
YesSQL, Process and Tooling at Scale
rocio
169
14k
BBQ
matthewcrist
85
9.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Navigating Team Friction
lara
183
14k
RailsConf 2023
tenderlove
29
900
Transcript
Repro Tech Talk #7 2019/4/4 Preferred Networks, Inc. Kota Uenishi
A Few Ways to Accelerate Deep Learning
誰? Kota UENISHI @kuenishi • github.com • twitter.com • etc…
分散深層学習をやっています 25分しかないのでめっちゃ急ぎます
なぜ深層学習を速くするのか?
PFNは最新の研究や技術を最も早く実用化する お片付けロボット @画像認識、音声指示 お片付けロボットアーム @画像認識、音声指示 協調自動運転 @画像認識、強化学習 自動運転 @画像認識、強化学習
機械学習(深層学習)の開発サイクル タスク(ビジネス仮 説)を定義する よいモデルを 開発する モデルをアプリに埋 め込む アプリでビジネスを する 学習データを
集める 深層ネットワークを 定義する 学習実験をしてモ デルを作る テストデータで精度 を確認する モデルで推論する アプリをつくる アプリ開発 データを集める データを分析する 仮説 / 課題を明ら かにする 解決方法を考える システム開発、 運用の設計
試行錯誤のボトルネックは学習 w/NVIDIA P100 mlperf v0.5 results https://mlperf.org/results/ タスク 画像分類 物体検出1
物体検出2 翻訳 RNN翻訳 推薦 強化学習 データセット ImageNet COCO COCO WMT E-G WMT E-G MovieLens-2 0M Pro games モデル ResNet-50 SSD w/ResNet-34 Mask-R-CNN NMT Transformer NCF Mini Go 所要時間(分) 8831.3 827.7 4999.5 1134.5 1869.8 46.7 4388.7 (時間) 147.2 13.8 83.3 18.9 31.2 0.8 73.2
強いモデルを作るために • よいデータで学習すること • よいネットワークであること • よいレシピで学習すること • よいハイパーパラメータが与えられること •
何度も繰り返し試行錯誤すること
1GPUで速くする
深層学習 ≒ DNNをSGDでデータに対して最適化する この手順を好きなだけ繰り返す 1. データをシャッフルしてミニバッチに分割する 2. 分割したミニバッチごとに、モデルに対してまとめて a. 前向き計算をして推論結果を出す
b. 推論結果と正解データのズレ(距離)を計算 c. ズレをもとに後ろ向き計算(backpropをする) d. 後ろ向き計算で得られた勾配の平均を計算 e. 勾配をモデルのパラメータに反映
データをシャッフルしてミニバッチに分割する Shuffle Minibatch MNIST • トータルのデータ数は 6万 • 典型的にはバッチサイズ 10~100
CIFAR10 • トータルのデータ数は 6万 • 典型的にはバッチサイズは 64 ImageNet-1k • トータルのデータ数は 158万枚 • 典型的にはバッチサイズ 32
ミニバッチ毎に学習 Forward Backward Optimize 推論 [fish, dog, …] 正解 [cat,
dog, …] loss [1.0, 0.0, …] update param grad Forward バッチサイズを単純に大きくすると GPU内の並列 度は上がるが、学習効率は落ちる
1GPUで速くする Forward Backward Optimize OpenCV DALI ChainerX chainer-compiler CuPy Kernel
Fusion TensorCore (125TFLOPS) cProfile, nvprof 必見 Chainer/ChainerMNのCPUリソース不足 による速度低下と解決法 Chainer/ChainerMNのおすすめなプロ ファイルの取り方&プロファイルの見方 の注意点
並列処理で速くする
並列処理で速くする@2017 Akiba et al., 2017 https://arxiv.org/abs/1711.04325
並列処理で速くする@2019 Mikami et al., https://arxiv.org/abs/1811.05233
ChainerMNによる分散学習 All-Reduce Forward Forward Forward Backward Backward Backward Optimize Optimize
Optimize
並列化して速くなる、は自明か? • GPUあたりのバッチサイズはそんな に変わらない • GPU数を32倍にすると、全体のバッ チサイズも32倍 • (2017年までは)バッチサイズをあま り大きくすると汎化性能にペナルティ
があることが分かっていた • 頑張って512とか Keskar et al., “On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima”, arXiv:1609.04836 [cs.LG]
並列化するテクニックが上手くいく場合がある Linear Scaling Rule: • バッチサイズを k 倍にしたいときは は学習率も k
倍すればよい バッチサイズが大きくなるとSharp minimaに陥ってぬけにくくなるので、そ の分だけ学習率を大きくすればよい ※他にもさまざまなテクニックがある Goyal et al., “Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour”, arXiv:1706.02677 [cs.CV]
All-Reduceを速くする All-Reduce Forward Forward Forward Backward Backward Backward Optimize Optimize
Optimize + + →
All-Reduceを速くする • All-Reduceが速ければ速いほどス ケールアウトすることができる • NCCL: NVIDIAが提供している高速 な集団通信ライブラリ • RDMA:
リモートのGPUメモリに直接 データを読み書きする • Ring All-Reduce: 帯域をフル利用 できるアルゴリズム Akiba et al., 2017 https://arxiv.org/abs/1711.04325
ハードウェアで速くする
スパコンその1: MN-1 1024GPU • 計算ノード x128 – NVIDIA Tesla P100
x8 – InfiniBand FDR (56Gbps) x2 • 19.1PFLOPS @半精度 • TOP500 91位 (2017 Nov) – 国内13位 – 産業用1位 • ImageNet 学習の世界記録(当時) – Preferred Networks、深層学習の学習速度 において世界最速を実現 © NTT Communications
スパコンその2: MN-1b 512GPU • 計算ノード x64 – NVIDIA Tesla V100
(32GB) x8 – InfiniBand EDR (100Gbps) x2 • 57.3PFLOPS @混合精度 • Open Images Challenge 2位 – 世界454チームが参加した物体検出コンペティショ ン Google AI Open Images – Object Detection Trackで準優勝 • 導入当初からFull Kubernetesクラスタ • 最新のNVIDIA Tesla V100 32GB GPUを採用した プラ イベート・スーパーコンピュータ「 MN-1b」を7月に稼働 © NTT Communications
スパコンその3: MN-2 1024GPU • 計算ノード x128 – NVIDIA Tesla V100
x8 – 100GbE x4 – NVLink (300GB/s) • 128PFLOPS @混合精度 • Challenges – いろいろ自社運用 – CLOSネットワーク w/ L3 ルーティング – NCCL AllReduce on RoCE v2 – Fully containerized by Kubernetes – HDFSがプライマリのストレージ TBF
• MN-2と同じ場所に設置 • Powered by MN-Core – 深層学習に特化した自社設計チップ – ピーク性能
524TFLOPS @半精度 – 消費電力 500W スパコンその4: MN-3 x4
MN-3完成イメージ
We’re hiring! intern/fulltime
Questions?
まずは始めよう $ pip install chainer cupy-cuda100 mpi4py
See also: • 最先端のディープラーニング 研究開発を支えるGPU計算機基盤 「MN-1」のご紹介 • Massively Scale Your
Deep Learning Training with NCCL 2.4 • Preferred Networksの機械学習クラスタを支える技術 • CuPy -NumPy互換GPUライブラリによるPythonでの高速計算 • Optimizing Deep Learning with Chainer • ディープラーニングを応用した製品不良検査ソフトウェアおよびピッキングロボットソリューション • ViEW 2018 基調講演 2018-12-7 実世界で働くロボットのためのビジョン・言語処理技術 • 東北大学講義資料 実世界における自然言語処理 - すべての人にロボットを • •