๐Ÿ‘ฉโ€๐ŸŽจ PyTorch

๊น€์ˆ˜์ง„ยท2025๋…„ 12์›” 31์ผ

์ตœ๊ทผ AI์™€ ๋”ฅ๋Ÿฌ๋‹์ด ๋น ๋ฅด๊ฒŒ ํ™•์‚ฐ๋˜๋ฉด์„œ ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ค‘์š”์„ฑ๋„ ํ•จ๊ป˜ ์ปค์ง€๊ณ  ์žˆ๋‹ค. ํŠนํžˆ ์ตœ๊ทผ์—๋Š” keras ๋‚˜ tensorflow์กฐํ•ฉ๋ณด๋‹จ PyTorch๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

PyTorch๋Š” ์™œ ๋งŽ์ด ์‚ฌ์šฉ๋ ๊นŒ

์ฒซ์งธ, ํŒŒ์ด์ฌ ๋ฌธ๋ฒ•.
PyTorch ์ฝ”๋“œ๋Š” ์ผ๋ฐ˜์ ์ธ ํŒŒ์ด์ฌ ์ฝ”๋“œ์™€ ๊ฑฐ์˜ ๋™์ผํ•œ ํ๋ฆ„์„ ๊ฐ€์ง„๋‹ค. ๋•๋ถ„์— ์ฝ”๋“œ๋ฅผ ์ฝ๊ณ  ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ์‰ฝ๊ณ , ๋””๋ฒ„๊น…๋„ ํŽธ๋ฆฌํ•˜๋‹ค.

๋‘˜์งธ, ์ฆ‰์‹œ ์‹คํ–‰(Eager Execution) ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋ฐ”๋กœ ์‹คํ–‰๋˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์…‹์งธ, GPU ์—ฐ์‚ฐ์„ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ณต์žกํ•œ ์„ค์ • ์—†์ด๋„ GPU๋ฅผ ํ™œ์šฉํ•ด ๋Œ€๊ทœ๋ชจ ๋ชจ๋ธ์„ ๋น ๋ฅด๊ฒŒ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด PyTorch์˜ ํ•ต์‹ฌ์ ์ธ ์ฐจ๋ณ„์ ์ด ๋ฌด์—‡์ผ๊นŒ

1. Tensor

PyTorch์—์„œ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ๊ฐœ๋…์€ Tensor๋‹ค.

Tensor๋Š” ์•Œ๋‹ค์‹œํ”ผ ์ˆซ์ž ๋ฐฐ์—ด์ด๋‹ค.

NumPy ๋ฐฐ์—ด๊ณผ ๋งค์šฐ ๋น„์Šทํ•˜์ง€๋งŒ,tensor๋Š” GPU์—์„œ ์—ฐ์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ๊ฐ€์žฅ ํฐ ์ฐจ์ด๋‹ค.

๋”ฅ๋Ÿฌ๋‹์—์„œ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ, ๊ฐ€์ค‘์น˜, ์ถœ๋ ฅ๊ฐ’์€
๋ชจ๋‘ Tensor ํ˜•ํƒœ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด tensor๊ฐ€ ๋ฌด์Šจ ์žฅ์ ์ด ์žˆ๊ธธ๋ž˜ pytorch๊ฐ€ tensor๋ฅผ ์“ฐ๋Š” ๊ฒƒ์ด ์ฐจ๋ณ„์ ์ด ๋˜๋Š”๊ฒƒ์ผ๊นŒ?

Tensor์˜ ์ง„์งœ ๊ฐ•์ ์€ ๋ฐ”๋กœ
๊ฐ™์€ ์ฝ”๋“œ๋กœ CPU์™€ GPU๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค.

๋•Œ๋ฌธ์—, ์ด๊ฒŒ PyTorch๊ฐ€ ์‹ค๋ฌด์™€ ์—ฐ๊ตฌ์—์„œ ๊ฐ•ํ•œ ์ด์œ ๋‹ค.

2. ์ž๋™ ๋ฏธ๋ถ„ (Autograd)

