Virtualenv๋ฅผ ์‚ฌ์šฉํ•œ Tensorflow ์„ค์น˜

๋ฐ˜์‘ํ˜•

Tensorflow๋ฅผ 0.8 ๋ฒ„์ „๋ถ€ํ„ฐ ์‚ฌ์šฉํ–ˆ์—ˆ์ง€๋งŒ, ์–ด๋Š์ƒˆ ์™€์„œ ๋ณด๋‹ˆ ๋ฒŒ์จ ์ •์‹ ๋ฆด๋ฆฌ์ฆˆ 1.0 ๋ฒ„์ „์„ ์ถœ์‹œํ•˜๊ณ , ์ด์ œ๋Š” CPU ๋ฒ„์ „์ด 1.2๊นŒ์ง€ ์˜จ ์ƒํƒœ๋”๊ตฐ์š”. ์ƒˆ์‚ผ์Šค๋Ÿฝ๊ฒŒ๋„ ์ •๋ง ์‹œ๊ฐ„์ด ๋นจ๋ฆฌ ๊ฐ€๊ณ  ์žˆ๋‹ค๋Š” ๋Š๋‚Œ์ž…๋‹ˆ๋‹ค.



What is Tensorflow ?

์ด ์‹œ์ ์—์„œ Tensorflow๋ฅผ ๋ชจ๋ฅด์‹œ๋Š” ๋ถ„๋“ค์€ ์•„๋งˆ ์—†์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐ๋˜์ง€๋งŒ, ํ˜น์‹œ๋ผ๋„ ์ด ๋ถ„์•ผ์— ์ฒ˜์Œ ํ•ด๋ณด์‹œ๊ณ , ๋ง‰์ƒ ์ฒ˜์Œํ•ด๋ณด๋Š”๋ฐ, ๋˜ ๋ญ”์ง€ ๋ชจ๋ฅด๋ฉด ๊ณค๋ž€ํ•˜๊ฒ ์ฃ ? ๊ทธ๋ž˜์„œ ๊ฐ„๋‹จํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด๋ฉด์„œ ์‹œ์ž‘ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.




Tensorflow: ํ…์„œํ”Œ๋กœ์šฐ๋Š” Google์—์„œ ๊ฐœ๋ฐœํ•ด์„œ ๋‚ด๋†“์€ ๋”ฅ๋Ÿฌ๋‹/๊ธฐ๊ณ„ํ•™์Šต ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋ณธ๋ž˜ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Python ์–ธ์–ด๋งŒ์„ ์ง€์›ํ•˜์˜€์ง€๋งŒ, ์ •์‹ ๋ฒ„์ „์ธ 1.0 ๋ฒ„์ „์„ ๊ณต๊ฐœํ•œ ์ดํ›„์—๋Š” Java, C, Go ์–ธ์–ด์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


Tensorflow๋Š” CPU ๋ฒ„์ „๊ณผ GPU ๋ฒ„์ „์œผ๋กœ ๋‚˜๋ˆ„๋ฉฐ ์ž์‹ ์ด ๊ทธ๋ƒฅ ์—ฐ์Šต, ์žฌ๋ฏธ๋กœ๋งŒ ํ•ด๋ณด์‹œ๋Š” ๋ถ„๋“ค์ด๋ผ๋ฉด, CPU ๋ฒ„์ „์„ ์•„ ๋‚˜๋Š” GPU ์„ฑ๋Šฅ๋„ ์–ด๋Š ์ •๋„ ๋˜๊ณ , ์ข€ ๋” ์‹ฌ์ธต์ ์ด๊ณ  ์ƒ์šฉํ™” ํ•˜๋ ค๋Š” ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด, GPU ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. (๋‹จ, GPU ๋ฒ„์ „์€ NVIDIA CUDA 8.0 ๋ฒ„์ „์„ ์ง€์›ํ•˜๋Š” ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.)


