์๊ฐ || DDP๋ ๋ฌด์์ธ๊ฐ || ๋จ์ผ ๋ ธ๋ ๋ค์ค-GPU ํ์ต || ๊ฒฐํจ ๋ด์ฑ || ๋ค์ค ๋ ธ๋ ํ์ต || minGPT ํ์ต
์ ์: Suraj Subramanian ๋ฒ์ญ: ์กํธ์ค
์๋ ๋น๋์ค๋ฅผ ๋ณด๊ฑฐ๋ `YouTube <https://www.youtube.com/watch/-K3bZYHYHEA>`__์์๋ ๋ณด์ค ์ ์์ต๋๋ค.
์ด ๋น๋์ค ํํ ๋ฆฌ์ผ ์๋ฆฌ์ฆ๋ PyTorch์์ DDP(Distributed Data Parallel)๋ฅผ ์ฌ์ฉํ ๋ถ์ฐ ํ์ต์ ๋ํด ์๋ดํฉ๋๋ค.
์ด ์๋ฆฌ์ฆ๋ ๋จ์ํ ๋น๋ถ์ฐ ํ์ต ์์ ์์ ์์ํ์ฌ, ํด๋ฌ์คํฐ ๋ด ์ฌ๋ฌ ๊ธฐ๊ธฐ๋ค(multiple machines)์์ ํ์ต ์์ ์ ๋ฐฐํฌํ๋ ๊ฒ์ผ๋ก ๋ง๋ฌด๋ฆฌ๋ฉ๋๋ค. ์ด ๊ณผ์ ์์ `torchrun <https://pytorch.org/docs/stable/elastic/run.html>`__์ ์ฌ์ฉํ ๊ฒฐํจ ๋ด์ฑ(fault-tolerant) ๋ถ์ฐ ํ์ต์ ๋ํด์๋ ๋ฐฐ์ฐ๊ฒ ๋ ์์ ์ ๋๋ค.
์ด ํํ ๋ฆฌ์ผ์ PyTorch์์ ๋ชจ๋ธ ํ์ต์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ์ดํด๋ฅผ ์ ์ ๋ก ํ๊ณ ์์ต๋๋ค.
ํํ ๋ฆฌ์ผ ์ฝ๋๋ฅผ ์คํํ๋ ค๋ฉด ์ฌ๋ฌ ๊ฐ์ CUDA GPU๊ฐ ํ์ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฌ๋ฌ GPU๊ฐ ์๋ ํด๋ผ์ฐ๋ ์ธ์คํด์ค์์ ์ด๋ฅผ ์ํํ ์ ์์ผ๋ฉฐ, ํํ ๋ฆฌ์ผ์์๋ 4๊ฐ์ GPU๊ฐ ํ์ฌ๋ Amazon EC2 P3 ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํํ ๋ฆฌ์ผ ์ฝ๋๋ ์ด `GitHub ์ ์ฅ์ <https://github.com/pytorch/examples/tree/main/distributed/ddp-tutorial-series>`__์ ์ฌ๋ผ์ ์์ต๋๋ค. ์ ์ฅ์๋ฅผ ๋ณต์ ํ๊ณ ํจ๊ป ์งํํ์ธ์!
- ์๊ฐ (์ด ํ์ด์ง)
- DDP๋ ๋ฌด์์ธ๊ฐ? DDP๊ฐ ๋ด๋ถ์ ์ผ๋ก ์ํํ๋ ์์ ์ ๋ํด ๊ฐ๋จํ ์๊ฐ
- ๋จ์ผ ๋ ธ๋ ๋ฉํฐ-GPU ํ์ต ํ ๊ธฐ๊ธฐ์์ ์ฌ๋ฌ GPU๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ์ ํ์ตํ๋ ๋ฐฉ๋ฒ
- ๊ฒฐํจ ๋ด์ฑ ๋ถ์ฐ ํ์ต torchrun์ ์ฌ์ฉํ์ฌ ๋ถ์ฐ ํ์ต ์์ ์ ๊ฒฌ๊ณ ํ๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ
- ๋ค์ค ๋ ธ๋ ํ์ต ์ฌ๋ฌ ๊ธฐ๊ธฐ์์ ์ฌ๋ฌ GPU๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ์ ํ์ตํ๋ ๋ฐฉ๋ฒ
- DDP๋ฅผ ์ฌ์ฉํ GPT ๋ชจ๋ธ ํ์ต DDP๋ฅผ ์ฌ์ฉํ minGPT ๋ชจ๋ธ ํ์ต์ โ์ค์ ์์โ