GPU에서 Jupyter Notebook 환경 구성
카카오클라우드 GPU 서비스를 이용하여 Jupyter Notebook을 구축하는 실습을 진행합니다.
- 예상 소요 시간: 20분
- 권장 운영 체제: MacOS, Ubuntu
- Region: kr-central-2
- 참고 문서
시작하기 전에
본 문서는 데이터 분석 및 시각화에 유용한 Jupyter Notebook을 카카오클라우드의 고성능 GPU 서비스와 결합하여 구축하는 과정을 설명합니다.
Jupyter Notebook은 Jupyter에서 제작한 Python용 통합 개발 환경 중 하나로 웹 기반 오픈소스 애플리케이션으로, 코드, 설명, 수식, 그래프 등을 쉽게 사용하고, 데이터를 시각화할 수 있어 데이터 분석에 널리 사용됩니다.
Jupyter Notebook을 카카오클라우드의 GPU 환경에 구축함으로써, 데이터 처리와 모델 훈련을 더 빠르게 수행하고, 보다 효율적으로 연구 및 개발 속도를 향상할 수 있습니다.
작업 순서
Step 1. NVIDIA GPU 환경 설정
카카오클라우드 GPU 인스턴스에서 NVIDIA GPU 드라이버와 라이브러리를 설치합니다. 이는 Jupyter Notebook 환경을 구성하기 위한 기본적인 설정입니다.
- NVIDIA GPU 환경 설정 문서를 참고하여 필요한 드라이버와 라이브러리를 설치합니다.
- GPU 인스턴스 호스트의 8080 포트에 접근 가능하도록 Security Group의 인바운드 정책을 설정합니다. 이 단계는 Jupyter Notebook에 원격으로 접속하기 위해 필수적입니다.
- 카카오클라우드 콘솔 > VPC > Security Group 탭으로 이동 후, [인바운드 정책 관리] 버튼을 클릭합니다.
- 인바운드 정책 탭에서 다음의 인바운드 정책을 추가합니다.
- 카카오클라우드 콘솔 > VPC > Security Group 탭으로 이동 후, [인바운드 정책 관리] 버튼을 클릭합니다.
프로토콜 | 패킷 출발지 | 포트 번호 | 정책 설명 (선택) |
---|---|---|---|
TCP | {나의 Public IP}/32 | 8080 | Jupyter Notebook |
-
프라이빗 키 파일이 위치한 경로로 이동합니다.
-
다음 명령어를 실행하여 생성한 인스턴스에 접속합니다.
ssh ubuntu@${GPU_PUBLIC_IP} -i ${PRIVATE_KEY_FILE}
#작업 진행의 편의를 위해 루트 권한으로 접근합니다.
sudo -i파라미터 유형 필수 여부 설명 GPU_PUBLIC_IP String 필수 GPU 환경에서 접속할 인스턴스의 Public IP 주소 PRIVATE_KEY_FILE String 필수 프라이빗 키 파일 -
다음 명령어를 실행하여 NVIDIA 드라이버 및 환경 설치를 확인합니다.
nvcc -V
# nvcc: NVIDIA (R) Cuda compiler driver ...
Step 2. Jupyter Notebook 환경 구성
-
다음 명령어를 이용하여 Python 3.8 버전을 설치하고, 설치된 버전을 확인합니다.
# python 3.8 설치
apt-get update -y
apt-get install python3.8 -y
python3 --version -
Jupyter Notebook의 설치 및 환경 관리를 위해 Anaconda를 사용합니다. 먼저 Anaconda 설치 파일을 다운로드합니다.
wget https://repo.anaconda.com/archive/Anaconda3-2022.05-Linux-x86_64.sh
-
다운로드한 파일을 실행하여 Anaconda를 사용자의 VM에 설치합니다.
sh Anaconda3-2022.05-Linux-x86_64.sh
-
계속 설치를 진행하기 위하여 Enter를 입력합니다.
# In order to continue the installation process, please review the license
# agreement.
# Please, press ENTER to continue
# >>> ## 'Enter' "키를 입력합니다" ## -
Anaconda를 설치하기 위해서 EULA 등 라이선스에 동의합니다. 화면의 내용을 확인 후,
q
키를 입력하여 다음 절차로 넘어갈 수 있습니다.# ==================================================
# End User License Agreement - Anaconda Distribution
# ==================================================
#
# Copyright 2015-2022, Anaconda, Inc.
# ...
# --More--
# >>> ## 'q' "키를 입력합니다." ## -
EULA 라이선스에 동의한다면
yes
를 입력합니다.# Do you accept the license terms? [yes|no]
# [no] >>> ## 'yes' "를 입력합니다" ## -
Enter 키를 입력하여 설치를 시작합니다.
# - Press ENTER to confirm the location
# - Press CTRL-C to abort the installation
# - Or specify a different location below
#
# [/root/anaconda3] >>> ## 'Enter' "키를 입력합니다" ## -
설치가 성공적으로 끝나면, 아래와 같이 환경변수를 설정합니다.
conda
명령어를 이용하여 정상 설치를 확인합니다.export PATH=~/anaconda3/bin:$PATH
# 아래로 설치되었는지 확인
conda help
Step 3. Jupyter Notebook 설치 및 실행
-
Jupyter Notebook을 설치하고 설정 파일을 생성합니다.
conda install jupyter-notebook
jupyter-notebook --generate-config -
printf
명령어를 통해 Jupyter Notebook 접속에 사용할 비밀번호를 암호화합니다.printf "from notebook.auth import security\nsecurity.passwd()\n" | ipython
# Enter password: ${원하는 비밀번호 입력}
# Verify password: ${이전에 입력한 비밀번호 입력}비밀번호로 test를 입력하는 예제로, Out[2]: 뒤로 암호화된 비밀번호의 문자열이 출력됩니다. 이 값을 따로 복사해 저장합니다.
In [2]: Enter password: test
Verify password: test
Out[2]: 'argon2:$argon2id$v=19$m=10240,t=10,p=8$oBt2YGaflk+sL3Lq60urcg$4Vc/yVxAR1x43bzlEDNy/Viu+U0kfOBDXbnsIdquEeI' -
Jupyter Notebook 설정 파일에서 접근 아이피와 포트 등을 작성합니다. 아래
sed
명령어를 통해 작업을 수행할 수 있습니다.sed -i "s/$(cat ~/.jupyter/jupyter_notebook_config.py \
| grep c.NotebookApp.ip)/c.NotebookApp.ip = '0.0.0.0'/g" \
~/.jupyter/jupyter_notebook_config.py
sed -i "s/$(cat ~/.jupyter/jupyter_notebook_config.py \
| grep "c.NotebookApp.port =")/c.NotebookApp.port = 8080/g" \
~/.jupyter/jupyter_notebook_config.py -
미리 복사 및 저장한 암호화된 문자열을 이용하여 Jupyter Notebook의 설정 파일에 비밀번호를 작성합니다.
sed -i "s|^c\.NotebookApp\.password =.*$|c.NotebookApp.password = '${ENCRYPTED_PW}'|g" ~/.jupyter/jupyter_notebook_config.py
파라미터 유형 필수 여부 설명 ENCRYPTED_PW String 필수 Jupyter Notebook에 접속할 암호화된 비밀번호
-Out[2]
뒤에 오는 값
-
암호화된 비밀번호가 제대로 입력되었는지 확인합니다.
# 이전에 환경변수로 지정한 문자열이 출력되는지 확인합니다.
cat ~/.jupyter/jupyter_notebook_config.py | grep "c.NotebookApp.password ="
# 결과 예시
c.NotebookApp.password = 'argon2:$argon2id$v=19$m=10240,t=10,p=8$oBt2YGaflk+sL3Lq60urcgs4Vc/yVxAR1x43bzlEDNy/Viu+U0kfOBDXbnsIdquEeI' -
설정 완료 후 Jupyter Notebook을
8080
포트에서 실행합니다.mkdir -p ~/jupyter
nohup jupyter notebook --allow-root > ~/jupyter/jupyter.out 2>&1 & echo $! > ~/jupyter/jupyter.pid
# jupyter notebook이 열려있는지 확인합니다.
sleep 3
curl http://localhost:8080/login -
사용할 라이브러리를 설치합니다.
pip3 install numpy
pip3 install pandas
pip3 install matplotlib
pip3 install seaborn
pip3 install scikit-learn
pip3 install tensorflow==2.5.0 --use-deprecated=legacy-resolver
pip3 install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 \
--extra-index-url https://download.pytorch.org/whl/cu113 -
예제가 작성된 파일을 다운로드합니다.
git clone -b jupyter-notebook https://github.com/kakaoenterprise/kc-handson-config.git
mv ./kc-handson-config/hands-on-test.ipynb ./hands-on-test.ipynb
Step 4. Jupyter Notebook 환경 접속
-
생성된 Jupyter Notebook 프로세스를 확인한 후, 브라우저에서
${GPU_PUBLIC_IP}:8080/login
으로 접속합니다. -
설정한 비밀번호를 입력하여 접속합니다.
-
비밀번호를 입력하면 Jupyter Notebook 작업 디렉터리 페이지에 접속할 수 있습니다. 다운로드한 handson-on-test.ipynb 파일에 접근합니다.
-
예제 코드로 “Hello kakaocloud!”를 실행하여 결과를 확인합니다.