Slide 1

Slide 1 text

Repro Tech Talk #7 2019/4/4 Preferred Networks, Inc. Kota Uenishi A Few Ways to Accelerate Deep Learning

Slide 2

Slide 2 text

誰? Kota UENISHI @kuenishi • github.com • twitter.com • etc… 分散深層学習をやっています 25分しかないのでめっちゃ急ぎます

Slide 3

Slide 3 text

なぜ深層学習を速くするのか?

Slide 4

Slide 4 text

PFNは最新の研究や技術を最も早く実用化する お片付けロボット @画像認識、音声指示 お片付けロボットアーム @画像認識、音声指示 協調自動運転 @画像認識、強化学習 自動運転 @画像認識、強化学習

Slide 5

Slide 5 text

機械学習(深層学習)の開発サイクル タスク(ビジネス仮 説)を定義する よいモデルを 開発する モデルをアプリに埋 め込む アプリでビジネスを する 学習データを 集める 深層ネットワークを 定義する 学習実験をしてモ デルを作る テストデータで精度 を確認する モデルで推論する アプリをつくる アプリ開発 データを集める データを分析する 仮説 / 課題を明ら かにする 解決方法を考える システム開発、 運用の設計

Slide 6

Slide 6 text

試行錯誤のボトルネックは学習 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

Slide 7

Slide 7 text

強いモデルを作るために • よいデータで学習すること • よいネットワークであること • よいレシピで学習すること • よいハイパーパラメータが与えられること • 何度も繰り返し試行錯誤すること

Slide 8

Slide 8 text

1GPUで速くする

Slide 9

Slide 9 text

深層学習 ≒ DNNをSGDでデータに対して最適化する この手順を好きなだけ繰り返す 1. データをシャッフルしてミニバッチに分割する 2. 分割したミニバッチごとに、モデルに対してまとめて a. 前向き計算をして推論結果を出す b. 推論結果と正解データのズレ(距離)を計算 c. ズレをもとに後ろ向き計算(backpropをする) d. 後ろ向き計算で得られた勾配の平均を計算 e. 勾配をモデルのパラメータに反映

Slide 10

Slide 10 text

データをシャッフルしてミニバッチに分割する Shuffle Minibatch MNIST ● トータルのデータ数は 6万 ● 典型的にはバッチサイズ 10~100 CIFAR10 ● トータルのデータ数は 6万 ● 典型的にはバッチサイズは 64 ImageNet-1k ● トータルのデータ数は 158万枚 ● 典型的にはバッチサイズ 32

Slide 11

Slide 11 text

ミニバッチ毎に学習 Forward Backward Optimize 推論 [fish, dog, …] 正解 [cat, dog, …] loss [1.0, 0.0, …] update param grad Forward バッチサイズを単純に大きくすると GPU内の並列 度は上がるが、学習効率は落ちる

Slide 12

Slide 12 text

1GPUで速くする Forward Backward Optimize OpenCV DALI ChainerX chainer-compiler CuPy Kernel Fusion TensorCore (125TFLOPS) cProfile, nvprof 必見 Chainer/ChainerMNのCPUリソース不足 による速度低下と解決法 Chainer/ChainerMNのおすすめなプロ ファイルの取り方&プロファイルの見方 の注意点

Slide 13

Slide 13 text

並列処理で速くする

Slide 14

Slide 14 text

並列処理で速くする@2017 Akiba et al., 2017 https://arxiv.org/abs/1711.04325

Slide 15

Slide 15 text

並列処理で速くする@2019 Mikami et al., https://arxiv.org/abs/1811.05233

Slide 16

Slide 16 text

ChainerMNによる分散学習 All-Reduce Forward Forward Forward Backward Backward Backward Optimize Optimize Optimize

Slide 17

Slide 17 text

並列化して速くなる、は自明か? • 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]

Slide 18

Slide 18 text

並列化するテクニックが上手くいく場合がある Linear Scaling Rule: • バッチサイズを k 倍にしたいときは は学習率も k 倍すればよい バッチサイズが大きくなるとSharp minimaに陥ってぬけにくくなるので、そ の分だけ学習率を大きくすればよい ※他にもさまざまなテクニックがある Goyal et al., “Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour”, arXiv:1706.02677 [cs.CV]

Slide 19

Slide 19 text

All-Reduceを速くする All-Reduce Forward Forward Forward Backward Backward Backward Optimize Optimize Optimize + + →

Slide 20

Slide 20 text

All-Reduceを速くする ● All-Reduceが速ければ速いほどス ケールアウトすることができる ● NCCL: NVIDIAが提供している高速 な集団通信ライブラリ ● RDMA: リモートのGPUメモリに直接 データを読み書きする ● Ring All-Reduce: 帯域をフル利用 できるアルゴリズム Akiba et al., 2017 https://arxiv.org/abs/1711.04325

Slide 21

Slide 21 text

ハードウェアで速くする

Slide 22

Slide 22 text

スパコンその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

Slide 23

Slide 23 text

スパコンその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

Slide 24

Slide 24 text

スパコンその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

Slide 25

Slide 25 text

• MN-2と同じ場所に設置 • Powered by MN-Core – 深層学習に特化した自社設計チップ – ピーク性能 524TFLOPS @半精度 – 消費電力 500W スパコンその4: MN-3 x4

Slide 26

Slide 26 text

MN-3完成イメージ

Slide 27

Slide 27 text

We’re hiring! intern/fulltime

Slide 28

Slide 28 text

Questions?

Slide 29

Slide 29 text

まずは始めよう $ pip install chainer cupy-cuda100 mpi4py

Slide 30

Slide 30 text

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 実世界で働くロボットのためのビジョン・言語処理技術 • 東北大学講義資料 実世界における自然言語処理 - すべての人にロボットを • •