ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
Introducing ๐Ÿค— Accelerate
Hugging Face BlogHugging Face Blog
Backend

Hugging Face๊ฐ€ Accelerate ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ PyTorch ํ›ˆ๋ จ ์Šคํฌ๋ฆฝํŠธ์— 5์ค„์˜ ์ฝ”๋“œ๋งŒ ์ถ”๊ฐ€ํ•ด ๋ถ„์‚ฐ ํ•™์Šต ๋ฐ ํ˜ผํ•ฉ ์ •๋ฐ€๋„ ์ง€์›

Introducing ๐Ÿค— Accelerate

2021๋…„ 4์›” 16์ผ8๋ถ„intermediate

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, ํ˜ผํ•ฉ ์ •๋ฐ€๋„ ํ™˜๊ฒฝ์„ ๋ชจ๋‘ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋‹ค.

์›๋ฌธ ์ฝ๊ธฐ