Python & DL

작성일 : 20240904
작성자: 김영수

Miniconda Container 환경 설정

파이썬은 리눅스 시스템에 기본으로 설치되어 있으나, 버전에 따라 확장이나 패키지의 호환성이 크게 달라진다.
일부 초보자들은 시스템에서 사용되는 파이썬 패키지를 이용해 작업하다 패키지들이 꼬여 운영체제 자체가 사용이 불가능해지는 경우도 있다.

이를 해결하기 위해 Container 환경을 이용해 격리된 환경에 개발 도구를 설치할 수 있다.

miniconda를 이용해 간단히 container 환경을 만들어 보자. 

인스톨 파일 다운로드: https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh 

홈 폴더에 miniconda3 폴더를 생성한다.

mkdir -p ~/miniconda3

miniconda3 설치 파일 다운로드

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh

설치 후 설치 스크립트 삭제

bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3

rm ~/miniconda3/miniconda.sh

설치 후 사용하는 쉘 종류에 따라 다음의 명령을 실행하여 초기화를 수행한다. 

~/miniconda3/bin/conda init bash

~/miniconda3/bin/conda init zsh

변경된 bashrc 설정을 다시 불러온다.

source ~/.bashrc

conda 명령어를 이용해 container 환경을 생성한다.

conda create -n test_env python=3.8 # test_env 라는 이름의 container 한경을 python 3.8v 로 생성.

conda activate test_env # test_env 환경으로 전환

정상적으로 작업이 완료되었다면 CLI 프롬프트가 다음과 같이 변했을 것이다.

(base) user@server:~$ -----> (test_env) user@server:~$

앞에 괄호 표시된 base의 의미는 container환경이 아닌 기본 시스템 환경이며, conda activate로 전환하여 괄호 안에 내가 생성한 환경 이름이 있어야 해당 환경으로 정상적으로 전환된 것이다.

container 환경에서 빠져 나오려면 다음과 같이 명령한다.

conda deactivate

이후 필요한 패키지를 설치한다.

(test_env) user@server:~$ conda install [package_name]

(test_env) user@server:~$ conda install numpy pandas matplotlib # 여러 패키지 동시 설치

(test_env) user@server:~$ conda install -c conda-forge [package_name] # conda-forge 채널에서 설치

Jupyter Server 환경 설정

- Miniconda 환경 활성화

conda activate [my_env]

- Jupyter Notebook 설치 (설치되어 있지 않은 경우)

conda install -c conda-forge notebook

- Jupyter Notebook 설정 파일 생성

jupyter notebook --generate-config

- Jupyter Notebook 설정 파일 수정: ~/.jupyter/jupyter_notebook_config.py의 내용을 아래와 같이 수정한다.

c.NotebookApp.notebook_dir = '~/WORK_PATH' # 작업 경로 입력

c.NotebookApp.ip = '0.0.0.0' # IP입력

c.NotebookApp.open_browser = False # jupyter 시작시 자동으로 웹브라우저 실행 비활성화

c.NotebookApp.port = 8888 # 적절한 포트번호 입력

- Jupyter Notebook 서버 실행

jupyter notebook

Jupyter Server의 부팅시 자동실행

부팅시마다 앞서 설정해둔 jupyter server가 자동실행되도록 systemd 서비스를 설정한다.

- 서비스 파일 생성: /etc/systemd/system/jupyter.service (sudo 권한 필요)

sudo vi /etc/systemd/system/jupyter.service

- 서비스 파일 내용 작성

아래 내용을 서비스 파일에 추가한다. User와 Group은 Jupyter 서버를 실행할 사용자와 그룹으로 설정한다.

[Unit]

Description=Jupyter Notebook


[Service]

Type=simple

PIDFile=/run/jupyter.pid

ExecStart=/home/[your_username]/miniconda3/envs/[my_env]/bin/jupyter-notebook --config=/home/[your_username]/.jupyter/jupyter_notebook_config.py

User=[your_username]

Group=[your_group]

WorkingDirectory=/home/[your_username]/DL

Restart=always

RestartSec=10


[Install]

WantedBy=multi-user.target

- 작성한 서비스 파일을 저장 후 종료한다.

- 서비스 리로드: systemd 데몬을 리로드하여 새로운 서비스 리스트를 업데이트 한다.

sudo systemctl daemon-reload

- 서비스 시작 및 활성화: Jupyter 서비스를 시작하고, 부팅 시 자동으로 시작되도록 설정 한다.

