๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Project ESG+AI/Tech Basics

43์ผ์ฐจ. IT ๊ฐœ๋… ์ •๋ฆฌ

by GreenJin_S2 2025. 12. 11.

 

ํŒŒ์ดํ† ์น˜(PyTorch)์™€ ํ…์„œํ”Œ๋กœ์šฐ(TensorFlow)์˜ ์ฐจ์ด์ 

๋‘˜ ๋‹ค ๋”ฅ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ์ด์ง€๋งŒ, ์ฒ ํ•™๊ณผ ์‚ฌ์šฉ์„ฑ์—์„œ ๋šœ๋ ทํ•œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ” ํ•ต์‹ฌ ์š”์•ฝ

  • ํŒŒ์ดํ† ์น˜: ์ง๊ด€์ , ํŒŒ์ด์ฌ์Šค๋Ÿฝ๊ณ  ์—ฐ๊ตฌ์šฉ·ํ”„๋กœํ† ํƒ€์ดํ•‘์— ๊ฐ•ํ•จ
  • ํ…์„œํ”Œ๋กœ์šฐ: ์‚ฐ์—… ๋ฐฐํฌ·๋Œ€๊ทœ๋ชจ ์„œ๋น„์Šค์— ๊ฐ•ํ•จ

๐Ÿ“Œ ํŒŒ์ดํ† ์น˜ vs ํ…์„œํ”Œ๋กœ์šฐ ์ƒ์„ธ ๋น„๊ต

๊ตฌ๋ถ„ํŒŒ์ดํ† ์น˜(PyTorch)ํ…์„œํ”Œ๋กœ์šฐ(TensorFlow)
๊ฐœ๋ฐœ์‚ฌ Meta(๊ตฌ Facebook) Google
๊ณ„์‚ฐ ๋ฐฉ์‹ ๋™์  ๊ทธ๋ž˜ํ”„(eager execution) ๊ธฐ๋ณธ ์ดˆ๊ธฐ์—” ์ •์  ๊ทธ๋ž˜ํ”„ → ํ˜„์žฌ๋Š” eager + graph ๋ณ‘ํ–‰
์‚ฌ์šฉ ๋‚œ์ด๋„ ํŒŒ์ด์ฌ ์ฝ”๋“œ์™€ ์œ ์‚ฌํ•ด ์ง๊ด€์  ๊ธฐ๋Šฅ ๋งŽ๊ณ  ๊ตฌ์กฐ ๋ณต์žกํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ์–ด๋ ค์›€
์—ฐ๊ตฌ/ํ•™๊ณ„ ํ™œ์šฉ ๋งค์šฐ ๋†’์Œ (๋…ผ๋ฌธ ๋Œ€๋ถ€๋ถ„ ํŒŒ์ดํ† ์น˜ ๊ธฐ๋ฐ˜) ์˜ˆ์ „๋ณด๋‹ค ๊ฐ์†Œ
์‚ฐ์—…/์„œ๋น„์Šค ๋ฐฐํฌ TorchServe ๋“ฑ ์ง€์›ํ•˜์ง€๋งŒ ์ƒ๋Œ€์ ์œผ๋กœ ์•ฝํ•จ TF Serving, TF Lite, TF.js, TPU ์ง€์› ๋“ฑ ์‚ฐ์—… ์ตœ์ ํ™”
GPU ์ง€์› CUDA ์—ฐ๋™ ๊ฐ„ํŽธ CUDA + XLA + TPU ๋“ฑ ๋‹ค์–‘ํ•œ ํ•˜๋“œ์›จ์–ด ์ตœ์ ํ™”

๐Ÿง  ๋™์  ๊ทธ๋ž˜ํ”„ vs ์ •์  ๊ทธ๋ž˜ํ”„ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

๐Ÿ”ธ ํŒŒ์ดํ† ์น˜ = ๋™์  ๊ทธ๋ž˜ํ”„