์ •์‹ ๋ฒ„์ „์ด ์ถœ์‹œ๋˜๊ธฐ ์ด์ „์˜ Tensorflow๋Š” CPU ๋ฒ„์ „์€ NIX๊ณ„์—ด ์šด์˜์ฒด์ œ(Linux, Mac OS X), GPU ๋ฒ„์ „์€ Ubuntu Linux์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ Mac OS X, Windows ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํฌ์ŠคํŠธ์—์„œ๋Š” Windows๊ฐ€ ์•„๋‹Œ Ubuntu Linux๋ฅผ ์‚ฌ์šฉํ•œ ์„ค์น˜ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ํฌ์ŠคํŒ… ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.



Virtualenv

Virtualenv์— ๋Œ€ํ•œ ์„ค๋ช…์€ ์ œ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŠธ ์ค‘ Virtualenv์— ๋Œ€ํ•œ ํฌ์ŠคํŠธ๋ฅผ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.


๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•œ Python ์„ค์น˜ Virtualenv

์•„๋ž˜์˜ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์„ค์น˜ ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.


๊ธ€ ๋ณด๋Ÿฌ ๊ฐ€๊ธฐ



Tensorflow CPU ์„ค์น˜

Tensorflow๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์ „, ๋ฐ˜๋“œ์‹œ Virtualen์™€ Python ์„ค์น˜๊ฐ€ ์„  ์ž‘์—…์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ์ œ ๋ธ”๋กœ๊ทธ์— ์žˆ๋Š” Python ์นดํ…Œ๊ณ ๋ฆฌ์—์„œ ์„ค์น˜์— ๋Œ€ํ•œ ๊ธ€๋“ค์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 


Python๊ณผ Virtualenv ์„ค์น˜๊ฐ€ ๋๋‚ฌ์œผ๋ฉด ์ด์ œ, Tensorflow CPU ๋ฒ„์ „์„ ์„ค์น˜ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


$ pip install --upgrade tensorflow

๊ฐ€์ƒ ํ™˜๊ฒฝ์—์„œ ์œ„ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด์ค๋‹ˆ๋‹ค. --upgrade ์˜ต์…˜์€ ํ˜น์—ฌ ์ž์‹ ์˜ ๊ฐ€์ƒ ํ™˜๊ฒฝ์— tensorflow๊ฐ€ ์ด๋ฏธ ์žˆ๋Š” ๊ฒฝ์šฐ, ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ํ•˜๋ผ๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค.


์ €๋Š” tensorflow ํด๋”๋ผ๋Š” ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ณ , ์„ค์น˜๋ฅผ ์ˆ˜ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.




Tensorflow GPU ์„ค์น˜

์ด ์„ธ์…˜์€ Tensorflow GPU ๋ฒ„์ „ ์„ค์น˜ ํŒŒํŠธ์ž…๋‹ˆ๋‹ค. CPU ๋ฒ„์ „์„ ์ด๋ฏธ ์„ค์น˜ํ•˜์‹  ๋ถ„๋“ค์€ ์ด ์„ธ์…˜์„ ๋„˜๊ธฐ๊ณ , ๋‹ค์Œ ์„ธ์…˜์—์„œ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

GPU ๋ฒ„์ „์˜ ์„ค์น˜์—๋Š” ์•„๋ž˜์˜ ์ค€๋น„๋ฌผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.


- NVIDIA CUDA 3.0์„ ์ง€์›ํ•˜๋Š” ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ.

- NVIDIA CUDA 7.5 / 8.0 ์„ค์น˜ ํŒŒ์ผ


๋จผ์ € NVIDIA CUDA 8.0 ์„ค์น˜ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค.


Download CUDA 8.0


์œ„ ์‚ฌ์ง„๋Œ€๋กœ, Linux, x86_64, Ubuntu, 16.04, runfile์„ ์ˆœ์„œ๋Œ€๋กœ ํด๋ฆญํ•œ ํ›„, Download ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ CUDA 8.0์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์Šต๋‹ˆ๋‹ค.