sudo systemctl start jupyter

sudo systemctl enable jupyter

CUDA-toolkit과 PyTorch 설치

CUDA는 nvidia에서 배포하는 GPU기반 범용컴퓨팅을 지원하는 라이브러리이다. 초창기에는 많은 코어수를 강점으로 고성능 컴퓨팅을 강점으로 두고 있었으나 최근 인공지능분야의 발전에 따라 GPU기반으로 기계학습, 심층학습등의 알고리즘을 구동하게 되었다.

CUDA toolkit은 이런 CUDA를 활용할 수 있도록  각종 라이브러리와 도구들을 통합해서 배포하는 것으로, CUDA 개발환경에 필요한 대부분의 도구를 포함하고 있다.

Pytorch는 구 facebook AI research lab 에서 개발한 파이썬 기반 딥러닝 프레임워크이다. 현재는 리눅스재단의 일부인 pytorch 재단에서 맡아서 관리되고 있으며 주로 머신러닝 및 딥러닝 모델의 연구와 개발에 사용된다.


CUDA 설치

CUDA를 설치하기 전에 자신의 GPU가 nVidia GPU인지를 확인해야 한다.
현재 pytorch 2.4(작성시점의 stable version)가 지원하는 컴퓨팅 디바이스는 AMD Radeon 일부 장치와, nVidia GPU 그리고 CPU이다.
이 문서에서는 nVidia GPU 기반으로 작성한다.

먼저 https://pytorch.org/get-started/locally  에 접속하여 아래 화면을 확인한다.

현재 Pytorch 버전에서 사용 가능한 cuda 버전이 제한되어 있으니 가능한 cuda 버전의 설치가 필요하다. 여기선 11.8을 기준으로 설치하겠다.
*** CUDA toolkit은 상위 버전이 하위 버전에 대한 호환성을 가지고 있지만, 왜 인지 잘 동작하지 않을 때가 있다. 따라서 마음 편하게 pytorch에서 공식지원하는 버전을 사용하는 것을 권장한다.
*** CDUA toolkit은 또한 GPU driver 버전에 따라 사용 가능한 버전이 다르다. 따라서 본인의 시스템에 설치된 GPU driver와 CUDA toolkit의 호환성도 확인이 필요하다. 다음 링크를 통해 driver버전과 CUDA의 호환성을 확인할 수 있다: CUDA 12.6 Update 1 Release Notes (nvidia.com) 

CUDA Toolkit Archive | NVIDIA Developer 의 링크로 접속하여 설치하고자 하는 CUDA 버전을 선택한다.

운영체제, 아키텍쳐, 배포본, 배포본 버전 등을 적절히 선택하면 아래에 다음과 같이 명령어를 띄워준다.

명령어 대로 진행하여 CUDA 툴킷을 설치한다. 이때 대부분은 드라이버가 같이 설치된다.
드라이버를 따로 설치하지 않은 경우 그대로 설치하고, 드라이버를 미리 설치해 놓은 경우 옵션에서 드라이버 설치를 제외한다. 

설치가 끝나면 .bashrc 파일을 열어 아래의 내용이 제대로 입력되어있는지 확인한다.
아래 내용이 없는 경우 입력한다.
vi ~/.bashrc

export CUDA_HOME=/usr/local/cuda

export PATH=${CUDA_HOME}/bin:${PATH}

export LD_LIBRARY_PATH=${CUDA_HOME}/lib64:$LD_LIBRARY_PATH

설정이 제대로 되었으면 source ~/.bashrc 명령을 시행하고 nvcc -V 가 실행되는지 확인한다.

Pytorch 설치

다시 앞으로 돌아가 다음의 화면을 보자.

요구하는 파이썬 버전은 3.8이상 이므로 miniconda를 이용해 새로운 container 환경을 만든다. 여기서는 python 3.8로 작성한다.

conda create -n torch python=3.8 

conda activate torch

위의 이미지와 같이 pytorch 빌드를 자신의 환경에 맞도록 선택하여 아래 명령어를 실행한다.

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

설치가 끝났다면 python3 명령을 실행해서 python 인터프리터 모드로 들어가 다음의 명령을 실행한다.

>>> import torch

>>> print(torch.cuda.is_available())

True

여기서 위와같이 true가 출력되면 cuda 기반으로 pytorch 사용이 가능하다는 뜻이다.
이를 통해 pytorch와 nvidia gpu를 통한 딥러닝 환경 사용이 가능하다.