2️⃣ 슈퍼컴퓨터 활용 팁공통 Conda 의 활용 소개 슈퍼컴퓨팅인프라센터 2019. 4. 30. 09:36
아나콘다(Anaconda)는 PYTHON 과 R 프로그래밍 언어로 된 과학 컴퓨팅(데이터 과학, 기계 학습 응용 프로그램, 대규모 데이터 처리, 예측 분석 등)분야의 패키지들의 모음을 제공하는 배포판이다.
Anaconda 배포판은 1,200 만 명이 넘는 사용자가 사용하며 Windows, Linux 및 MacOS에 적합한 1400 가지 이상의 인기있는 데이터 과학 패키지를 포함한다.
Anaconda를 설치하기 위해서는 https://www.anaconda.com 웹사이트에서 자신의 OS에 맞는 배포판을 다운받아 설치하면 된다.
(예) Windows, MacOS, Linux
현재 Anaconda 는 Python 3.7 기반의 버전과 Python 2.7 기반의 버전을 제공한다.
conda 는 아나콘다에서 패키지 버전 관리를 위해 제공되는 어플리케이션이다.
Python 사용자들이 패키지 설치 시 가장 어려움을 겪는 의존성 문제를 conda 를 활용함으로써 쉽게 해결할 수 있다.
본 문서는 KISTI 시스템에서 Python 사용자를 위하여 conda 패키지 활용하는 방법을 소개 한다.
소개 페이지의 "/home01/optpar02" 는 테스트 계정 optpar02 의 홈 디렉토리로 자신에 맞는 경로로 적절히 변경해서 사용해야 한다.
가. Conda 의 사용
Miniconda는 https://docs.conda.io/en/latest/miniconda.html 사이트 에서 각 OS 에 맞는 버전을 다운 받을 수 있고, Anaconda 는 https://www.anaconda.com/distribution/#download-section 사이트 에서 각 OS 에 맞는 버전을 다운 받을 수 있으며 라이선스에 대해 확인하고 install 스크립트로 설치를 진행한다.
Remove unused packages and caches.
Modify configuration values in .condarc. This is modeled after the git config command.
Writes to the user .condarc file (/home01/optpar02/.condarc) by default.
Create a new conda environment from a list of specified packages.
Displays a list of available conda commands and their help strings.
Display information about current conda install.
Initialize conda for shell interaction. [Experimental]
Installs a list of packages into a specified conda environment.
List linked packages in a conda environment.
Low-level conda package utility. (EXPERIMENTAL)
Remove a list of packages from a specified conda environment.
Run an executable in a conda environment. [Experimental]
Search for packages and display associated information.
The input is a MatchSpec, a query language for conda packages.
See examples below.
Updates conda packages to the latest compatible version.
나. Conda Environment 생성
conda environment 는 Python 의 독립적인 가상 실행환경을 만들어 패키지들의 버전 관리에 용이 하다.
"conda create -n [ENVIRONMENT]" 을 이용하여 conda environment를 생성 할 수 있다.
기본 값으로 conda path 의 envs 아래 경로에 지정한 environment 이름으로 생성된다.
"--use-local" 옵션을 사용하면 사용자 홈 디렉토리(${HOME}/.conda/envs/[environment_name] )에 생성 된다.
[예제]
Copy [optpar02@login02 ~]$ module load python/3.7.1
[optpar02@login02 ~]$ conda create -n scikit-learn_0.21 --use-local
Collecting package metadata: done
Solving environment: done
## Package Plan ##
environment location: /home01/optpar02/.conda/envs/scikit-learn_0.21
Proceed ([y]/n)? y
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use:
# > conda activate scikit-learn_0.21
#
# To deactivate an active environment, use:
# > conda deactivate
#
[optpar02@login02 ~]$ source activate scikit-learn_0.21
(scikit-learn_0.21) [optpar02@login02 ~]$ ****
/code blo
다. Conda Environment에 패키지 설치 및 확인
conda install [패키지명] 으로 패키지를 설치할 수 있다.
conda 채널에 있는 패키지는 "conda install -c [채널명] [패키지명]" 와 같이 설치 할 수 있다.
위 "2" 항목에서 생성한 conda environment 경로 아래에 패키지 들이 설치 된다.
[예제]
Copy [optpar02@login02 ~]$ module load python/3.7.1
[optpar02@login02 ~]$ source activate scikit-learn_0.21
(scikit-learn_0.21) [optpar02@login02 ~]$ conda install scikit-learn
Collecting package metadata: done
Solving environment: done
## Package Plan ##
environment location: /home01/optpar02/.conda/envs/scikit-learn_0.21
added / updated specs:
- scikit-learn
The following packages will be downloaded:
package | build
---------------------------|-----------------
ca-certificates-2019.1.23 | 0 126 KB
certifi-2019.3.9 | py37_0 155 KB
intel-openmp-2019.3 | 199 886 KB
libedit-3.1.20181209 | hc058e9b_0 188 KB
mkl-2019.3 | 199 203.3 MB
mkl_fft-1.0.10 | py37ha843d7b_0 169 KB
numpy-1.16.2 | py37h7e9f1db_0 49 KB
numpy-base-1.16.2 | py37hde5b4d6_0 4.3 MB
openssl-1.1.1b | h7b6447c_1 4.0 MB
pip-19.0.3 | py37_0 1.8 MB
python-3.7.3 | h0371630_0 36.7 MB
scikit-learn-0.20.3 | py37hd81dba3_0 5.8 MB
scipy-1.2.1 | py37h7c811a0_0 17.7 MB
setuptools-40.8.0 | py37_0 643 KB
sqlite-3.27.2 | h7b6447c_0 1.9 MB
wheel-0.33.1 | py37_0 39 KB
------------------------------------------------------------
Total: 277.6 MB
The following NEW packages will be INSTALLED:
blas pkgs/main/linux-64::blas-1.0-mkl
ca-certificates pkgs/main/linux-64::ca-certificates-2019.1.23-0
certifi pkgs/main/linux-64::certifi-2019.3.9-py37_0
intel-openmp pkgs/main/linux-64::intel-openmp-2019.3-199
libedit pkgs/main/linux-64::libedit-3.1.20181209-hc058e9b_0
libffi pkgs/main/linux-64::libffi-3.2.1-hd88cf55_4
libgcc-ng pkgs/main/linux-64::libgcc-ng-8.2.0-hdf63c60_1
libgfortran-ng pkgs/main/linux-64::libgfortran-ng-7.3.0-hdf63c60_0
libstdcxx-ng pkgs/main/linux-64::libstdcxx-ng-8.2.0-hdf63c60_1
mkl pkgs/main/linux-64::mkl-2019.3-199
mkl_fft pkgs/main/linux-64::mkl_fft-1.0.10-py37ha843d7b_0
mkl_random pkgs/main/linux-64::mkl_random-1.0.2-py37hd81dba3_0
ncurses pkgs/main/linux-64::ncurses-6.1-he6710b0_1
numpy pkgs/main/linux-64::numpy-1.16.2-py37h7e9f1db_0
numpy-base pkgs/main/linux-64::numpy-base-1.16.2-py37hde5b4d6_0
openssl pkgs/main/linux-64::openssl-1.1.1b-h7b6447c_1
pip pkgs/main/linux-64::pip-19.0.3-py37_0
python pkgs/main/linux-64::python-3.7.3-h0371630_0
readline pkgs/main/linux-64::readline-7.0-h7b6447c_5
scikit-learn pkgs/main/linux-64::scikit-learn-0.20.3-py37hd81dba3_0
scipy pkgs/main/linux-64::scipy-1.2.1-py37h7c811a0_0
setuptools pkgs/main/linux-64::setuptools-40.8.0-py37_0
sqlite pkgs/main/linux-64::sqlite-3.27.2-h7b6447c_0
tk pkgs/main/linux-64::tk-8.6.8-hbc83047_0
wheel pkgs/main/linux-64::wheel-0.33.1-py37_0
xz pkgs/main/linux-64::xz-5.2.4-h14c3975_4
zlib pkgs/main/linux-64::zlib-1.2.11-h7b6447c_3
Proceed ([y]/n)? y
Downloading and Extracting Packages
setuptools-40.8.0 | 643 KB | ##################################### | 100%
mkl_fft-1.0.10 | 169 KB | ##################################### | 100%
pip-19.0.3 | 1.8 MB | ##################################### | 100%
mkl-2019.3 | 203.3 MB | ##################################### | 100%
ca-certificates-2019 | 126 KB | ##################################### | 100%
sqlite-3.27.2 | 1.9 MB | ##################################### | 100%
wheel-0.33.1 | 39 KB | ##################################### | 100%
python-3.7.3 | 36.7 MB | ##################################### | 100%
intel-openmp-2019.3 | 886 KB | ##################################### | 100%
libedit-3.1.20181209 | 188 KB | ##################################### | 100%
numpy-base-1.16.2 | 4.3 MB | ##################################### | 100%
scipy-1.2.1 | 17.7 MB | ##################################### | 100%
scikit-learn-0.20.3 | 5.8 MB | ##################################### | 100%
numpy-1.16.2 | 49 KB | ##################################### | 100%
certifi-2019.3.9 | 155 KB | ##################################### | 100%
openssl-1.1.1b | 4.0 MB | ##################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
(scikit-learn_0.21) [optpar02@login02 ~]$ python -c "import sklearn"
(scikit-learn_0.21) [optpar02@login02 ~]$
라. Conda Environment 목록 확인
"conda-env list" 또는 "conda env list" 를 이용하여 목록을 확인 할 수 있다.
[예제]
Copy (scikit-learn_0.21) [optpar02@login02 ~]$ conda env list
# conda environments:
#
base /apps/applications/PYTHON/3.7
scikit-learn_0.21 * /home01/optpar02/.conda/envs/scikit-learn_0.21
[optpar02@login02 ~]$
마. Conda Environment 삭제
"conda-env remove -n [ENVIRONMENT]" 또는 "conda env remove -n [ENVIRONMENT]" 를 이용하여 삭제 할 수 있다.
[예제]
Copy [optpar02@login02 ~]$ module load python/3.7.1
[optpar02@login02 ~]$ conda env remove -n scikit-learn_0.21
Remove all packages in environment /home01/optpar02/.conda/envs/scikit-learn_0.21:
[optpar02@login02 ~]$ conda env list
# conda environments:
#
base * /apps/applications/PYTHON/3.7
[optpar02@login02 ~]$
바. Conda Environment 내보내기
- 내보내기 전 conda-pack 패키지 필요
(참고) https://conda.github.io/conda-pack
"conda pack -n [ENVIRONMENT] -o [파일명]" 을 이용하여 conda environment 를 다른 시스템에서 활용할 수 있다.
(예) 외부 인터넷이 연결되지 않는 경우, 다른 시스템에서 동일한 conda 환경을 이용하는 경우
[예제]
Copy [optpar02@login02 ~]$ module load python/3.7.1
[optpar02@login02 ~]$ source activate tensorflow_1.12
(tensorflow_1.12) [optpar02@login02 ~]$ conda install -c conda-forge -n tensorflow_1.12
(tensorflow_1.12) [optpar02@login02 ~]$ conda pack -n tensorflow_1.12 -o conda_tensorflow_1.12.tar.gz
Collecting packages...
Packing environment at '/home01/optpar02/.conda/envs/tensorflow_1.12' to 'conda_tensorflow_1.12.tar.gz'
[########################################] | 100% Completed | 4min 18.8s
(tensorflow_1.12) [optpar02@login02 ~]$ ls -l conda_tensorflow_1.12.tar.gz
-rw-------. 1 optpar02 in0162 1459826406 Mar 28 15:03 conda_tensorflow_1.12.tar.gz
(tensorflow_1.12) [optpar02@login02 ~]$
사. Conda Environment 가져오기
conda pack 을 이용하여 생성했던 conda environment 를 아래 [예제]와 같이 가져와 환경설정 후 사용 가능.
[예제]
Copy [optpar02@login02 ~]$ module load python/3.7.1
[optpar02@login02 ~]$ conda env list
# conda environments:
#
base * /apps/applications/PYTHON/3.7
[optpar02@login02 ~]$ mkdir -p $HOME/.conda/envs/tensorflow_1.12
[optpar02@login02 ~]$ tar xvzf conda_tensorflow_1.12.tar.gz -C $HOME/.conda/envs/tensorflow_1.12
[optpar02@login02 ~]$ cd $HOME/.conda/envs/tensorflow_1.12/bin
[optpar02@login02 ~]$ ./conda-unpack
[optpar02@login02 ~]$ conda env list
# conda environments:
#
base * /apps/applications/PYTHON/3.7
tensorflow_1.12 /home01/optpar02/.conda/envs/tensorflow_1.12
[optpar02@login02 ~]$ source activate tensorflow_1.12