$ chmod +x cuda_8.0.61_375.26_linux.run 

๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•˜์—ฌ, ์œ„ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. (์ด ๋ช…๋ น์–ด๋Š” ๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ CUDA ์„ค์น˜ ํŒŒ์ผ์— ์‹คํ–‰ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.)


$ ./cuda_8.0.61_375.26_linux.run

์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.


EULA ์‚ฌ์šฉ์ž ๊ณ„์•ฝ์„œ์— ๋™์˜ํ•˜๊ฒ ์Šต๋‹ˆ๊นŒ? ๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ๋‚˜์˜ค๋ฉด accept๋ฅผ ์ž…๋ ฅํ•˜๊ณ , Enter๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.


์œ„ ์‚ฌ์ง„๋Œ€๋กœ ์ ˆ์ฐจ๋ฅผ ๋ฐŸ์œผ์‹œ๋ฉด, NVIDIA CUDA ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.


๊ทธ๋ž˜ํ”ฝ ๋“œ๋ผ์ด๋ฒ„ ์„ค์น˜ ์—ฌ๋ถ€ ํ™•์ธ์„ ์œ„ํ•ด, nvidia-smi ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด๋ด…๋‹ˆ๋‹ค. ๋งŒ์•ฝ, ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด์„œ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ค์น˜ํ•œ ํ›„, ์žฌ๋ถ€ํŒ…์„ ํ•ด์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.


$ sudo apt install nvidia-371 


cuDNN v5.1 ์„ค์น˜

์ด์ „ ๋ฒ„์ „์˜ Tensorflow์—์„œ๋Š” cuDNN ์„ค์น˜๊ฐ€ ์„ ํƒ์ ์ด์—ˆ๋Š”๋ฐ, ์ด์ œ๋Š” ํ•„์ˆ˜๊ฐ€ ๋˜์—ˆ๋„ค์š”. cuDNN์„ ์„ค์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด Tensorflow๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜์˜ ๋ฒ„ํŠผ์„ ์ด์šฉํ•ด cuDNN ๋‹ค์šด๋กœ๋“œ ์‚ฌ์ดํŠธ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.


Download cuDNN v5.1


cuDNN์„ ์„ค์น˜ํ•˜๋ ค๋ฉด, NVIDIA ์‚ฌ์ดํŠธ์— ํšŒ์›์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํšŒ์›์ด ์•„๋‹ˆ์‹œ๋ผ๋ฉด, ํšŒ์›๊ฐ€์ž… ํ›„์— ๋‹ค์šด๋กœ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ, ๋ฐ˜๋“œ์‹œ ํšŒ์› ๊ฐ€์ž… ํ›„ ์ง„ํ–‰ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.


Tensorflow์—์„œ๋Š” cuDNN v5.1 ๋ฒ„์ „์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ CUDA 8.0๊ณผ ๋งž๋Š” cuDNN v5.1 ๋ฒ„์ „์„ ํด๋ฆญํ•ด์ค๋‹ˆ๋‹ค.


$ sudo mv cudnn-8.0-linux-x64-v5.1.tgz /usr/local/ 

cuDNN์„ ๋‹ค์šด๋ฐ›์€ ๊ฒฝ๋กœ์— ํ„ฐ๋ฏธ๋„์„ ์—ด๊ณ , ์œ„ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ cuda๊ฐ€ ์„ค์น˜๋œ ํด๋”๋กœ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค.


$ sudo tar xvf cudnn-8.0-linux-x64-v5.1.tgz 

์œ„ ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด, ์••์ถ•์„ ํ’€์–ด์ค๋‹ˆ๋‹ค.



CUDA ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

์ด์ œ ๊ฑฐ์˜ ๋‹ค ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋งŒ ์„ค์ •ํ•ด์ฃผ๋ฉด, ์—ฌ๋Ÿฌ๋ถ„๋“ค์€ ๋ฌธ์ œ ์—†์ด Tensorflow๋ฅผ ์‚ฌ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


