๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Deep Learning/2023 DL ๊ธฐ์ดˆ ์ด๋ก  ๊ณต๋ถ€

[Standford_cs231n] Lecture 8 ) Deep Learning Software

by ์ œ๋ฃฝ 2023. 7. 7.
728x90
๋ฐ˜์‘ํ˜•

 

1. CPU vs GPU
  • CPU๋Š” ์ปดํ“จํ„ฐ์˜ ๋‡Œ์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„
  • ์ปดํ“จํ„ฐ์—์„œ ๊ตฌ์„ฑ ๋‹จ์œ„ ์ค‘ ๊ธฐ์–ต, ํ•ด์„, ์—ฐ์‚ฐ, ์ œ์–ด๋ถ€๋ถ„์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ค‘์š”ํ•œ ๋…€์„์ด๋‹ค.
  • ์ข€ ๋” ์ ์€ core์˜ ์ˆ˜๋กœ ์—ฐ์†์ ์ธ ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ CPU๊ฐ€ ์ž์ฃผ ์“ฐ์ธ๋‹ค

  • GPU๋Š” computer graphics๋ฅผ Renderingํ•˜๊ธฐ ์œ„ํ•ด ์“ฐ์ด๋Š” ๋…€์„์ด๋‹ค.
  • ๋” ๋งŽ์€ core๋กœ ์ผ์„ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ GPU๊ฐ€ ์ž์ฃผ ์“ฐ์ธ๋‹ค.
  • GPU๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์ž์ฒด์ ์ธ RAM์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

⇒ GPU์˜ ์ข…๋ฅ˜๋Š” ํฌ๊ฒŒ ์„ธ๊ฐ€์ง€

  1. CUDA
  1. OpenCL
  1. Udacity
2. Deep Learning Framework
  • ๋”ฅ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š”?
  1. Computational Graph๋ฅผ ์‰ฝ๊ฒŒ buildํ•˜๊ธฐ ์œ„ํ•ด
  1. Gradient ๊ณ„์‚ฐ์„ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด
  1. GPU์—์„œ ํšจ๊ณผ์ ์œผ๋กœ ๋”ฅ๋Ÿฌ๋‹์„ ๋Œ๋ฆฌ๊ธฐ ์œ„ํ•ด
1. Tensorflow
  • Neural Network๋ฅผ ๋จผ์ € ์ •์˜ํ•˜๊ณ  training ์‹œํ‚ด
  • Graph์ด static์ด๋‹ค
  • ์ฆ‰, ๋ชจ๋ธ์„ ํ•œ๋ฒˆ ๊ตฌ์„ฑํ•ด๋†“์œผ๋ฉด ์žฌ์‚ฌ์šฉ์ด ์‰ฝ๊ณ  ์ตœ์ ํ™” ๊ณผ์ •๋„ ๊ฐ€๋Šฅ.

์ฒ˜์Œ์— Neural Net์„ ๋งŒ๋“ ๋‹ค. placeholder๋ผ๋Š” ๊ณณ์— input๊ฐ’๊ณผ weights๋“ค์˜ ๊ฐ’์„ ๋„ฃ์–ด์ค€๋‹ค.

Xavier์— ์˜ํ•ด weight์˜ ์ดˆ๊ธฐํ™” ๊ฐ’์„ ์„ค์ •ํ•ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  y_pred ๋ฅผ ์ด์šฉํ•ด ์ž๋™์ ์œผ๋กœ weight๊ฐ’์ด ๋ฐ”๋€Œ๋„๋ก ์„ค์ •ํ•ด์ค€๋‹ค.

๊ทธ๋ฆฌ๊ณ  optimizer๋ฅผ ์ด์šฉํ•ด gradient๊ฐ’์„ ๊ณ„์‚ฐํ•˜๊ณ ,loss๊ฐ’์ด ์ตœ์†Œ๊ฐ€ ๋˜๋„๋ก ๊ณ„์† update๋ฅผ ํ•ด์ค€๋‹ค.

2. Keras

keras๋ž€ Tensorflow์—์„œ ์ œ๊ณตํ•˜๋Š” high-level wrapper์ด๋‹ค.

๊ต‰์žฅํžˆ ์ง๊ด€์ ์œผ๋กœ ๋ชจ๋ธ์„ ์งค ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด ์ฒ˜์Œ ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ๋ฐฐ์šธ ๋•Œ ์ข‹์€

model.fit ํ•˜๋ฉด ์•Œ์•„์„œ ๋ชจ๋ธ ํ•ฉ์น˜๊ณ  training ํ•˜๊ฒŒ๋” ํ•จ.

3. Pytorch

pytorch์—๋Š” 3๊ฐ€์ง€์˜ abstraction์ด ์กด์žฌํ•˜๋Š”๋ฐ,

Tensor๋ž€ ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ๋‹ค์ฐจ์› ๋ฐฐ์—ด์ธ๋ฐ GPU์—์„œ ๋Œ์•„๊ฐ€๊ฒŒ๋” ๋งŒ๋“  ๋ฐฐ์—ด์ด๋‹ค.

Variable์ด๋ž€ computational graph์˜ ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. data์™€ gradient๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 

Module์ด๋ž€ neural network์˜ ํ•˜๋‚˜์˜ layer๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

pytorch๋Š” tensorflow์™€ ๋‹ค๋ฅด๊ฒŒ graph๊ฐ€ dynamic graph์ด๋‹ค.

training์„ ์‹œํ‚ฌ ๋•Œ, ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์ฝ”๋“œ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ใ…‡ใ…‡

๋ชจ๋“ˆ์„ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด ์ฃผ๊ณ , ๋‚ด๊ฐ€ ๋งŒ๋“  ๋ชจ๋ธ์„ ์ด์šฉํ•˜์—ฌ ํ•™์Šต์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. optimizer๋ฅผ ์ด์šฉํ•ด์„œ learning rate๋ฅผ ์‰ฝ๊ฒŒ ์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

DataLoader๋ฅผ ์ด์šฉํ•˜์—ฌ ์‰ฝ๊ฒŒ dataset์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜๋„ ์žˆ๋‹ค.

4. Caffe2
  • c++๋กœ ์ž‘์„ฑ๋˜์–ด ์žˆ๋‹ค.
  • python์œผ๋กœ ๋ชจ๋ธ์„ training์„ ์‹œํ‚ค๊ณ  serialize์™€ deploy๋Š” python์—†์ด ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • iOS / Android ์—์„œ๋„ ๋™์ž‘ํ•œ๋‹ค.
  • Facebool์—์„œ ์ง์ ‘ ๋”ฅ๋Ÿฌ๋‹์„ ์ ์šฉํ•˜์—ฌ ์‹ค์ œ ์ œํ’ˆ์„ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

728x90
๋ฐ˜์‘ํ˜•