GPU에서 Jupyter Notebook 환경 구성
카카오클라우드에서 Jupyter Notebook을 구축하는 실습을 진행합니다.
- 예상 소요 시간: 20분
- 사용자 환경
- 권장 운영 체제: MacOS, Ubuntu
- Region: kr-central-2
- 사전 준비 사항
- 참고 문서
시나리오 소개
이 시나리오에서는 카카오클라우드의 GPU 서비스를 활용해 Jupyter Notebook을 설치 및 설정하는 과정을 다룹니다. Jupyter Notebook은 Python을 사용하여 데이터 분석, 머신러닝 모델 학습, 시각화 등의 작업을 통합적으로 수행할 수 있는 웹 기반 오픈소스 도구입니다. 이를 GPU 환경과 결합하면 복잡한 데이터 처리 및 대규모 연산 작업을 빠르고 효율적으로 수행할 수 있습니다.
주요 내용은 아래와 같습니다.
- NVIDIA GPU 환경 설정 및 드라이버 설치
- Jupyter Notebook 설치 및 설정
- 데이터 분석 및 머신러닝 작업에 필요한 라이브러리 설치
시작하기 전에
사전 작업으로 VPC와 서브넷, 보안 그룹을 설정합니다.
1. VPC와 서브넷 생성
인스턴스를 생성하기 전, 인스턴스가 생성될 VPC 및 서브넷을 생성해야 합니다. VPC와 서브넷이 없다면, VPC 생성, 서브넷 생성 문서를 참고하여 VPC 및 서브넷을 생성합니다.
2. 보안 그룹 설정
보안 그룹 생성 문서를 참고하여 보안 그룹을 생성합니다. GPU 인스턴스의 8080
포트에 접근할 수 있도록 보안 그룹의 인바운드 규칙을 아래와 같이 설정합니다.
CIDR | 프로토콜 | 포트 번호 | 정책 설명 (선택) |
---|---|---|---|
{사용자 퍼블릭 IP}/32 | TCP | 8080 | Jupyter Notebook |
다음 버튼을 클릭하면 현재 사용 중인 나의 퍼블릭 IP를 확인할 수 있습니다.
시작하기
본격적인 Jupyter Notebook 구축을 위한 세부 작업은 다음과 같습니다.
Step 1. NVIDIA GPU 환경 설정
NVIDIA GPU 환경 설정 문서를 참고하여 카카오클라우드 GPU 인스턴스를 생성하고, 필요한 NVIDIA 드라이버와 CUDA, cuDNN 라이브러리를 설치하고 설정합니다. 이는 Jupyter Notebook 환경을 구성하기 위한 기본적인 설정입니다.
Step 2. Python 및 Anaconda 설치
Python 3.8과 Anaconda를 설치하여 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을 설치하고 접속을 위한 비밀번호 설정, 포트 및 IP 구성 등을 완료합니다. 이후 데이터 분석 및 머신러닝 작업에 필요한 필수 라이브러리를 설치합니다.
-
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 설정 파일에서 접근 IP와 포트 등을 작성합니다. 아래
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 인스턴스에서 제공된 코드가 정상적으로 실행되는지 확인합니다.
-
생성된 Jupyter Notebook 프로세스를 확인한 후, 브라우저에서
${GPU_PUBLIC_IP}:8080/login
으로 접속합니다. -
설정한 비밀번호를 입력하여 접속합니다.
-
비밀번호를 입력하면 Jupyter Notebook 작업 디렉터리 페이지에 접속할 수 있습니다. 다운로드한 handson-on-test.ipynb 파일에 접근합니다.
-
예제 코드로 “Hello kakaocloud!”를 실행하여 결과를 확인합니다.