์ƒˆ์†Œ์‹

IN DEPTH CAKE/Coding-WIKI

[python] Anaconda ํ™˜๊ฒฝ yamlํŒŒ์ผ export ๋ฐ import (ํ™˜๊ฒฝ ์ƒ์„ฑ create, ํ™œ์„ฑํ™” activate ๋“ฑ)

  • -
๋ฐ˜์‘ํ˜•

 

 

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

 

 

 

 

๋ โ—ผ๏ธŽ

๋ฐ˜์‘ํ˜•
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

# ๋กœ๋”ฉ ํ™”๋ฉด ๋™์ž‘ ์ฝ”๋“œ(Code) ์„ค์ •ํ•˜๊ธฐ