Distributed Learning - leemik3/tensorflow-2.0 GitHub Wiki
๋ฅ๋ฌ๋ ๋ถ์ฐ ์ฒ๋ฆฌ [์์ ๋ถํ ๋ฐฉ์์ ๋ฐ๋ผ]
-
Data Parallelism ๏ฎ ๊ฐ ๋ฐ์ดํฐ๋ค์ ๋ํ ๋ชจ๋ธ์ gradient (transfer ์ด๋ฃจ์ด์ง) ํ๊ท ์ ํตํด (Parameter Server, AllReduce๋ฅผ ํตํด) ๋ชจ๋ธ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฐ์ดํธํ๋ค. ๏ฎ GPU memory limitation : ์๋ง๋ ๋ชจ๋ธ ์์ฒด๋ ๊ทธ๋๋ก์ด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ธ ๋ด ์ฐ์ฐ์ด ๋ง์์ ๏ฎ ๊ฐ Worker : ๋ค๋ฅธ ๋ฐ์ดํฐ, ๊ฐ์ ๋ชจ๋ธ ๏ฎ ๋ ผ๋ฌธ :
-
Model Parallelism ๏ฎ partial activation ์ ๋ค์ layer, ๋ค์ worker์ ์ ๋ฌ ๏ฎ GPU memory๋ ๊ด์ฐฎ: ๋ชจ๋ธ์ด ๋๋ ์ง๊ธฐ ๋๋ฌธ์ ๊ฐ ๋ชจ๋ธ ๋ด ์ฐ์ฐ์ด ์ค์ด๋ค๊ฒ ๋๋๊น ๏ฎ GPU utilization low : ๋ชจ๋ธ ๋ด ์ฐ์ฐ์ด ์ค์ด๋๋๊น ๊ทธ๋ ๊ฒ ๋ง์ด ํ์ฉํ์ง ์๋๋ค๋ ๋ป? + bubble time ์ฒ๋ผ ๋ค๋ฅธ gpu ์ฐ์ฐ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ.. ๏ฎ ๊ฐ worker : ๊ฐ์ ๋ฐ์ดํฐ, ๋ค๋ฅธ ๋ชจ๋ธ ๏ฎ ๋ ผ๋ฌธ โ Multi-GPU training of ConvNets : ํํฐ๋ค์ด ์ฌ๋ฌ ์ปดํจํ ๋ ธ๋์ ๋ถ์ฐ๋์ด ๋์์ convolution ์ฐ์ฐ์ ์ํํ ์ ์๋ค. โก DistBelief : ๋ฒ์ฉ ์ปดํจํ ํ๊ฒฝ
-
Hybrid Parallelism ๏ฎ Data Parallelism + Model Parallelism ๏ฎ ๋ ผ๋ฌธ : Large scale distributed deep networks
[๋ฒ์ธ]
- Pipelining ๏ฎ data parallelism ๏ฎ model parallelism : ์ธต ๋จ์๋ก ๋ชจ๋ธ์ ๋ถ์ฐํ๋ ๋ชจ๋ธ ๋ณ๋ ฌํ์ ์ผ์ข (๊ณ์ธต๋ณ model parallelism ์ด๋ ๊ฐ?) โ Performance analysis of a pipelined backpropagation parallel algorithm : DNN ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ๊ฐ ๋ถ์ฐ๋์ด ๋ฉ๋ชจ๋ฆฌ๊ฐ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ๋๊ท๋ชจ DNN ํ์ต์ ์ ํฉํ๋ค. ๊ทธ๋ฌ๋, ์ด๋ค ์ปดํจํ ๋ ธ๋์ backward pass์ ์ํด์ ์ค๋ฅ๊ฐ ์ญ์ ํ๋์์ ๋, ๊ทธ ์ปดํจํ ๋ ธ๋์ forward pass ๊ฐ๊ณผ weight๋ ์ด๋ฏธ ๋ค๋ฅธ mini-batch์ ์ํด์ ๋ณ๊ฒฝ๋์๊ธฐ ๋๋ฌธ์ ์๋ชป๋ forward pass ๊ฐ๊ณผ weight๋ฅผ ์ฌ์ฉํ๋ delayed gradient ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
โก Decoupled parallel backpropagation using delayed gradient (DDG) : forward pass๋ ์์ฐจ๋ก ์งํํ๊ณ , backward pass ๋ง pipeline ์ผ๋ก ๋ณ๋ ฌํ โข Features replay : loss (์ ํํ gradient โ delayed gradient) ํจ์ ์ ์. ๊ฐฑ์ ๋ forward pass ๊ฐ์ด ์๋ ๊ฐฑ์ ๋๊ธฐ ์ delayed forward pass ๊ฐ์ ์ฌ์ฉํจ โฃ Decoupled Neural Interface (DNI) : ํ์ฌ ์ธต์ forward pass๊ฐ๋ง์ผ๋ก ๊ทผ์ฌ gradient ๋ฅผ ๊ตฌํ๊ณ , ์ค์ gradient ์์ ์ฐจ์ด๊ฐ ์ ์ด์ง๋๋ก RNN ์ ์ ์ฉํ์์ผ๋, ๊ทผ์ฌ gradient ๋ก ์ธํ ์ฑ๋ฅ ํ๊ณ๊ฐ ์๋ค. โค SpecTrain : momentum์ ์ด์ฉํ์ฌ ๋ฏธ๋์ weight ๊ฐ์ ์ถ์ ํ๊ณ , ์ด๋ฅผ forward pass์์ ์ฌ์ฉํจ์ผ๋ก์จ backward pass์์ delayed gradient ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํ๋ค. ๊ทธ๋ฌ๋ ์ปดํจํ ๋ ธ๋ ๊ฐ์๊ฐ ๋์ด๋ ์๋ก ๋ฏธ๋ weight๊ฐ ๋ถ์ ํํด์ง ์ ์๋ค. โฅ GPipe : mini-batch๋ฅผ ์ธ๋ถํ micro-batch ์์ค์์ forward pass๋ฅผ ๋ชจ๋ pipeline์ผ๋ก ์ํํ ํ, backward pass๋ฅผ pipeline์ผ๋ก ์ํํจ์ผ๋ก์จ delayed gradient ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ , ๊ธฐ์กด์ Sgd ์ ๋์ผํ ์ํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋๋ก ํ์๋ค. ๊ทธ๋ฌ๋ forwardpass๊ฐ ๋ชจ๋ ๋๋ ํ์ backwardpass๊ฐ ์์๋๊ธฐ ๋๋ฌธ์ mini-batch ์ ํฌ๊ธฐ์ ์ปดํจํ ๋ ธ๋ ์์ ๋ฐ๋ผ ๋ณ๋ ฌํ ํจ์จ์ฑ์ด ์ ํ๋ ์ ์๋ค. โฆ Analysis of parallel training algorithms for deep neural networks + PipeDream:generalized~ : delayed gradient ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ์ง์ฐ ๋ฐ์ ํ์๋งํผ ๋ชจ๋ธ ์ฌ๋ณธ์ ์ ์งํด์ ํด๋น back ward pass์ ๋์๋๋ forward pass ๋ ์ฌ์ฉํ๋ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐฑ์ ํ๋๋ก ํ๋ค. ์ด ๊ฒฝ์ฐ ์ปดํจํ ๋ ธ๋์๋ ์ฌ๋ฌ ์๊ฐ๋์ ๋ชจ๋ธ์ด ์กด์ฌํ๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ชจ๋ธ ๋ณ๋ ฌํ๋ฅผ ํ์์ง๋ง ๋ฐ์ดํฐ ๋ณ๋ ฌํ๊ฐ ๋ ๊ฒฝ์ฐ๋ผ์ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ ๋๊ธฐํ๊ฐ ํ์ํ๋ค. ์ด ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ ๋๊ธฐํ์ ๊ฒฝ์ฐ : synchronous sgd๋ ์ปดํจํ ๋ ธ๋ ๊ฐ ํต์ ์ด ํ์ํ์ง๋ง pipelined sgd๋ ๋๊ธฐํํ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ๊ฐ ๋์ผํ ์ปดํจํ ๋ ธ๋์ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ํต์ ์ ํ์ํ์ง ์๋ค.
[Parameter ๋๊ธฐํ ๋ฐฉ์์ ๋ฐ๋ผ]
- Synchronous replication (synchronous SGD) ๏ฎ ์ผ์ ์์ ์์ ๋ถ์ฐ์ฒ๋ฆฌ๊ฐ ๋๋ ๋ชจ๋ ์ปดํจํ ๋ ธ๋๋ค์ gradient ํ๊ท ์ผ๋ก ํ๋ผ๋ฏธํฐ ์ ๋ฐ์ดํธ ๏ฎ ์๋ ด์ด ๋น ๋ฅด๋ค. ๏ฎ ๋ ผ๋ฌธ ๏ต Data Parallelism โ SimuParallelSGD : ๊ฐ ์ปดํจํ ๋ ธ๋๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก sgd ์ํํ๊ณ ๋ง์ง๋ง ํ๋ฒ๋ง์ ๋ง์คํฐ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ ์์ฑ โก Bulk-Synchronous Parallel (BSP) : ํ minibatch ๋ง๋ค ๊ฐ ์ปดํจํ ๋ ธ๋์ gradient ํ๊ท ๋ด์ด ๋ง์คํฐ๋ชจ๋ธ ๊ฐฑ์ โข Experiments on parallel training of deep neural network using model averaging : x๊ฐ์ minibatch ๋ง๋ค ๊ฐ ์ปดํจํ ๋ ธ๋์ gradient ํ๊ท ๋ด์ด ๋ง์คํฐ๋ชจ๋ธ ๊ฐฑ์ โฃ Elastic averaging (EASGD) : ๊ฐ ์ง์ญ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ๊ฐ ๊ฐ๋ณ์ ์ผ๋ก ์ ์ง๋์ง๋ง ๋ง์คํฐ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ๋ก๋ถํฐ ๋ฉ์ด์ง ์ ์๋ ์ ๋๊ฐ ์ ์ด๋๋ค. โค Block-wise Model-Update Filtering (BMUF) : ๋ชจ๋ฉํ ๊ฐ๋ ์ถ๊ฐ? ์ด์ ๋ง์คํฐ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ์ ํ์ฌ ์ง์ญ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ ํ๊ท ์ ์ฐจ์ด๋ฅผ ๋ง์คํฐ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ ๋ณํ๋์ผ๋ก ๊ฐ์ฃผํ๊ณ ๋ชจ๋ฉํ ์ ์ถ๊ฐํ์ฌ ๋ง์คํฐ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ ๊ฐฑ์ โฅ Sandblaster L-BFGS : ๊ฐ ์ปดํจํ ๋ ธ๋์์ ์ ์ก๋ฐ์ gradient ๋ฅผ ์ฌ์ฉํ์ฌ limited memory Broyden Fletcher Goldfarb Shanno ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ถ์ฐ๋์ด ์๋ ๋ง์คํฐ ๋ชจ๋ธ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐฑ์ ํ๋ค. (๊ฐ ์ปดํจํ ๋ ธ๋์ gradient๋ฅผ ํฉํ๋ ๋ฐฉ์์ด ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ๋ค๋ ๊ฒ?) โฆ Sync-SGD : k๊ฐ์ ์ปดํจํ ๋ ธ๋์์ gradient ๊ณ์ฐ์ด ๋๋๋ฉด ๋๋จธ์ง ์ปดํจํ ๋ ธ๋๋ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋๊ธฐํ ์งํ (๊ทผ๋ฐ ์ด๊ฑฐ๋ asynchronous ์๋๊ฐ?)
๏ต Model Parallelism โ S
- Stale Synchronous / Bounded Aynchronous replication (stale-synchronous SGD) ๏ฎ
- Asynchronous replication (Asynchronous SGD) ๏ฎ ๋ถ์ฐ์ฒ๋ฆฌ๊ฐ ๋๋์ง ์์๋ gradient ๊ณ์ฐ์ด ๋จผ์ ๋๋ ๊ฑด ๋จผ์ ํ๋ผ๋ฏธํฐ ์ ๋ฐ์ดํธ. ๋๊ธฐํ ๋น์ฉ์ด ์ ๊ณ , ๋๋ฆฌ๊ฑฐ๋ ๊ณ ์ฅ๋ ์ปดํจํ ๋ ธ๋๋ฅผ ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ฆฌ ์ฌ์ฉ๋จ ๏ฎ worker๊ฐ ๋ง์ ์๋ก synchronous ๋ณด๋ค๋ ํจ์จ์ ๏ฎ ๋จผ์ ๋์ฐฉํ gradeint -> ๋ง์คํฐ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ์ ๊ฐฑ์ . ๋ฆ๊ฒ ๋์ฐฉํ gradient ๋ ๊ฐฑ์ ๋๊ธฐ ์ด์ ์ ๋ง์คํฐ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ๋ค์ ํตํด์ ๊ณ์ฐ๋์์ผ๋ฏ๋ก ์ง๊ธ ํ์ฌ ๊ฐฑ์ ๋ ์ํ์ ๋ง์คํฐ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ์ ๊ฐฑ์ ํ๋ ค๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ด๋ฌํ ๋ฆ๊ฒ ๋์ฐฉํ gradient ๋ฅผ stale gradient ๋ผ๊ณ ํ๊ณ , ์ฌ๊ธฐ์ ์ฌ์ฉ๋์๋ stale weight(๊ฐฑ์ ๋๊ธฐ ์ด์ ์ ๋ง์คํฐ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ) ๏ฎ ์๋ ด์ด ๋๋ฆด ์ ์๋ค. ๏ฎ ๋ ผ๋ฌธ ๏ต Data Parallelism โ Hogwild โก HogBatch : mini-batch โข AsySVRG : SGD์ ๋ถ์ฐ์ ์ค์ฌ์ ํ์ต ์๋๋ฅผ ํฅ์์ํด โฃ Downpour SGD : ๋ง์คํฐ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ๊ฐ ์ฌ๋ฌ ๋์ ํ๋ผ๋ฏธํฐ ์๋ฒ์ ๋๋์ด ์ ์ฅ๋จ (์๋ ํ ๋์ ํ๋ผ๋ฏธํฐ ์๋ฒ๋ณด๋ค ๋ณ๋ ฌํ ํจ๊ณผ๊ฐ ๋์์ง ์ ์๋ค). + DistBelief๋ฅผ ํ์ฉํ๊ธฐ ๋๋ฌธ์ ํ๋์ ์ปดํจํ ๋ ธ๋๊ฐ ์ค์ ๋ก๋ ์ฌ๋ฌ๊ฐ์ cpu ๋ ธ๋๋ก ์ด๋ฃจ์ด์ง ์ ์์ (large scale distributed deep networks). stale weight ์ด์ธ์ ์ผ๊ด์ฑ์ด ์๋ ๋ง์คํฐ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ๊ฐ ์์ฑ๋๋ ๋ฌธ์ ๊ฐ ์ถ๊ฐ์ ์ผ๋ก ๋ฐ์ํ ์ ์๋ค. โค Asynchronous decentralized parallelized SGD (AD-PSGD) : ๋ง์คํฐ ๋ชจ๋ธ์ ๊ด๋ฆฌํ๋ ํ๋์ ํ๋ผ๋ฏธํฐ ์๋ฒ๊ฐ ์์ง ์๊ณ , ์ปดํจํ ๋ ธ๋๊ฐ ๊ทธ๋ํ ๊ตฌ์กฐ๋ก ์ฐ๊ฒฐ๋์ด์๋ค. ๊ฐ ์ปดํจํ ๋ ธ๋๋ ๋ฌด์์๋ก ์ ํ๋ ์ธ์ ์ปดํจํ ๋ ธ๋์ ์ง์ญ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ์ ์กฐํฉํ์ฌ ํ๋ผ๋ฏธํฐ๋ฅผ ๋๊ธฐํํ๋ค. ์ด๋ก์จ ์ฌ๋ฌ ๋์ ์ปดํจํ ๋ ธ๋๊ฐ ํ๋์ ํ๋ผ๋ฏธํฐ ์๋ฒ์ โ๋์์โ ํต์ ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ํต์ ๋ณ๋ชฉ ํ์์ด ๊ฐ์๋๋ค. ํ์ต์ด ์ข ๋ฃ๋๋ฉด ๋ชจ๋ ์ปดํจํ ๋ ธ๋์ ์ง์ญ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ๋ฅผ ํ๊ท ํด์ ๋ง์คํฐ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ตฌํ๋ค. โฅ Asynchrony begets momuntum, with an application to deep learning : stale weight ๊ด๋ จ โ ๊ฐฑ์ ๋๊ธฐ ์ด์ ์ ๊ณผ๊ฑฐ ๋ง์คํฐ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ๋ก ์ ๋๋ gradient๋ฅผ ์ผ์ข ์ momentum ์ผ๋ก ๊ฐ์ฃผํ๊ณ , momentum ๊ฐ์ค์น๋ฅผ ์ต์ ํ โฆ Asynchronous stochastic gradient descent with delay compensation : stale weight ๊ด๋ จ โ taylor expansion ์ ํตํด stale gradient ๊ฐ์ ๋ณด์ ํด์ ํ์ฌ ๋ง์คํฐ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ์ gradient ๊ฐ์ ์์ธกํจ โง Efficient and robust parallel ~ : ๋ฏธ๋ gradient ์์ธก์ธ ๋ฏ?
๏ต Model Parallelism โ S
-
Hybrid-Synchronous SGD ๏ฎ ๋ ผ๋ฌธ ๏ต Revisiting distributed synchronous SGD : synchrnous ์ asynchronous ๋ฐฉ์์ ๋จ์ ์ ์๊ฐํ๋๋ด ๏ต
-
(Model Averaging) : ๋ ผ๋ฌธ : deep learning with elastic averaging SGD? EWMA?
-
(Ensemble Learning)
[Gradient ์ทจํฉ ๋ฐฉ์์ ๋ฐ๋ผ]
- All-Reduce (Parameter Server) ๏ฎ parameter server๊ฐ ๋ชจ๋ gradient ๋ฅผ ์ทจํฉํ์ฌ worker ๋ค์๊ฒ ์ฌ๋ถ๋ฐฐ ๏ฎ worker ์๊ฐ ๋ง์ผ๋ฉด parameter server์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๋ฐ ๋คํธ์ํฌ ๋ถํ ์ฆ๊ฐ
- Ring-AllReduce ๏ฎ ๋ชจ๋ gpu๋ฅผ ring ํํ๋ก ๊ตฌ์ฑํ ๋ค, gradient ์ ๋ฌ์ ํตํด ๊ณต์ ๏ฎ ์ ์ดํด ์ ๋จ. ๋ ผ๋ฌธ?
Training Agent, Computing Node, Server, Worker