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
930
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
400
Behind The Scenes: Cloud Native Storage System for AI
kuenishi
2
260
Apache Ozone behind Simulation and AI Industries
kuenishi
0
190
Distributed Deep Learning with Chainer and Hadoop
kuenishi
3
970
Introducing Retz
kuenishi
5
900
Introducing Retz and how to develop practical frameworks
kuenishi
3
580
Formalization and Proof of Distributed Systems (ja)
kuenishi
10
6.1k
Mesos Frameworkの作り方 (How to Make Mesos Framework)
kuenishi
7
2.2k
分散スケジューラMesosの紹介
kuenishi
2
1.2k
Other Decks in Technology
See All in Technology
プロダクト開発ゼロイチの分類とロジックス事業がイチに至るまで
niwatakeru
0
100
SREのキャリア、 あるいは生態 / #ya8
cohalz
10
1k
Command-line interface tool design / PHPerKaigi 2024
k1low
4
1k
Simplifying Data Analysis & Visualization with Developer Tools & AI
nitya
1
220
調整さんの調整結果をカレンダーへ登録するGPTsを作った話
hrsano645
1
160
自己完結な開発者組織を支える プラットフォーム作り
recruitengineers
PRO
2
230
ECS on FargateへのSeekable OCI導入レポート
iwamot
0
260
DevOps Topologies 10 years on: what have we learned about silos, collaboration, and flow? - Matthew Skelton, Conflux
matthewskelton
PRO
2
420
Microsoft Fabric 開発ガイド
ryomaru0825
6
2.7k
ChatGPTのLT会-メモソフトにChatGPT入れると結構便利
okada_fuutass
0
160
Feature Flag Deep Dive
biwashi
21
5.1k
マルチテナントの実現におけるDB設計とRLS / Utilizing RSL in multi-tenancy
soudai
20
5k
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
1
1.2k
Documentation Writing (for coders)
carmenintech
59
3.7k
Building a Scalable Design System with Sketch
lauravandoore
455
32k
Mobile First: as difficult as doing things right
swwweet
215
8.5k
Designing for Performance
lara
601
67k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
19
1.6k
Docker and Python
trallard
33
2.6k
In The Pink: A Labor of Love
frogandcode
137
21k
Designing Experiences People Love
moore
135
23k
YesSQL, Process and Tooling at Scale
rocio
160
13k
Typedesign – Prime Four
hannesfritz
36
2k
How GitHub (no longer) Works
holman
301
140k
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 実世界で働くロボットのためのビジョン・言語処理技術 • 東北大学講義資料 実世界における自然言語処理 - すべての人にロボットを • •