第111回お試しアカウント付き並列プログラミング講習会「第1回 ディープラーニング分散学習ハッカソン」

分散学習基礎講座

Kazuhiro Yamasaki, Deep Learning Solution Architect, NVIDIA, 01/24/2019

AGENDA

Data ParallelismとModel Parallelism
分散学習特有の問題

2

DATA PARALLELISMとMODEL PARALLELISM
3

分散学習とは深層学習において必要な計算を、多数の計算機に分散させる
Data Parallelism
異なるデータで同じモデルを並行処理し、実行効率を上げる

モデルを分割し、1GPUに収まらない計算を実行可能にする

Model Parallelism

4DATA PARALLELISM
シングルGPUの場合
Forward

データ並列の場合
Forward

A
B
C
D
A
B
C
D

考え方

各デバイスにBackward
異なるデータを割り当て

UpdateBackward
UpdateForwardE
F
GHBackward
1iteration
5

DATA PARALLELISM
シングルGPUの場合
Forward

データ並列の場合
Forward

ABC
D
A
B
C
D

考え方

Backward

Update

計算した勾配を共有しモデル更新

Backward
UpdateForwardE
F
G
H

Backward
1iteration
6

DATA PARALLELISM
考え方

シングルGPUの場合
PreProc.

例: 200 iter.
F

B

U

F

B

F

例: 100 iter.

データ並列の場合
PreProc.

U

F

F

B

B

U
F

B

F

B

U

U
F

B

F

B

U

並列化によって総処理時間が短くなることを期待

B
time
7

DATA PARALLELISM

方式: 同期更新 vs. 非同期更新 & パラメータサーバ vs. p2p
ForwardBackward• 同期更新:全GPUの勾配計算完了を待って、モデルを更新• 非同期更新:
1つ以上の勾配計算が完了したら、ForwardBackward
その時点の情報でモデルを更新

Update• パラメータサーバ: 1つ以上のプロセスでモデルを管理、各GPUから勾配を受け取り更新• Peer-to-peer: GPU間で直接勾配情報を通信し、モデル更新
1iteration
8

DATA PARALLELISM

方式: 同期更新 vs. 非同期更新 & パラメータサーバ vs. p2p
同期更新のイメージ
ForwardBackward
UpdateForwardBackward

Wait

非同期更新のイメージ
Forward

ForwardBackward

Backward

UpdateUpdate9DATA PARALLELISM

方式: 同期更新 vs. 非同期更新 & パラメータサーバ vs. p2p

Peer-to-peerでのイメージ
パラメータサーバのイメージ(Large Scale Distributed Deep Networks より)
10

MODEL PARALLELISM
考え方

モデルの各部を別GPU上にロード

必要に応じてGPU間通信することで処理を継続

モデル並列のイメージ(Large Scale Distributed Deep Networks より)
11

MODEL PARALLELISM
どうモデルを分割するか

各レイヤーを別GPUに割り当て各GPUで各レイヤーの一部を担当

他、畳込みのチャネルを別GPUに割り当てなどなど……
12

分散学習特有の問題
13

各問題設定での課題
データ並列とモデル並列

Data Parallelism• 大規模化に伴う精度低下

Model Parallelism• 通信コストの増大• 非同期更新時の精度低下

14DATA PARALLELISMでの問題大規模化に伴う精度低下: large batch size problem
シングルGPUの例
AB
C
D
GPU0

Batchsize=4

データ並列の例
AB
CDE
F
GH

cde
f

GPU0

GPU1

GPU7

Batchsize=4x8=32

分散度が上がるほどトータルバッチサイズが増加
15

DATA PARALLELISMでの問題大規模化に伴う精度低下: large batch size problem• スケーラビリティと精度のトレードオフ•

ImageNet, ResNet50, 32バッチ/GPU(正確には同期更新の場合の話)

Better• バッチサイズ増: モデル精度が低下する•

バッチサイズ増 ≒ ノード数増•Facebook: 8Kバッチ(256GPU)まで精度維持•

PFN: 32Kバッチ(1024GPU)まで精度維持• 性能: 勾配交換の時間が増加する•

1024GPU: 2割以上が通信時間(*) Priya Goyal, et al., Facebook,“Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour”
16

DATA PARALLELISMでの問題大規模化に伴う精度低下: large batch size problem
ImageNet, ResNet50, 32バッチ/GPU• スケーラビリティと精度のトレードオフ•(正確には同期更新の場合の話)

Better• バッチサイズ増: モデル精度が低下する•バッチサイズ増 ≒ ノード数増•

Facebook: 8Kバッチ(256GPU)まで精度維持•PFN: 32Kバッチ(1024GPU)まで精度維持• 性能: 勾配交換の時間が増加する•

1024GPU: 2割以上が通信時間
17(*) www.preferred-networks.jp/docs/imagenet_in_15min.pdf

DATA PARALLELISMでの問題• 学習率を下げることと、バッチサイズを増やすことは、(SGD的に)等価• Noise scale:•ε:ラーニングレート•B:バッチサイズ

Better

大規模化に伴う精度低下: large batch size problem• 数十epoch経過後、学習率を下げる代わりに、バッチサイズを増やすことでも精度を保てる• 分散学習の計算ノードを追加、ということでも可能
Samuel L. Smith, et al., “Don’t Decay the Learning Rate, Increase the Batch Size”, 201718

DATA PARALLELISMでの問題
Staleness: 非同期に計算された勾配が古く、最新モデルが古い勾配で更新されてしまう

Better

非同期更新時の精度低下: staleness

Better

対策: ワーカー数を冗長に設定: N + b• N ワーカーから勾配が届いたら、残りの b ワー
カーを待たずに、モデル更新
Jianmin Chen at el., “Revisiting Distributed Synchronous SGD”, 2016

19

MODEL PARALLELISMでの問題
通信コストの増大

データ並列の場合
ForwardBackward
更新時に一度だけ通信

UpdateForwardBackward

Updateモデル並列の場合頻繁にデータ交換が発生

ForwardBackward

UpdateForwardBackward

Update20

MODEL PARALLELISMでの問題
通信コストの増大巨大モデルをレイヤーで分割して、別プロセッサに割り当てる• ミニバッチを分割・パイプライン化することで、プロセッサのアイドル時間を短縮する

Y. Huang, et. al., “Gpipe: Efficient Training of Giant Neural Networks using Pipeline Parallelism”

21

まとめ22

KEY TAKEAWAYS
分散学習のエッセンス

1. 分散学習にはdata parallelismとmodel parallelismがある
1. 組み合わせることもある

2. 分散させると、単一GPUで学習していたときとは異なる問題が生じる
1. 適切な対策を実施する必要あり

23