Skip to content

Latest commit

ย 

History

History
108 lines (78 loc) ยท 5.91 KB

File metadata and controls

108 lines (78 loc) ยท 5.91 KB

WICWIU(What I can Create, What I Understand)

  • WICWIU๋Š” ๊ตญ๋‚ด ๋Œ€ํ•™ ์ตœ์ดˆ๋กœ ๊ณต๊ฐœํ•˜๋Š” ๋”ฅ๋Ÿฌ๋‹ ์˜คํ”ˆ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.

  • WICWIU("What I Create, What I Understand.")๋ผ๋Š” ์ด๋ฆ„์€ Richard Feynman์˜ "What I cannot create, I do not understand."์—์„œ ์˜๊ฐ์„ ๋ฐ›์•„ ์ง€์—ˆ์Šต๋‹ˆ๋‹ค. "์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ๋งŒ๋“ค๋ฉฐ ์ดํ•ดํ•œ ๋”ฅ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ"๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

  • WICWIU๋Š” ๋ชจ๋“  API๊ฐ€ C++๋กœ ์ œ๊ณต๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ์„ฑ๋Šฅ ์ตœ์ ํ™”์— ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ์‘์šฉ์‹œ์Šคํ…œ์˜ ๊ฐœ๋ฐœ ์™ธ์—๋„ ํ”„๋ ˆ์ž„์›Œํฌ ์ž์ฒด๋ฅผ ํŠน์ˆ˜ํ•œ ํ™˜๊ฒฝ์— ๋งž๋„๋ก ์ˆ˜์ • ๋ฐ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • Custom Operator, ๋˜๋Š” Module ๊ฐœ๋ฐœ์„ ์œ„ํ•œ API documentation์€ ์ถ”ํ›„ ์˜ฌ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

  • WICWIU๋Š” Apache2.0 ๋ผ์ด์„ ์Šค๋ฅผ ์ ์šฉํ•ด ์—ฐ๊ตฌ ๋ชฉ์  ๋ฐ ์ƒ์šฉ ๋ชฉ์ ์œผ๋กœ ์ œ์•ฝ ์—†์ด ํ™œ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

WICWIU Github Pages ๊ฐ€ ์ƒˆ๋กœ ๊ฐœ์„ค๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ์ด๊ณณ์„ ํด๋ฆญํ•˜์—ฌ ๋ฐฉ๋ฌธํ•ด์ฃผ์„ธ์š”.

  • ๊ธฐ์กด WICWIU ์˜ ๋ฌธ์„œ doc/ ์™€ Documentation/ ๊ฐ€ ๋ชจ๋‘ ํฌํŒ…๋˜์–ด ์›น๋ธŒ๋ผ์šฐ์ €๋กœ ํŽธํ•˜๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. WICWIU ์˜ API ๋„ ๋ชจ๋‘ ํฌํŒ…์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • WICWIU Github Pages ์—๋Š” WICWIU ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ(WICWIU ๋กœ ์‹ ๊ฒฝ๋ง ๊ตฌ์„ฑ, WICWIU ๋กœ ๋”ฅ๋Ÿฌ๋‹ํ•˜๊ธฐ, WICWIU ์ฝ”๋“œ ๊ฐ™์ด ๋ถ„์„ํ•ด๋ณด๊ธฐ) ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • WICWIU Github Pages ์—๋Š” WICWIU ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ Git, Github ์œผ๋กœ ํ˜‘์—…ํ•˜๊ธฐ, GPU Acceleration(CUDA ์ฝ”๋”ฉํ•˜๊ธฐ), Makefile ์ดํ•ดํ•˜๊ธฐ, ๋”ฅ๋Ÿฌ๋‹์— ํ•„์š”ํ•œ CLI(gotop, tmux, zsh) ์•Œ์•„๋ณด๊ธฐ ๋“ฑ๋“ฑ ์ข‹์€ ์ •๋ณด๋“ค์ด ์ง€์†์ ์œผ๋กœ ์—…๋กœ๋“œ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