๋”ฅ๋Ÿฌ๋‹ ํ•™์Šต์˜ ํ•ต์‹ฌ์ด ์˜ˆ์ธก๊ฐ’๊ณผ ์ •๋‹ต์˜ ์ฐจ์ด๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ๊ทธ ์†์‹ค์ด ๋ชจ๋ธ์˜ ๊ฐ ํŒŒ๋ผ๋ฏธํ„ฐ์— ์–ผ๋งˆ๋‚˜ ์˜ํ–ฅ์„ ์ฃผ๋Š”์ง€์ด๋‹ค. ์ด๊ฑธ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์Šคํ„ฐ๋””์—์„œ ํ•ญ์ƒ ๊ฐ•์กฐํ–ˆ๋“ฏ์ด, ๋ฏธ๋ถ„ ๊ณ„์‚ฐ์ด ํ•„์š”ํ•˜๋‹ค.

PyTorch๋Š” ์ด ๊ณผ์ •์„ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค.
PyTorch๋Š” ๋ชจ๋“  ๋ฏธ๋ถ„์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๊ณ , Autograd๋ผ๋Š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด
๋ฏธ๋ถ„ ๊ณผ์ •์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค.

์ฆ‰, ๊ฐœ๋ฐœ์ž๋Š” ๋ชจ๋ธ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๊ณ  ์†์‹ค ํ•จ์ˆ˜๋งŒ ์ง€์ •ํ•˜๋ฉด
PyTorch๊ฐ€ ์—ญ์ „ํŒŒ(backpropagation)์— ํ•„์š”ํ•œ ๋ฏธ๋ถ„์„ ์ž๋™์œผ๋กœ ๊ณ„์‚ฐํ•œ๋‹ค.

์ด ๊ธฐ๋Šฅ ๋•๋ถ„์—
๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ ๊ตฌํ˜„์ด ํ›จ์”ฌ ๋‹จ์ˆœํ•ด์ง„๋‹ค.

3. Dataset๊ณผ DataLoader

๋”ฅ๋Ÿฌ๋‹์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค. ํŠนํžˆ ์ „์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋‹ค๋ณด๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š”๊ฒŒ ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์ฒด๊ฐํ•˜๊ฒŒ ๋œ๋‹ค.

Dataset์€ ๋ฐ์ดํ„ฐ์™€ ์ •๋‹ต(label)์„ ํ•˜๋‚˜๋กœ ๋ฌถ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

DataLoader๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋‹ˆ๋ฐฐ์น˜ ๋‹จ์œ„๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ณ , ์„ž๊ณ , ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค.

์ด ๋‘ ๊ตฌ์กฐ ๋•๋ถ„์—
๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์…‹๋„ ํšจ์œจ์ ์œผ๋กœ ํ•™์Šต์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

4. ์‹ ๊ฒฝ๋ง ๋ชจ๋ธ ์ •์˜

PyTorch์—์„œ๋Š” torch.nn ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•œ๋‹ค.

layer, ํ™œ์„ฑํ™” ํ•จ์ˆ˜, ์†์‹ค ํ•จ์ˆ˜ ๋“ฑ์ด ์ด๋ฏธ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด ๋”ฐ๋กœ ์ •์˜ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

tensorflow๋ž‘ ๋‹ค๋ฅธ๊ฒŒ ๋ญ”๋ฐ

์•ž์—์„œ pytorch์˜ ํŠน์ง•๋งŒ ๋ณด๋ฉด
โ€œTensorFlow๋„ ๋‹ค ๋˜๋Š” ๊ฑฐ ์•„๋‹Œ๊ฐ€โ€๋ผ๋Š” ์˜๋ฌธ์ด ๋“ ๋‹ค.
์‹ค์ œ๋กœ TensorFlow ์—ญ์‹œ Tensor, ์ž๋™ ๋ฏธ๋ถ„, Dataset ๊ตฌ์กฐ๋ฅผ ๋ชจ๋‘ ์ œ๊ณตํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ PyTorch์™€ TensorFlow์˜ ์ฐจ์ด๋Š”
๊ธฐ๋Šฅ์˜ ์œ ๋ฌด๊ฐ€ ์•„๋‹ˆ๋ผ, ์‚ฌ์šฉ ๋ฐฉ์‹์ด๋‹ค.

1. ์ฝ”๋“œ ์‹คํ–‰ ๋ฐฉ์‹์˜ ์ฐจ์ด

