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 ์ค์น ํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ๋๋ก ํ๊ฒ ์ต๋๋ค. ์๋์ ๋ฒํผ์ ํด๋ฆญํ์ฌ ์ฌ์ดํธ์ ์ ์ํฉ๋๋ค.
์ ์ฌ์ง๋๋ก, 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 ๋ค์ด๋ก๋ ์ฌ์ดํธ๋ก ์ด๋ํฉ๋๋ค.
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์ ์ฌ๋ฆด ์์ ์ ๋๋ค.
์ฌ๊ธฐ๊น์ง ์๊ณ ๋ง์ผ์ จ์ต๋๋ค.
'Data Analysis > Machine Learning' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[LLM] Langchain์ผ๋ก AI E2E ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐํด๋ณด๊ธฐ (1) | 2023.08.27 |
---|---|
Google Colaboratory๋ฅผ ์ด์ฉํ ๋จธ์ ๋ฌ๋ (0) | 2019.11.06 |