# tensorflow Settings 
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda

vim, gedit ๋“ฑ์˜ ์—๋””ํ„ฐ๋ฅผ ์ด์šฉํ•ด ~/.profile ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ , ์œ„์˜ ๋‚ด์šฉ์„ ์ž…๋ ฅํ•˜์‹  ๋‹ค์Œ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. (์ด๋ฏธ ์žˆ๋‹ค๋ฉด, ๊ทธ ๋ฐ‘์— ์ž…๋ ฅํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.) 


GUI ํ™˜๊ฒฝ์„ ๋กœ๊ทธ์•„์›ƒ ํ›„, ๋กœ๊ทธ์ธ ํ•ฉ๋‹ˆ๋‹ค. 



์˜ˆ์ œ ์ฝ”๋“œ ์ปดํŒŒ์ผ/์‹คํ–‰

๋ชจ๋“  ์„ค์น˜๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ Tensorflow๋ฅผ ์‹ค์Šตํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ–๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 


์œ„ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์ปดํŒŒ์ผ ํ•ด๋ด…์‹œ๋‹ค.


๊ทธ๋Ÿฌ๋ฉด, ๊ทธ๋ž˜ํ”„๊ฐ€ ๋‚˜์˜ค๋ฉด์„œ step์ด 20์”ฉ ์ฆ๊ฐ€ํ•˜๊ณ , ์ฆ๊ฐ€ํ•œ๋งŒํผ ๊ทธ๋ž˜ํ”„๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋‚˜์˜ค๋ฉด ์„ค์น˜๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

(์ˆซ์ž๋ฅผ ๋žœ๋คํ•จ์ˆ˜๋กœ ๋ฝ‘์•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ทธ๋ž˜ํ”„์˜ ๋ชจ์Šต์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„ ์‹คํ–‰ ํ™”๋ฉด๋งŒ ๋‚˜ํƒ€๋‚˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.)


๋งˆ์น˜๋ฉฐ...

์—ฌ๊ธฐ๊นŒ์ง€ Tensorflow ์„ค์น˜์— ๋Œ€ํ•œ ๊ธ€์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์ด ๋Šฆ์€๊ฐ์ด ์žˆ๋‹ค๊ณ ๋Š” ์ƒ๊ฐํ•˜์ง€๋งŒ, ์ฒ˜์Œ ์ด ํ•™๋ฌธ์„ ๊ณต๋ถ€ํ•˜์˜€์„ ๋•Œ, ๋งŽ์€ ์–ด๋ ค์›€์„ ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ๋งŽ์ด ๋ง์„ค์ด๊ณ , ์ด ๋ถ„์•ผ๋ฅผ ํ•˜๊ณ ๋Š” ์‹ถ์—ˆ์ง€๋งŒ ํ•™์—…, ๊ฐ€๊ณ ์ž ํ•˜๋Š” ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ ์ค€๋น„, ์‹œ๊ฐ„์˜ ๋ถ€์กฑ ๋“ฑ์ด ์ €์˜ ๋ฐœ๋ชฉ์„ ๋งŽ์ด ๋ถ™์žก์•„ ์ด์ œ ์ด ๊ธ€์„ ์“ฐ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


๋งŽ์€ ๊ธ€์„ ์˜ฌ๋ฆฌ์ง€๋Š” ๋ชปํ•˜๊ฒ ์ง€๋งŒ, ํ‹ˆํ‹ˆ์ด ๊ณต๋ถ€ํ•˜๋ฉด์„œ, Tensorflow ๊ธ€๋“ค์„ ์ €์˜ ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ์ธ Jekyll์— ์˜ฌ๋ฆด ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. 


์—ฌ๊ธฐ๊นŒ์ง€ ์ˆ˜๊ณ  ๋งŽ์œผ์…จ์Šต๋‹ˆ๋‹ค.


๋ฐ˜์‘ํ˜•
TAGS.

Tistory Comments