Hugging Face๊ฐ Accelerate ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก PyTorch ํ๋ จ ์คํฌ๋ฆฝํธ์ 5์ค์ ์ฝ๋๋ง ์ถ๊ฐํด ๋ถ์ฐ ํ์ต ๋ฐ ํผํฉ ์ ๋ฐ๋ ์ง์
Introducing ๐ค Accelerate
AI ์์ฝ
Context
PyTorch์ ๊ณ ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๋ถ์ฐ ํ์ต๊ณผ ํผํฉ ์ ๋ฐ๋๋ฅผ ์ง์ํ์ง๋ง, ํ๋ จ ๋ฃจํ๋ฅผ ์ปค์คํฐ๋ง์ด์งํ๋ ค๋ฉด ์๋ก์ด API๋ฅผ ํ์ตํด์ผ ํ๋ค. PyTorch ์ฌ์ฉ์๋ค์ ํ๋ จ ๋ฃจํ์ ๋ํ ์์ ํ ์ ์ด๋ฅผ ์ํ๋ฉด์๋ ๋ถ์ฐ ํ์ต(๋ฉํฐ-GPU, TPU ๋ฑ)๊ณผ ํผํฉ ์ ๋ฐ๋ ํ๋ จ์ ํ์ํ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋ ์์ฑ ๋ฐ ์ ์ง๋ฅผ ๊บผ๋ฆฐ๋ค.
Technical Solution
- ํ์ค PyTorch ํ๋ จ ์คํฌ๋ฆฝํธ์ Accelerator ๊ฐ์ฒด ์ด๊ธฐํ ์ถ๊ฐ: ํ๊ฒฝ ๋ถ์์ ํตํด ๋ถ์ฐ ํ์ต ์ ํ์ ์๋ ๊ฐ์งํ๊ณ ํ์ํ ์ด๊ธฐํ ์ํ
- accelerator.prepare() ํธ์ถ๋ก ๋ชจ๋ธยท์ตํฐ๋ง์ด์ ยท๋ฐ์ดํฐ๋ก๋ ์ค๋น: DistributedDataParallel ๋ํ, ์ ์ ํ ๋๋ฐ์ด์ค ๋ฐฐ์น, ํผํฉ ์ ๋ฐ๋ ์ฒ๋ฆฌ๋ฅผ ์๋ ์ฒ๋ฆฌ
- loss.backward() ๋์ accelerator.backward(loss) ์ฌ์ฉ: ํผํฉ ์ ๋ฐ๋ ํ์ต์ ํ์ํ ์ค์ผ์ผ๋ง ์์ ์ ์๋์ผ๋ก ์ํ
- accelerator.gather()๋ก ํ๋ก์ธ์ค ๊ฐ ํ ์ ์์ง: ๋ถ์ฐ ํ๊ฐ ์ ์์ธก๊ฐ๊ณผ ๋ ์ด๋ธ์ ํตํฉ
- CLI ๊ธฐ๋ฐ ๋ฐ์ฒ(accelerate launch) ์ ๊ณต: ๊ธฐ๊ธฐ ์ค์ ์ questionnaire๋ก ์ ์ฅํ๊ณ ๋์ผํ ๋ช ๋ น์ด๋ก ๋ค์ํ ํ๊ฒฝ(๋จ์ผ GPU, ๋ฉํฐ-GPU, TPU ๋ฑ)์์ ์คํฌ๋ฆฝํธ ์คํ
Key Takeaway
ํ๋ จ ๋ฃจํ ์ ์ด๊ถ์ ์ ์งํ๋ฉด์ ๋ถ์ฐ ํ์ต ๋ณต์ก์ฑ์ ์ถ์ํํ๋ ์ต์ํ์ API ๋ณ๊ฒฝ๋ง์ผ๋ก ํ๊ฒฝ๋ณ ํธํ์ฑ์ ํ๋ณดํ ์ ์๋ค๋ ์ค๊ณ ์์น.
์ค์ฒ ํฌ์ธํธ
PyTorch๋ก ์ปค์คํ ํ๋ จ ๋ฃจํ๋ฅผ ์์ฑํ๋ ์์ง๋์ด๋ Accelerate ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ 5์ค ์ฝ๋ ์ถ๊ฐ(Accelerator ์ด๊ธฐํ, prepare ํธ์ถ, backward ๋ฉ์๋ ๋ณ๊ฒฝ)๋ง์ผ๋ก ๊ธฐ์กด ์ฝ๋๋ฅผ ์์ ํ์ง ์๊ณ ๋จ์ผ GPU, ๋ฉํฐ-GPU, TPU, ํผํฉ ์ ๋ฐ๋ ํ๊ฒฝ์ ๋ชจ๋ ์ง์ํ ์ ์๋ค.