Skip to content

Latest commit

ย 

History

History
94 lines (56 loc) ยท 6.81 KB

INSTALL.md

File metadata and controls

94 lines (56 loc) ยท 6.81 KB

์„ค์น˜

์ €์žฅ์†Œ ๋‹ค์šด๋กœ๋“œ

์ปดํ“จํ„ฐ์— ์ด ์ €์žฅ์†Œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋จผ์ € 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 ๋“œ๋ผ์ด๋ฒ„์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜

ํ…์„œํ”Œ๋กœ ํ˜ธํ™˜ GPU ์นด๋“œ(Compute Capability โ‰ฅ 3.5์ธ NVidia ์นด๋“œ)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ํ…์„œํ”Œ๋กœ์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด nvidia.com์—์„œ ํ•ด๋‹น ์นด๋“œ์— ๋งž๋Š” ์ตœ์‹  ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ NVidia CUDA์™€ cuDNN ๋ผ์ด๋ธŒ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ ์•„๋‚˜์ฝ˜๋‹ค์—์„œ tensorflow-gpu ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•  ๋•Œ ์ž๋™์œผ๋กœ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•„๋‚˜์ฝ˜๋‹ค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ˆ˜๋™์œผ๋กœ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜์— ์–ด๋ ค์›€์ด ์žˆ๋‹ค๋ฉด ํ…์„œํ”Œ๋กœ GPU ์„ค์น˜ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

tf2 ํ™˜๊ฒฝ ๋งŒ๋“ค๊ธฐ

๊ทธ๋‹ค์Œ 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