์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ๊ทธ๋ž˜ํ”„๊ฐ€ ์ฆ‰์„์—์„œ ์ƒ์„ฑ๋จ.
→ ํŒŒ์ด์ฌ ๋””๋ฒ„๊น…์ฒ˜๋Ÿผ ํ•œ ์ค„์”ฉ ๋ณด๋ฉด์„œ ์ˆ˜์ • ๊ฐ€๋Šฅ
→ ์—ฐ๊ตฌ·์‹คํ—˜ ์†๋„๊ฐ€ ๋น ๋ฆ„

๐Ÿ”ธ ํ…์„œํ”Œ๋กœ์šฐ = (๊ณผ๊ฑฐ) ์ •์  ๊ทธ๋ž˜ํ”„ ์ค‘์‹ฌ

๊ทธ๋ž˜ํ”„๋ฅผ ๋จผ์ € ์ •์˜ํ•˜๊ณ  ๋‚˜์ค‘์— ์‹คํ–‰
→ ์ตœ์ ํ™”·๋ฐฐํฌ์— ์œ ๋ฆฌ
→ ํ˜„์žฌ๋Š” eager ์‹คํ–‰๋„ ๊ธฐ๋ณธ ์ ์šฉ๋˜์–ด ๋งŽ์ด ์œ ์—ฐํ•ด์ง


๐Ÿงฉ CUDA ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ์˜ ํŒŒ์ดํ† ์น˜์™€ ํ…์„œํ”Œ๋กœ์šฐ ์—ญํ• 

๋‘˜ ๋‹ค CUDA๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ GPU ์—ฐ์‚ฐ์„ ์ž๋™ ๊ด€๋ฆฌํ•ด์ค๋‹ˆ๋‹ค.

๐Ÿ”น ํŒŒ์ดํ† ์น˜์—์„œ CUDA์˜ ์—ญํ• 

  • GPU๋กœ ํ…์„œ๋ฅผ ์˜ฎ๊ธฐ๊ธฐ ์‰ฝ๊ฒŒ ์„ค๊ณ„
  • ์˜ˆ:
  •  
    x = x.cuda() model = model.cuda()
  • CUDA ์ปค๋„์„ ํŒŒ์ดํ† ์น˜๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ์‹คํ–‰ํ•˜์—ฌ GPU ๊ฐ€์† ์ˆ˜ํ–‰
  • ํ•„์š”ํ•˜๋ฉด **์ปค์Šคํ…€ CUDA ํ™•์žฅ(Custom C++/CUDA Extension)**๋„ ์ž‘์„ฑ ๊ฐ€๋Šฅ

๐Ÿ”น ํ…์„œํ”Œ๋กœ์šฐ์—์„œ CUDA์˜ ์—ญํ• 

  • ํ…์„œ ์—ฐ์‚ฐ์„ ์ž๋™์œผ๋กœ GPU ์žฅ์น˜๋กœ ๋ฐฐ์น˜
  • ์˜ˆ:
  •  
    with tf.device("/GPU:0"): x = tf.constant(...)
  • ๋‚ด๋ถ€์ ์œผ๋กœ cuDNN, cuBLAS ๋“ฑ NVIDIA ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉ
  • XLA(JIT ์ปดํŒŒ์ผ๋Ÿฌ) ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด GPU ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ์Œ

๐Ÿ’ก ์‰ฝ๊ฒŒ ์ •๋ฆฌ

  • ๋‘˜ ๋‹ค CUDA๋ฅผ ์ง์ ‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
  • ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ GPU ์—ฐ์‚ฐ์„ ๋Œ€์‹  ๊ด€๋ฆฌํ•œ๋‹ค.
  • ๊ฐœ๋ฐœ์ž๊ฐ€ CUDA ์ปค๋„์„ ์ง์ ‘ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ณ ๊ธ‰ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ์ƒํ™ฉ๋ฟ์ด๋‹ค.