WICWIU๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ์ง€ํ–ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋‹ค์–‘ํ•œ ์‹ ๊ฒฝ๋ง ๊ณ„์ธต ์˜ˆ์‹œ

  • ์ผ๋ฐ˜์ ์ธ ๊ทธ๋ž˜ํ”„ ํ˜•ํƒœ์˜ ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ

  • ๊ฐ€๋…์„ฑ ๋†’์€ ์ €์ˆ˜์ค€ ์—ฐ์‚ฐ์˜ CPU ์ฝ”๋“œ

  • ๋†’์€ ์„ฑ๋Šฅ์˜ GPU ๋ณ‘๋ ฌ ์—ฐ์‚ฐ (cuDNN)

  • ํ•™์Šต์„ ์œ„ํ•œ ํ•œ๊ตญ์–ด ๋ฌธ์„œ (์ค€๋น„์ค‘; ํ˜„์žฌ ํ•œ๊ตญ์–ด ์ฃผ์„ ํฌํ•จ)

  • MNIST, CIFAR10, ImageNet tutorial ์ง€์›

WICWIU๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™˜๊ฒฝ์„ ์ง€์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

System
Linux CPU
Linux GPU
Windows CPU

WICWIU๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์š”์†Œ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Tensor & Shape Tensor ํด๋ž˜์Šค๋Š” ์ตœ๋Œ€ 5์ฐจ์›์˜ Tensor Data๋ฅผ ์ €์žฅ, ๊ด€๋ฆฌํ•˜๋ฉฐ ๋ชจ๋“  ์‹ ๊ฒฝ๋ง ์—ฐ์‚ฐ์€ Tensor์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. Tensor์˜ ๋‚ด๋ถ€์—๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ 1์ฐจ์› ๋ฐฐ์—ด์˜ ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜์ง€๋งŒ, Shape ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ์™ธ๋ถ€๋กœ๋Š” ์ตœ๋Œ€ 5์ฐจ์›๊นŒ์ง€์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
Operator Operator ํด๋ž˜์Šค๋Š” ์ˆœ์ „ํŒŒ์™€ ์—ญ์ „ํŒŒ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์ €์ˆ˜์ค€ ์—ฐ์‚ฐ์„ ํฌํ•จํ•˜๋ฉฐ, ๊ฐ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ ๊ฐ’์„ ๊ฐ ๊ฐ์ฒด์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋กœ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ์ €์žฅ๋œ ๊ฒฐ๊ณผ๋Š” ์—ฐ๊ฒฐ๋œ ๋‹ค๋ฅธ Operator๋‚˜ Loss Function์˜ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ์‚ฌ์šฉ์ž๋Š” Operator ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„ ์ƒˆ๋กœ์šด ์—ฐ์‚ฐ์ž๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Module Module ํด๋ž˜์Šค๋Š” ๋ณต์žกํ•œ ์‹ ๊ฒฝ๋ง ๋ชจ๋ธ์„ Operator ํด๋ž˜์Šค๋งŒ์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆํŽธํ•˜์—ฌ ๋งŒ๋“ค์–ด์ง„ ๊ณ ์ˆ˜์ค€ ์—ฐ์‚ฐ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ๋ณต์ˆ˜์˜ Operator๋“ค์„ ๊ทธ๋ž˜ํ”„ ๊ตฌ์กฐ๋กœ ์กฐํ•ฉํ•˜์—ฌ ์ •์˜ํ•˜๋ฉฐ, Operator์™€ ๋‹ค๋ฅธ Module์™€ ์žฌ๊ท€์  ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
Loss Function & Optimizer Loss Function ํด๋ž˜์Šค๋Š” ์†์‹ค ํ•จ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๊ณ , Optimizer ํด๋ž˜์Šค๋Š” ๊ฒฝ์‚ฌ๋„ ๋ฒกํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ตœ์ ํ™” ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ‘œํ˜„ํ•˜๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. WICWIU์—์„œ๋Š” ๋‹ค์–‘ํ•œ Loss Function๊ณผ Optimizer๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ƒˆ๋กœ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ •์˜ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
Neural Network Neural Network ํด๋ž˜์Šค๋Š” ์‹ ๊ฒฝ๋ง ๋ชจ๋ธ์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. Operator์™€ Module๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์‹ ๊ฒฝ๋ง ๋ชจ๋ธ์„ ๊ตฌ์„ฑํ•˜๊ณ  ๋ชจ๋ธ ํ•™์Šต์˜ ์ „๋ฐ˜์ ์ธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

