Anaconda ๋ python ํจํค์ง ๊ด๋ฆฌ๋ฅผ ์ง์ํ๋ ํ๋ ์์ํฌ์
๋๋ค. Anaconda๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฅ ํฐ ์ฅ์ ์ค์ ํ๋๋, ์ฉ๋์ ๋ง์ถ์ด ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ค๊ณ ๊ทธ ํ๊ฒฝ ๋ด์์๋ง ํจํค์ง ์์กด์ฑ์ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค๋ ์ ์
๋๋ค. ์ด๊ฒ ์ ํฐ ์ฅ์ ์ด ๋๋๋, ์ด ๊ฐ์ ํ๊ฒฝ (environment)๋ง ์ฎ๊ฒจ์ฃผ๋ฉด ํด๋น ์ฝ๋๋ฅผ ๊ทธ๋๋ก ์คํํ ์ ์๊ธฐ ๋๋ฌธ์ด์ฃ . ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ฝ๋ ๋ฐฐํฌ๋ฅผ ๊ฐํธํ๊ฒ ๋ง๋ค์ด์ค๋๋ค. ๊ณต๊ฐ ์ํํธ์จ์ด๋, ๋ด ๋
ผ๋ฌธ์ ๊ตฌํ ์ฝ๋๋ฅผ ๊ณต๊ฐํ๊ณ ์ํ ๋, ๊ฐ๋ฐํ๊ณ ์ํ๋ ์์ฉ์์ํ ์ ์ฉ ํ๊ฒฝ์ ๋ง๋ค๊ณ , ๊ทธ ํ๊ฒฝ์ ๊ทธ๋๋ก ์ค์นํ ์ ์๋๋กํ๋ ์์กด์ฑ ์ ๋ณด๋ง ๋ฐฐํฌํด์ฃผ๋ฉด ๋๊ตฌ๋ ์ง ๋์ผํ ํ๊ฒฝ์ ์ฌํํ ์ ์์ต๋๋ค.
์ค๋์ ๊ฐ์ ํ๊ฒฝ ๊ด๋ฆฌ์ ๊ด๋ จ๋ ๋ช๊ฐ์ง๋ฅผ ๊ฐ๋ตํ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
๋ชฉ์ฐจ
1. conda ํ๊ฒฝ ๋ฆฌ์คํธ ์กฐํ
2. conda ํ๊ฒฝ ์์ฑ
3. conda ํ๊ฒฝ ํ์ฑํ
4. conda๋ฅผ ์ฌ์ฉํ ํจํค์ง ์ค์น
5. ํ์ฌ ํ์ฑํ๋์ด์๋ conda ํ๊ฒฝ export ํ๊ธฐ
6. yaml ํ์ผ๋ก๋ถํฐ conda ํ๊ฒฝ import ํ๊ธฐ
๐งธ conda ํ๊ฒฝ ๋ฆฌ์คํธ ์กฐํ
๊ธฐ๋ณธ์ ์ผ๋ก ์๋์ฝ๋ค๋ฅผ ์ค์นํ ๋, bash ํ์ผ์ anaconda ๋ฅผ ์๋์ผ๋ก ์คํํ๋๋ก ์ค์ ํ๋ ๊ฒ ๋ํดํธ์
๋๋ค. ๊ทธ๋์ ์ผค๋๋ง๋ค (base) ํ๊ฒฝ์ด ์ค์ ๋์ด์๋ ๊ฒ์ ํ์ธํ ์ ์์ฃ . (๋ง์ฝ ์๋ ์ค์ ์ ํ์ง ์์๋ค๋ฉด anaconda ํ๊ฒฝ์ sourceํ๋ ๊ฒ๋ถํฐ ์์ํ์ญ์์ค) ๊ทธ๋ฆฌ๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋์ฝ๋ค ์ค์น ์ ์ค์ ํ ๊ฒฝ๋ก๊ฐ base ํ๊ฒฝ์ด ์์นํ ๊ณณ์ด ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ถ๊ฐ์ ์ผ๋ก ์์ฑํ๋ ํ๊ฒฝ๋ค์ envs ๋ผ๋ ํด๋ ๋ฐ์ ์์ฑ๋๊ณ ๊ฐ ํ๊ฒฝ ๋ณ๋ก ํจํค์ง ๊ด๋ฆฌ๊ฐ ์ํ๋ฉ๋๋ค. ์ด๊ฒ์ฒ๋ผ ํ์ฌ ๋ด Anaconda์ ์ค์น๋์ด์๋ ํ๊ฒฝ ๋ฆฌ์คํธ๋ ๋ค์์ ๋ช
๋ น์ด๋ฅผ ํตํด ์กฐํํ ์ ์์ต๋๋ค.
$ conda env list
์๋ ์ฌ์ง์ ์ ์๋ฒ์ ์ค์น๋์ด์๋ ํ๊ฒฝ๋ค์ ๋ณด์ฌ์ค๋๋ค. ์คํ์์ค๋ฅผ ์คํํ ๋๋ ํ๊ฒฝ์ ๋ง๋ค๊ณ , ์ฐ๊ตฌ๋ฅผ ํ ๋๋ ๊ธฐ๋ณธ base๋ฅผ ํ์ฉํด์ ๊ฐ๊ฐ์ ํจํค์ง๊ด๋ฆฌ ํ๊ฒฝ์ ๋ง๋ค์ด์ค์. ๊ทธ๋์ผ ๋์ค์ ๋ฐฐํฌํ ๋ ํจํค์ง ์๋ฅผ ์ต์ ํํ๊ธฐ ์ข๊ฑฐ๋ ์.
๐งธ conda ํ๊ฒฝ ์์ฑ (from scratch)
$ conda create -n (ํ๊ฒฝ ์ด๋ฆ) python=๋ฒ์
์๋ฅผ ๋ค์ด์, hello๋ผ๋ ํ๊ฒฝ์ python 3.8 ๋ฒ์ ์ผ๋ก ์์ฑํ๋ค๊ณ ํ๋ฉด
$ conda create -n hello python=3.8
๐งธ conda ํ๊ฒฝ ํ์ฑํ
$ conda activate (ํ๊ฒฝ ์ด๋ฆ)
์๋ฅผ ๋ค์ด์, hello๋ผ๋ ํ๊ฒฝ์ ํ์ฑํํ๋ค๊ณ ํ๋ฉด
$ conda activate hello
๊ทธ๋ฆฌ๊ณ ํ์ฌ ํ์ฑํ ๋ python interpreter์ ์ ๋ณด๋ `which python` ๋ช
๋ น์ด๋ฅผ ํตํด ํ์ธํ ์ ์๋ค. (ssh ์ธํฐํ๋ฆฌํฐ ์ค์ ์ conda python ํ๊ฒฝ์ ์ง์ ํด์ฃผ๊ณ ์ถ์ ๋ ํด๋น ๋ช
๋ น์ด๋ฅผ ํตํด ์ป์ด์ง๋ ๊ฒฝ๋ก๋ฅผ ํ์ฉํด์ค ์ ์๋ค.)
๐งธ conda ๋ฅผ ์ฌ์ฉํ ํจํค์ง ์ค์น
์ค๋์ ์๋ก pytorch ์ค์น๋ฅผ ํด๋ณด๋๋กํ๊ฒ ๋ค. ์ค์นํ๊ณ ์ํ๋ ํจํค์ง ์ฌ์ดํธ์ ๋ค์ด๊ฐ์ ๊ด๋ จ ์ค์ ์ ํด์ฃผ๋ฉด ์ด๋ค ๋ช
๋ น์ด๋ฅผ ํตํด ์ค์นํ ์ ์๋ ์ง ์๋ ค์ค๋ค. ์๋ฅผ ๋ค์ด, pytorch stable 2.0.0 ๋ฒ์ ์ linux ํ๊ฒฝ์์ conda ํจํค์ง ๊ด๋ฆฌ์๋ก CUDA 11.8 ๋ฒ์ ์ผ๋ก ์ค์นํ๋ ๋ช
๋ น์ด๋ ์๋์ ๊ฐ์ด ์ค์ ํ์ฌ ์ป์ ์ ์๋ค. conda๋ฅผ ์ฌ์ฉํ ํจํค์ง ์ค์น ๊ธฐ๋ณธ ๋ฌธ๋ฒ
$ conda install ํจํค์ง ๋ช
conda ํ๊ฒฝ์ด activate๋์ด์์ ๋ pip๋ฅผ ํตํด ์ค์น๋๋ ํจํค์ง๋ค๋ ๋ชจ๋ ๊ด๋ฆฌ๋๋ค. ์ด ๋, conda ํ๊ฒฝ์์ ์ง์ ๋ python์ ๋ง๋ ๋ฒ์ ์ pip๊ฐ ํธ์ถ๋๊ธฐ ๋๋ฌธ์, ๋ณ๋์ pip ๊ด๋ฆฌ์์ด๋ ๋ฒ์ ์ ๋ง๋ ํจํค์ง๋ค์ ์ค์นํ ์ ์๋ค.
$ pip install ํจํค์ง ๋ช
๐งธ ํ์ฌ ํ์ฑํ ๋์ด ์๋ conda ํ๊ฒฝ export ํ๊ธฐ
hello๋ผ๋ conda ๊ฐ์ํ๊ฒฝ์ ์์กด์ฑ ์ ๋ณด๋ฅผ yaml ํ์ผ๋ก ์ถ์ถํ๋ค๊ณ ํด๋ณด์. ๋จผ์ , ํด๋น ํ๊ฒฝ์ด ํ์ฑํ ๋์ด์์ด์ผํ๋ค. activate ์ต์
์ ํตํด ๋ด๋ณด๋ด๊ธฐ๋ฅผ ํ ํ๊ฒฝ์ ํ์ฑํ์ํจ๋ค. ๊ทธ ํ env export ๋ช
๋ น์ด๋ฅผ ํตํด ์ํ๋ yaml ํ์ผ๋ก ์์กด์ฑ ์ ๋ณด๋ฅผ ๋ชจ๋ ๋ด๋ณด๋ผ ์ ์๋ค.
(base) $ conda activate hello
(hello) $ conda env export > environment.yaml
๐งธ yaml ํ์ผ๋ก๋ถํฐ conda ํ๊ฒฝ import ํ๊ธฐ
์ฌ์ค ํ์ผ๋ก๋ถํฐ importํ๋ ๊ฒ์ yaml ํ์ผ์ ์ฐธ๊ณ ํด์ ์๋ก์ด ํ๊ฒฝ์ ์์ฑํ๋ ๊ฒ๊ณผ ๊ฐ๋ค.
conda env create --file environment.yaml
๋ โผ๏ธ