PyTorch๋Š” ์•ž์„œ ๋งํ–ˆ๋“ฏ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฆ‰์‹œ ์‹คํ–‰(Eager Execution) ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

์ฆ‰, ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๊ทธ ์ฆ‰์‹œ ์‹คํ–‰๋˜๊ณ  ๊ฒฐ๊ณผ์™€ ์˜ค๋ฅ˜๋ฅผ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์กฐ๊ธˆ ๋” ํŒŒ์ด์ฌ ์นœํ™”์ ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜๋ฉด TensorFlow๋Š” ์ „ํ†ต์ ์œผ๋กœ ๊ทธ๋ž˜ํ”„ ๊ธฐ๋ฐ˜ ์‹คํ–‰ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด ์™”๋‹ค.

๋จผ์ € ์ „์ฒด ๊ณ„์‚ฐ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๊ณ , ๊ทธ ๋‹ค์Œ์— ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

๊ทธ๋ž˜ํ”„ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ•ํ•˜๊ฒŒ ๋ฐ˜์˜ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ด ์ฐจ์ด๋กœ ์ธํ•ด PyTorch๋Š” ๋””๋ฒ„๊น…์ด ์‰ฝ๊ณ 
TensorFlow๋Š” ๊ตฌ์กฐ๋ฅผ ๋ช…ํ™•ํžˆ ์„ค๊ณ„ํ•ด์•ผ ํ•œ๋‹ค.

2. ์ž๋™ ๋ฏธ๋ถ„์„ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•

PyTorch์˜ ์ž๋™ ๋ฏธ๋ถ„์€ โ€œ์—ฐ์‚ฐ์„ ํ•˜๋ฉด ๋ฏธ๋ถ„์ด ๋”ฐ๋ผ์˜จ๋‹คโ€๋Š” ๋А๋‚Œ์— ๊ฐ€๊น๋‹ค.

์—ฐ์‚ฐ์„ ์ž‘์„ฑํ•˜๊ณ  backward()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ฏธ๋ถ„๊ฐ’์ด ๋ฐ”๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ์— ์ €์žฅ๋œ๋‹ค.

๊ฐœ๋ฐœ์ž๋Š” ๋ฏธ๋ถ„ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ฑฐ์˜ ์˜์‹ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

TensorFlow์˜ ์ž๋™ ๋ฏธ๋ถ„์€
GradientTape์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ์ž๋™๋ฏธ๋ถ„์„ ๊ด€๋ฆฌํ•œ๋‹ค.

๋‚ด๋ถ€ ๋™์ž‘์„ ๋” ๋ช…ํ™•ํžˆ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ
์ดˆ๋ณด์ž ์ž…์žฅ์—์„œ๋Š” ์ •์˜๋ฅผ ํ•ด์•ผ์ง€ ์“ธ ์ˆ˜ ์žˆ๋‹ค๋ผ๋Š” ์žฅ๋ฒฝ์ด์ƒ๊ธธ ์ˆ˜๋„ ์žˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ์ž๋™ ๋ฏธ๋ถ„์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์“ฐ๋Š” ๋А๋‚Œ์€ PyTorch์— ๋” ๊ฐ€๊น๋‹ค.

3. ๋ชจ๋ธ ์ •์˜ ๋ฐฉ์‹์˜ ์ฐจ์ด

PyTorch์—์„œ๋Š” ์‹ ๊ฒฝ๋ง ๋ชจ๋ธ์„ ์ผ๋ฐ˜์ ์ธ ํŒŒ์ด์ฌ ํด๋ž˜์Šค์ฒ˜๋Ÿผ ์ •์˜ํ•œ๋‹ค.

์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ, ๋™์  ๊ตฌ์กฐ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ ์—ฐ๊ตฌ์šฉ, ๋ชจ๋ธ ๊ตฌ์กฐ๊ฐ€ ์ž์ฃผ ๋ฐ”๋€Œ๋Š” ์‹คํ—˜, ๋…ผ๋ฌธ ๊ตฌํ˜„ ์— ๋งค์šฐ ์ ํ•ฉํ•˜๋‹ค. ์ด๊ฒƒ์ด ์š”์ฆ˜ pytorch๊ฐ€ ์ž์ฃผ ์“ฐ์ด๋Š” ์ด์œ ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€