WICWIU๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ ํŒจํ‚ค์ง€๋“ค์ด ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • NVIDIA driver
  • cuda toolkit (tested on v.9.0)
  • cuDNN (tested on v7.0.5)

WICWIU๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์„ค์น˜ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ git clone https://github.com/WICWIU/WICWIU
$ cd WICWIU/tutorials/MNIST
$ make
$ ./main

CPU ๋™์ž‘์„ ์›ํ•˜์‹œ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์ฒ˜์Œ ๋ฐ›์œผ์‹œ๋ฉด GPU๋กœ ํ™˜๊ฒฝ์„ค์ •์ด ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.)

$ cd WICWIU/
* makefile์—์„œ ENABLE_CUDNN = -D__CUDNN__ ์ฃผ์„ ์ฒ˜๋ฆฌ
$ make
$ cd tutorials/MNIST
$ make
$ ./main

์ž์„ธํ•œ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์€ ์˜ˆ์ œํŒŒ์ผ์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ฃผ์‹œ๊ณ , ์ถ”ํ›„ ์ž๋ฃŒ๋ฅผ ๋ณด๊ฐ•ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

WICWIU๋ฅผ ๋งŒ๋“ค์–ด๊ฐ€๋Š” ์‚ฌ๋žŒ๋“ค์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

WICWIU๋Š” ํ•œ๋™๋Œ€ํ•™๊ต ํ•™๋ถ€์ƒ ์ฃผ๋„๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ํ•œ๋™๋Œ€ํ•™๊ต ์ „์‚ฐ์ „์ž๊ณตํ•™๋ถ€ ๊น€์ธ์ค‘ ๊ต์ˆ˜๋‹˜.
  • 1๊ธฐ: ๋ฐ•์ฒœ๋ช…(ํŒ€์žฅ), ๊น€์ง€์›…, ๊ธฐ์œคํ˜ธ, ๊น€์ง€ํ˜„
  • 2๊ธฐ: ์ตœ์€์„œ(ํŒ€์žฅ), ์œค์„ฑ๊ฒฐ, ๊น€์Šน์ฃผ, ์˜ค์ค€์„
  • 3๊ธฐ: ๊ถŒ์˜ˆ์„ฑ(ํŒ€์žฅ), ์œค๋™ํœ˜, ๊น€๊ฒฝํ˜‘, ์ „ํ˜œ์›
  • 4๊ธฐ: ์‹ ์น˜ํ˜ธ(ํŒ€์žฅ), ๋ฐ•์ฐธ์ง„, ์˜ค์ƒ์ง„, ์„œ์ง„๋ช…, ์˜ค์ค€์„
  • 5๊ธฐ: ์„ ํ•œ๊ฒฐ(ํŒ€์žฅ), ํ•œ์ฐฌ์†”, ๊ฐ•์˜ˆ๋นˆ, ์ตœํ•˜์˜
  • 6๊ธฐ: ์ด์ฐฌํšจ, ์šฐ์˜ฅ๊ท 

์ €ํฌํŒ€๊ณผ ์—ฐ๋ฝํ•˜๊ณ  ์‹ถ์œผ์‹  ๋ถ„๋“ค์€?

ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•ด ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ๋‹ค๋ฉด hgudeeplearning@gmail.com ๋กœ ์—ฐ๋ฝํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.