์ปดํจํฐ์ ์ด ์ ์ฅ์๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ฃผํผํฐ ๋
ธํธ๋ถ์ ์คํํ๋ ค๋ฉด ๋จผ์ git์ด ํ์ํฉ๋๋ค. ์ด๋ฏธ ์ค์น๋์ด ์์ ์ ์์ต๋๋ค. ํฐ๋ฏธ๋์ ์ด๊ณ git
๋ช
๋ น์ ํ์ดํํ์ฌ ํ์ธํด ๋ณด์ธ์. ๋ง์ฝ git์ด ์๋ค๋ฉด git-scm.com์์ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค.
๊ทธ๋ค์ ์ด ์ ์ฅ์๋ฅผ ํด๋ก ํ๊ธฐ ์ํด ํฐ๋ฏธ๋์ ์ด๊ณ ๋ค์ ๋ช
๋ น์ ํ์ดํํ์ธ์(๋งจ ์์ $
๊ธฐํธ๋ ํ์ดํํ์ง ๋ง์ธ์. ์ด ๊ธฐํธ๋ ํ์ด์ฌ ์ฝ๋๊ฐ ์๋๋ผ ํฐ๋ฏธ๋ ํ๋กฌํํธ๋ก ๊ด๋ก์ ํ์ํฉ๋๋ค):
$ cd $HOME # ๋๋ ๊ฐ์ ์ํ๋ ๋ค๋ฅธ ๊ฐ๋ฐ ๋๋ ํ ๋ฆฌ
$ git clone https://github.com/rickiepark/handson-ml2.git
$ cd handson-ml2
git์ ์ค์นํ๊ณ ์ถ์ง ์๋ค๋ฉด master.zip ํ์ผ์ ๋ค์ด๋ก๋ํ์ฌ ์์ถ์ ํ๊ณ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ handson-ml2
๋ก ๋ฐ๊พธ์ด ์ฃผ์ธ์. ๊ทธ๋ค์ ์ํ๋ ๊ฐ๋ฐ ๋๋ ํ ๋ฆฌ๋ก ์ฎ๊น๋๋ค.
๋ค์์ผ๋ก ํ์ด์ฌ 3๊ณผ ์ฌ๋ฌ ๊ฐ์ง ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. ๊ฐ์ฅ ์ฌ์ด ์ค์น ๋ฐฉ๋ฒ์ ์๋์ฝ๋ค๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ค์นํ๋ ๊ฒ์
๋๋ค. ์๋์ฝ๋ค๋ ๊ณผํ ์ปดํจํ
์ ์ํ ํ๋ฅญํ ํ์ด์ฌ ๋ฐฐํฌํ์ผ๋ก ์ฌ๋ฌ ํ๋ซํผ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ํ์ด, ํ๋ค์ค, ๋งทํ๋กฏ๋ฆฝ, ์ฌ์ดํท๋ฐ ๋ฑ๊ณผ ๊ฐ์ ๋ง์ ๊ณผํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฉ๋์ด ํฝ๋๋ค. ์์ ์ฉ๋์ ์๋์ฝ๋ค ๋ฐฐํฌํ๊ฐ ํ์ํ๋ค๋ฉด conda
ํจํค์ง ๋๊ตฌ๋ฅผ ์คํํ๊ธฐ ์ํ ์ต์ ๊ธฐ๋ฅ์ ๋ด๊ณ ์๋ ๋ฏธ๋์ฝ๋ค๋ฅผ ์ค์นํ์ธ์. ๊ผญ ์ต์ ๋ฒ์ ์ ์๋์ฝ๋ค(๋๋ ๋ฏธ๋์ฝ๋ค)๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค.
MacOS์ ๋ฆฌ๋
์ค์ ์ค์นํ ๋ conda init
๋ช
๋ น์ ์คํํ์ฌ ์๋์ฝ๋ค๋ฅผ ์ด๊ธฐํํ ์ง ๋ฌป์ต๋๋ค. ์ด๋ฅผ ์๋ฝํ๋ฉด ํฐ๋ฏธ๋์ ์ด ๋๋ง๋ค conda
๋ช
๋ น์ ์ฌ์ฉํ๋๋ก ์ ์คํฌ๋ฆฝํธ๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค. ์ค์น๊ฐ ๋๋๋ฉด ํฐ๋ฏธ๋์ ๋ซ๊ณ ์๋ก์ด ํฐ๋ฏธ๋์ ์ด์ด ์ ์ ์ฉ๋์๋์ง ํ์ธํด ๋ณด์ธ์.
์๋์ฐ์์ ์ค์นํ ๋ PATH
ํ๊ฒฝ ๋ณ์๋ฅผ ์
๋ฐ์ดํธํ ์ง ๋ฌป์ต๋๋ค. ์ด๊ฒ์ ๋ค๋ฅธ ์ํํธ์จ์ด์ ์ถฉ๋ํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ถ์ฅ๋์ง ์์ต๋๋ค. ๋์ ์ค์น๊ฐ ๋๋ ํ์ ์๋์ฝ๋ค๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์์ ๋ฉ๋ด๋ฅผ ์ด๊ณ Anaconda Shell์ ์คํํ์ธ์.
์๋์ฝ๋ค(๋๋ ๋ฏธ๋์ฝ๋ค)๊ฐ ์ค์น๋๋ฉด ๋ค์ ๋ช
๋ น์ ์คํํ์ฌ conda
ํจํค์ง ๋๊ตฌ๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธํฉ๋๋ค:
$ conda update -n base -c defaults conda
๋ ธํธ: ์ด๋ค ์ด์ ๋ก ์๋์ฝ๋ค๋ฅผ ์ข์ํ์ง ์๋๋ค๋ฉด ์๋์ผ๋ก ํ์ด์ฌ 3์ ์ค์นํ๊ณ pip๋ฅผ ์ฌ์ฉํด ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ ์ ์์ต๋๋ค(๊ตฌ์ฒด์ ์ธ ๋ด์ฉ์ ๋ํด ์ ์์ง ๋ชปํ๋ค๋ฉด ๊ถ์ฅํ๋ ๋ฐฉ๋ฒ์ด ์๋๋๋ค). ์ผ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์์ง ํ์ด์ฌ 3.8์ด๋ 3.9๋ฅผ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ ํ์ด์ฌ 3.7์ ๊ถ์ฅํฉ๋๋ค.
ํ ์ํ๋ก ํธํ GPU ์นด๋(Compute Capability โฅ 3.5์ธ NVidia ์นด๋)๋ฅผ ๊ฐ์ง๊ณ ์๊ณ ํ ์ํ๋ก์์ ์ฌ์ฉํ๋ ค๋ฉด nvidia.com์์ ํด๋น ์นด๋์ ๋ง๋ ์ต์ ๋๋ผ์ด๋ฒ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ค์นํด์ผ ํฉ๋๋ค. ๋ํ NVidia CUDA์ cuDNN ๋ผ์ด๋ธ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. ๋คํํ ์๋์ฝ๋ค์์ tensorflow-gpu ํจํค์ง๋ฅผ ์ค์นํ ๋ ์๋์ผ๋ก ์ค์น๋ฉ๋๋ค. ํ์ง๋ง ์๋์ฝ๋ค๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์๋์ผ๋ก ์ค์นํด์ผ ํฉ๋๋ค. ์ค์น์ ์ด๋ ค์์ด ์๋ค๋ฉด ํ ์ํ๋ก GPU ์ค์น ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๊ทธ๋ค์ handson-ml2
๋๋ ํ ๋ฆฌ ์์์ ๋ค์ ๋ช
๋ น์ ์คํํ์ธ์. ์ด ๋ช
๋ น์ ๋
ธํธ๋ถ์ ์คํํ๊ธฐ ์ํด ํ์ํ ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํ ์๋ก์ด conda
ํ๊ฒฝ์ ๋ง๋ญ๋๋ค(๊ธฐ๋ณธ์ ์ผ๋ก ์ด ํ๊ฒฝ์ ์ด๋ฆ์ tf2
์ด์ง๋ง -n
์ต์
์ผ๋ก ๋ฐ๊ฟ ์ ์์ต๋๋ค):
$ conda env create -f environment.yml
๊ทธ๋ค์ ์๋ก์ด ํ๊ฒฝ์ ํ์ฑํํฉ๋๋ค:
$ conda activate tf2
๊ฑฐ์ ๋ค ๋์์ต๋๋ค! tf2
์ฝ๋ค ํ๊ฒฝ์ ์ฃผํผํฐ์ ๋ฑ๋กํด์ผ ํฉ๋๋ค. ์ด ํ๋ก์ ํธ์ ๋
ธํธ๋ถ์ ๊ธฐ๋ณธ์ ์ผ๋ก python3
์ด๋ฆ์ ํ๊ฒฝ์ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ ์ด ํ๊ฒฝ์ python3
๋ก ๋ฑ๋กํ๋ ๊ฒ์ด ์ข์ต๋๋ค(๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ๋ฑ๋กํ๊ณ ์ถ๋ค๋ฉด ๋
ธํธ๋ถ์ ์ด ๋๋ง๋ค ์ฃผํผํฐ์์ "Kernel > Change kernel..." ๋ฉ๋ด๋ฅผ ์ ํํด์ผ ํฉ๋๋ค):
$ python3 -m ipykernel install --user --name=python3
์ด์ ๋๋ฌ์ต๋๋ค! ๋ค์ ๋ช ๋ น์ผ๋ก ์ฃผํผํฐ๋ฅผ ์คํํ ์ ์์ต๋๋ค:
$ jupyter notebook
๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ฆฌ๊ณ ์ฃผํผํฐ๊ฐ ํ์ฌ ๋๋ ํ ๋ฆฌ์ ๋ชฉ๋ก์ ๋ณด์ฌ์ค๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ์๋์ผ๋ก ์ด๋ฆฌ์ง ์๋๋ค๋ฉด localhost:8888์ ์ ์ํด ๋ณด์ธ์. index.ipynb
๋ฅผ ํด๋ฆญํ์ฌ ์์ํฉ๋๋ค.
์ถํํฉ๋๋ค! ๋จธ์ ๋ฌ๋์ ๋ฐฐ์ฐ๊ณ ์ค์ตํ ์ค๋น๋ฅผ ๋ง์ณค์ต๋๋ค!
์ฃผํผํฐ ์์ ์ ๋ง์น๋ ค๋ฉด ์ฃผํผํฐ๋ฅผ ์คํํ ํฐ๋ฏธ๋ ์๋์์ Ctrl-C๋ฅผ ํ์ดํํ์ฌ ์ข ๋ฃํ ์ ์์ต๋๋ค. ์ด ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํ ๋๋ง๋ค ํฐ๋ฏธ๋์ ์ด๊ณ ๋ค์์ ์คํํฉ๋๋ค:
$ cd $HOME # ๋๋ ์ค์นํ ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ
$ cd handson-ml2
$ conda activate tf2
$ jupyter notebook
์ด์๋ฅผ ํด๊ฒฐํ๊ณ ์๋ก์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ํ๊ธฐ ์ํด ์ ๊ธฐ์ ์ผ๋ก ๋ ธํธ๋ถ์ ์ ๋ฐ์ดํธํฉ๋๋ค. ๋ฐ๋ผ์ ์ ๋ฐ์ดํธ๋ ํ๋ก์ ํธ๋ฅผ ๋ฐ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด๋ ๊ฒ ํ๋ ค๋ฉด ํฐ๋ฏธ๋์ ์ด๊ณ ๋ค์์ ์คํํ์ธ์:
$ cd $HOME # ๋๋ ์ค์นํ ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ
$ cd handson-ml2 # ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ก ์ด๋
$ git pull
์๋ฌ๊ฐ ๋๋ค๋ฉด ์๋ง๋ ๋
ธํธ๋ถ์ด ์์ ๋์๊ธฐ ๋๋ฌธ์
๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์ git pull
์ ์คํํ๊ธฐ ์ ์ ๋จผ์ ์์ ํ ๋ด์ฉ์ ์ปค๋ฐํด์ผ ํฉ๋๋ค. ์ด ์์
์ ๋ณ๋์ ๋ธ๋์น์์ ์งํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ถฉ๋์ด ๋ฐ์ํ ๊ฒ์
๋๋ค:
$ git checkout -b my_branch # ์ํ๋ ๋ธ๋์น ์ด๋ฆ
$ git add -u
$ git commit -m "์์ ๋ด์ฉ"
$ git checkout master
$ git pull
๊ทธ๋ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์
๋ฐ์ดํธํด ๋ณด์ฃ . ๋จผ์ conda
์์ฒด๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค:
$ conda update -c defaults -n base conda
๊ทธ๋ค์ tf2
ํ๊ฒฝ์ ์ญ์ ํฉ๋๋ค:
$ conda activate base
$ conda env remove -n tf2
๊ทธ๋ฆฌ๊ณ ํ๊ฒฝ์ ์๋ก ๋ง๋ญ๋๋ค:
$ conda env create -f environment.yml
๋ง์ง๋ง์ผ๋ก ํ๊ฒฝ์ ๋ค์ ํ์ฑํ ํ๊ณ ์ฃผํผํฐ๋ฅผ ์์ํฉ๋๋ค:
$ conda activate tf2
$ jupyter notebook