Google Colaboratory๋ฅผ ์ด์ฉํ ๋จธ์ ๋ฌ๋
์๋ ํ์ธ์. ์ค๋์ ๋จธ์ ๋ฌ๋ ํ๊ฒฝ ๊ตฌ์ถ์ ์ข ๋ ์ฝ๊ณ , ๋ ์ข์ ํ๊ฒฝ์ ๋ค๋ฆ ์๋ ๋ฌด๋ฃ๋ก ์ฌ์ฉํด๋ณด๋ ์๊ฐ์ ๊ฐ์ ธ๋ณด๊ฒ ์ต๋๋ค.
๋จธ์ ๋ฌ๋์ ๋ด PC์ ํ๊ฒฝ์์ ๊ตฌ์ถํ๋ ์ผ์ด๋, ์ฌ์ค ์ฝ์ง ์์ต๋๋ค. ์ ๊ฐ ๊ฝค ์ค๋ ์ ์ TensorFlow๋ฅผ GPU ํ๊ฒฝ์์ ๋๋ฆด ์ ์๋๋ก Python์ Virtualenv์์ TensorFlow๋ฅผ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ ธ์๋๋ฐ์.
๋ฆฌ๋ ์ค๋ฅผ ์ค์นํ๊ณ , Python์ ์ค์นํ๊ณ , ๋ ๊ทธ์ ํ์ํ TensorFlow, Virtualenv๋ฅผ ๊ตฌ์ถํ๊ณ ๋๋ฉด ์ด์ ๋ GPU ๋๋ผ์ด๋ฒ๋ฅผ ์ค์นํด์ผ ํ๋๋ฐ, ์ค๋ฅ๋ ๋ง์ด ๋๊ณ , ์ฌ๊ฐ ์ฝ์ง ์์ ๊ณผ์ ๋ค์ด ๋ฒ์ด์ง๊ฒ ๋ฉ๋๋ค.
๋ง์ฝ, ์ฌ๋ฌ๋ถ๋ค์ด ์ ๋ง๋ก ๊ณ ๊ธ ์ฅ๋น๋ฅผ ๊ฐ์ง๊ณ , ์ด๋ฅผ ํ ๋ฉด Tesla 8๊ฐ๋ฅผ SLI๋ก ๋ฌถ๋๋ค๋์ง, ์ด๋ ๊ฒ ํ๋ค๋ฉด ์ ๊ณผ์ ์ ์ ๋ง๋ก ์ด๋ ต๊ฒ ์ด๋ ต๊ฒ ๊ตฌ์ถ์ ํ์ ์ผ ํ ๊ฒ์ ๋๋ค. ํ์ง๋ง ๋๋ ๊ทธ๋ฅ ๊ฐ๋จํ ๋จธ์ ๋ฌ๋๋ง ์ฐ์ตํ๊ณ ์ถ๊ณ , GPU๋ ๋๋ฌด ์์ข์์ ํด๋ผ์ฐ๋๋ฅผ ์ด์ฉํ๊ณ ์๋ค. ๋ผ๊ณ ํ์ ๋ค๋ฉด, ์ค๋ Google Colaboratory๋ฅผ ํตํด์ ์ฝ๊ฒ ๋จธ์ ๋ฌ๋์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ๊ผญ ํฐ๋ํด๊ฐ์ จ์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.
Google Colaboratory
Google Colab์ด๋ผ๊ณ ํ๋ ์ด ์๋ฃจ์ ์ Google์ด ์ฌ๋ด์์ ์ฌ์ฉํ๊ณ ์๋ Jupyter๋ฅผ ์ผ์ปซ๋ ๋ง์ ๋๋ค. ๊ณผ๊ฑฐ์๋ Google์ด ์ฌ๋ด์์ ์ง์๋ค๋ง ์ฌ์ฉํ์๋ค๊ฐ ์ด์ ๋ ์ผ๋ฐ์ธ๋ค๋ ์ฌ์ฉํ ์ ์๋๋ก ๊ณต๊ฐํ ๊ฒ์ธ๋ฐ์. Google ๊ณ์ ์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ๋๊ตฌ๋ ์ง ์ฐ๋ฆฌ๋ ์ด ํ๊ฒฝ์ ์ฌ์ฉํ์ฌ Python ํ๊ฒฝ์ ๋ง๋ค ์๊ฐ ์์ต๋๋ค.
๋จผ์ Google์ ๋ก๊ทธ์ธํ์ฌ Google ๋๋ผ์ด๋ธ๋ก ์ ์ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์, ์ผ์ชฝ ์๋จ์ New ๋ฒํผ์ ํด๋ฆญํ์ ์ More์ ๋ค์ด๊ฐ๊ฒ ๋๋ฉด, Google Colaboratory๋ผ๋ ๋ฌธ์๋ฅผ ์๋ก์ด ๋ง๋์ค ์ ์๋ ๋ฒํผ์ ๋ง๋๊ฒ ๋ฉ๋๋ค. ๋ง์ฝ ์ด ๋ฒํผ์ด ์๋ค๋ฉด Connect more apps์ ๋ค์ด๊ฐ๋ด ๋๋ค.
์๋จ์ ๊ฒ์์์ "Colab"์ด๋ผ๋ ๋จ์ด๋ฅผ ๊ฒ์ํ์๊ฒ ๋๋ฉด, Google Colaboratory๊ฐ ๋ํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ํด๋ฆญํ์๋ฉด Google Colaboratory๊ฐ ์ฌ๋ฌ๋ถ๋ค์ ๋๋ผ์ด๋ธ์ ํ์ฑํ ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ฉด ์๋ก์ด ipynb(Jupyter Notebook) ํ์ผ์ด ๋ง๋ค์ด์ง๊ณ , ์ฌ๋ฌ๋ถ๋ค์ ์ด์ Google Colaboratory๋ผ๋ ๊ฐ์์ ํ๊ฒฝ์์ Python์ผ๋ก ๋จธ์ ๋ฌ๋์ ํ ์ ์์ต๋๋ค.
Install Packages
๊ทธ๋ฐ๋ฐ, ํ ๊ฐ์ง ์๋ฌธ์ ์ด ์์ต๋๋ค. ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ํ๋ค๋ณด๋ฉด, ๊ทธ ์ ํ์ ๋ฐ๋ผ ๋ด๊ฐ ์ํ๋ ํจํค์ง๋ฅผ ์ค์นํ๊ณ ์ถ์ ๋๊ฐ ์์ต๋๋ค. ์ผ๋ฐ ๋ฆฌ๋ ์ค์์๋ ํฐ๋ฏธ๋ ์ฐฝ์ ์ด์ด์ pip ๋ช ๋ น์ด๋ก ์ค์นํ์ง๋ง Colab์์๋ ๊ทธ๋ฌํ ํฐ๋ฏธ๋ ํ๊ฒฝ์ ์ฃผ์ง ์์ต๋๋ค. ์ด๋ด ๋๋ ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?
Jupyter๋ฅผ ์์ฃผ ์ฌ์ฉํ์๋ ๋ถ๋ค์ด๋ผ๋ฉด, Jupyter Notebook์์ ๋๋ถ๋ถ ํจํค์ง๋ฅผ ์ค์นํด๋ดค์ ๊ฒ์ ๋๋ค. ํ์ง๋ง ์ฒ์์ด์ ๋ถ๋ค์ ์ด๋ฌํ ํ๊ฒฝ์ด ์์์ ๋งค์ฐ ์์ํ๊ฒ ๋๋ ๊ฒ์ธ๋ฐ, ์ค์ ๋ก Jupyter Notebook ๋ด์์๋ ์ด์์ฒด์ ์ ์ปค๋งจ๋๋ฅผ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
!pip3 install tensorflow-gpu
๋ง์ฝ ์ฌ๋ฌ๋ถ๋ค์ด TensorFlow๋ฅผ ์ค์นํ๋ ค๊ณ ํ๋ค๋ฉด, Jupyter Notebook์์ ํ ์ค์ ์ถ๊ฐํด๋๊ณ , !๋ฅผ ์์ ๋ถ์ธ ๋ค์ ์ปค๋งจ๋๋ฅผ ์ ๋ ฅํ๋ฉด OS์ ์ปค๋งจ๋๋ฅผ ์คํํ ์ ์์ต๋๋ค.
Use Data
๋ ํ ๊ฐ์ง, ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๋ ค๋ฉด ์ธ๋ถ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๋ด๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์์ผ ํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ฅผ JDBC๋ ODBC๋ฅผ ํตํด์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด ์๊ฒ ์ง๋ง ์ ์ ํ์ผ(bin, csv ๋ฑ)์ ๊ฒฝ์ฐ, ์ด๋ป๊ฒ ๋ถ๋ฌ์ฌ ์ ์๋์?
ํํ ์ด๋ฐ ๊ฒฝ์ฐ, ์น ์๋ฒ์ ์ ์ ํ์ผ์ ์ ๋ก๋ ํ์ฌ Python์ REST API ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ๋ ์ฌ๋ฆดํ ๋ฐ, ํ์ง๋ง ์ด๋ ๊ฒ ๋๋ฉด Colab ํ๊ฒฝ์์์ ์ด์์ฒด์ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ๋ฑ์ ์ํฉ์ด ๋๋ฉด ๋ด๊ฐ ์ด๋ ๊ฒฝ๋ก์ ์ ์ฅ์ ํ๋์ง ์ฐพ๊ธฐ๊ฐ ์ด๋ ค์ ์ง๊ฒ ๋ฉ๋๋ค.
๋ฐ๋ผ์ ์ด๋ด ๋๋ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด ๋ด ์๋ค. ๊ตฌ๊ธ ๋๋ผ์ด๋ธ์ ๋ด๊ฐ ๋ถ์ํ๊ณ ์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ก๋ ํด๋๊ณ , ์ด๋ฅผ Google Colab API๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ๋ฌ์ค๋ ๋ฐฉ๋ฒ์ ๋๋ค.
from google.colab import drive
Google Colab API์๋ Google Drive ๋ฟ๋ง ์๋๋ผ Authentication ๋ฑ์ ์ฌ๋ฌ๊ฐ์ง API๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฌ๊ธฐ์์๋ ์ธ๋ถ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ค๋ฃจ๊ณ ์ ํ๋, ๊ทธ์ ํ์ํ drive๋ฅผ import๋ฅผ ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
drive.mount('/content/drive')
๊ทธ๋ฐ ๋ค์, ์์ ์ ๋๋ผ์ด๋ธ๋ฅผ Colab ํ๊ฒฝ์ ๋ง์ดํธ๋ฅผ ํฉ๋๋ค. ๋ง์ดํธ ๊ฒฝ๋ก๋ '/content/drive'๋ฅผ ์ฌ์ฉํ๋๋ก ํ๊ฒ ์ต๋๋ค.
์์ ์ ๋๋ผ์ด๋ธ๋ฅผ ๋ง์ดํธํ๊ธฐ ์ํด ์ธ์ฆํค๋ฅผ ์ ๋ ฅํ๋ผ๋ ๋ฉ์์ง์ ๋๋ค. ํ๋์์ ๋งํฌ๋ฅผ ๋๋ฌ, ์ธ์ฆํค๋ฅผ ๋ฐ์ผ์ ํ, ๋ฐ์ผ์ ์ธ์ฆํค๋ฅผ ๋ฃ์ผ๋ฉด ์๋์ ๊ฐ์ด ๋ง์ดํธ๊ฐ ์๋ฃ๋ฉ๋๋ค.
๊ทธ๋ผ ์ด์ '/content/drive'๊ฐ ์์ ์ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ์ ์ต์์๊ฐ ๋๋ ๊ฒ์ ๋๋ค. ๋ง์ฝ, ์ฌ๋ฌ๋ถ๋ค์ด ๊ตฌ๊ธ ๋๋ผ์ด๋ธ ๋ฉ์ธ์์ ํด๋๋ฅผ ํ๋ ์์ฑํด๋๊ณ , ๊ทธ ๋ด์ ํ์ผ์ ๋ถ๋ฌ์ค๊ณ ์ ํ๋ค๋ฉด, '/content/drive/[ํด๋ ์ด๋ฆ]/[ํ์ผ ์ด๋ฆ]'์ผ๋ก ๋ถ๋ฌ์ค์๋ฉด ๋ฉ๋๋ค.
Use GPU
์ ์ง๊ธ๊น์ง ์ดํด๋ณธ ๋ฐ๋ก๋ ์ด๋ฌํ ํ๊ฒฝ์ ์๋ฌด๋ฐ ๋น์ฉ๋ ์ง๋ถํ์ง ์๊ณ , ๋ ์ฌ๋ฌ๋ถ๋ค์ด ์ง์ ๋ฆฌ๋ ์ค๋ Python์ ์ค์นํ์ง ์๊ณ ๋ ์ด๋ฐ ํ๊ฒฝ์ด ๋ง๋ค์ด์ก์ต๋๋ค.
๊ทธ๋ผ GPU๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์?
์๋จ ์ผ์ชฝ์ ๋ณด๋ฉด ๋ฐํ์ ๋ฉ๋ด๊ฐ ์์ต๋๋ค. ๊ฑฐ๊ธฐ์์๋ ํ์ฌ ํ๊ฒฝ์ ๋ํ ๋ฐํ์์ ๋ฐ๊ฟ ์๊ฐ ์๋๋ฐ, ๊ฑฐ๊ธฐ์์ ๋ฐํ์ ์ ํ ๋ณ๊ฒฝ์ ํด๋ฆญํ๋ฉด GPU๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฌผ๋ก Colab์์๋ TPU๋ ์ง์ํ์ง๋ง ์ฌ๊ธฐ์๋ GPU๋ฅผ ์ฌ์ฉํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ทธ๋ฌ๋ฉด ์ง์, ์ฌ๋ฌ๋ถ๋ค๋ GPU ํ ๊ฐ๋ฅผ ํ ๋น๋ฐ์ผ์ จ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด GPU๋ฅผ ๊ฐ์ง๊ณ ์ฌ๋ฌ ๋จธ์ ๋ฌ๋ ์ฐ์ต์ ํด๋ณผ ์๊ฐ ์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ, GPU ์ฑ๋ฅ์ด....?!
Wow, ๋ฌด๋ ค ๋ค๋ฆ ์๋ Tesla K80 1๊ฐ๋ฅผ ์ฃผ์ด์ฃผ๋ค์. ์ด๋ฐ ๊ฑธ ๋ฌด๋ฃ๋ก ์ฌ์ฉํด๋ณผ ์๊ฐ ์๋ค๋... ์์ฒญ ์ข๋ค์. ํ์ง๋ง ์ฌ๊ธฐ์๋ ์ฝ๊ฐ์ ์ ์ฝ์ ์กด์ฌํฉ๋๋ค.
์ด GPU๋ ํ ๋ฒ์ 12์๊ฐ ๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ณต์กํ๊ณ ํฐ ๋ฐ์ดํฐ ์ฉ๋์ ํ๋ จํ์๋๋ฐ, ํ๋ฃจ๊ฐ ์ง๋๋ฉด ๋์ค์ ๋ฉ์ถ๋ฏ๋ก ํ๋ จ์ ์ ์ ํ ์๊ฐ์ ์กฐ์ ํ๋ ๊ฒ์ด ์ค์ํ ๊ฒ ๊ฐ๋ค์.
ํ์ง๋ง ํ ๋ฒ์ ์ฝ๋์์ 12์๊ฐ, ํ VM์ ํ๊ฒฝ์์ 12์๊ฐ์ด๋ ์ฐ์ต ์ฉ๋๋ ๊ฐ๋จํ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ๊ตฌ์ถํ๋ ๋ฐ๋ ํฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ฌด์๋ณด๋ค๋ K80์ด๋ฉด ์ฑ๋ฅ์ด ์๋ ๋ฐ์ด๋๋๊น์.
๋ง์น๋ฉฐ...
์ด๋ ์ ๊ฐ์? ์ด๋ฌํ ํ๊ฒฝ์ ๋ฌด๋ฃ๋ก ๊ทธ๊ฒ๋ ์ฝ๊ณ ํธ๋ฆฌํ๊ฒ ์ ๊ณตํด์ฃผ๋ ๊ณณ์ ์์ ๊ฒ์ ๋๋ค.
์ ๋ ๊ฐ๋จํ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ํ ์คํธํด๋ณด๊ธฐ ์ํด ํ์ฌ ํ๊ฒฝ์ ์์ฃผ ์ฌ์ฉ ์ค์ ์์ต๋๋ค. ๋ค๋ง ํฐ ๋ฐ์ดํฐ๋ฅผ ๋๋ฆฌ๊ฑฐ๋ ํ๋ จ ์๊ฐ์ด ์ดํ ์ด์ ์์๋๋ ๋ฌด๊ฑฐ์ด ๋ฐ์ดํฐ๋ค์๋ ์ ํฉํ์ง ์์ต๋๋ค. ๋ฌผ๋ก ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ์คฌ๊ณ , ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ํ๋๋์ ๋ฐ๋ผ ๋ฌด๊ฑฐ์ด ๋ฐ์ดํฐ๋ ํด๋น ํ๊ฒฝ์์ ๋๋ ค๋ณผ ์ ์๊ฒ ์ง๋ง ๋ง์ด์ฃ .
ํน์ ์ง๊ธ ๋จธ์ ๋ฌ๋ ํ๊ฒฝ ๊ตฌ์ถ์ด ์ด๋ ค์ ๋จธ์ ๋ฌ๋ ๊ณต๋ถ๋ฅผ ๋ง์ค์ด์ ๋ค๊ฑฐ๋ ์ฑ๋ฅ ์ข์ GPU ์ฌ์ฉํ๊ธฐ ๊ฐ๊ฒฉ ๋ถ๋ด์ด ์ปค์ ๋จธ์ ๋ฌ๋์ ๊ณต๋ถํ๋ ๊ฑธ ๊บผ๋ คํ๊ณ ๊ณ์ ๋ค๋ฉด ์ด ํ๊ฒฝ์ ์ฌ์ฉํ๋ฉด์ ๊ณต๋ถํด๋ณด์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
'Data Analysis > Machine Learning' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[LLM] Langchain์ผ๋ก AI E2E ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐํด๋ณด๊ธฐ (1) | 2023.08.27 |
---|---|
Virtualenv๋ฅผ ์ฌ์ฉํ Tensorflow ์ค์น (2) | 2017.06.29 |