본문으로 건너뛰기

GPU에서 Jupyter Notebook 환경 구성

카카오클라우드에서 Jupyter Notebook을 구축하는 실습을 진행합니다.

기본 정보

시나리오 소개

이 시나리오에서는 카카오클라우드의 GPU 서비스를 활용해 Jupyter Notebook을 설치 및 설정하는 과정을 다룹니다. Jupyter Notebook은 Python을 사용하여 데이터 분석, 머신러닝 모델 학습, 시각화 등의 작업을 통합적으로 수행할 수 있는 웹 기반 오픈소스 도구입니다. 이를 GPU 환경과 결합하면 복잡한 데이터 처리 및 대규모 연산 작업을 빠르고 효율적으로 수행할 수 있습니다.

주요 내용은 아래와 같습니다.

  • NVIDIA GPU 환경 설정 및 드라이버 설치
  • Jupyter Notebook 설치 및 설정
  • 데이터 분석 및 머신러닝 작업에 필요한 라이브러리 설치

시작하기 전에

사전 작업으로 VPC와 서브넷, 보안 그룹을 설정합니다.

1. VPC와 서브넷 생성

인스턴스를 생성하기 전, 인스턴스가 생성될 VPC 및 서브넷을 생성해야 합니다. VPC와 서브넷이 없다면, VPC 생성, 서브넷 생성 문서를 참고하여 VPC 및 서브넷을 생성합니다.

2. 보안 그룹 설정

보안 그룹 생성 문서를 참고하여 보안 그룹을 생성합니다. GPU 인스턴스의 8080 포트에 접근할 수 있도록 보안 그룹의 인바운드 규칙을 아래와 같이 설정합니다.

CIDR프로토콜포트 번호정책 설명 (선택)
{사용자 퍼블릭 IP}/32TCP     8080     Jupyter Notebook
나의 퍼블릭 IP 확인하기

다음 버튼을 클릭하면 현재 사용 중인 나의 퍼블릭 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 환경에서 사용할 프로그래밍 언어와 패키지 관리 도구를 설정합니다.

  1. 다음 명령어를 이용하여 Python 3.8 버전을 설치하고, 설치된 버전을 확인합니다.

    # python 3.8 설치
    apt-get update -y
    apt-get install python3.8 -y
    python3 --version
  2. Jupyter Notebook의 설치 및 환경 관리를 위해 Anaconda를 사용합니다. 먼저 Anaconda 설치 파일을 다운로드합니다.

    wget https://repo.anaconda.com/archive/Anaconda3-2022.05-Linux-x86_64.sh
  3. 다운로드한 파일을 실행하여 Anaconda를 사용자의 VM에 설치합니다.

    sh Anaconda3-2022.05-Linux-x86_64.sh
  4. 계속 설치를 진행하기 위하여 Enter를 입력합니다.

    # In order to continue the installation process, please review the license
    # agreement.
    # Please, press ENTER to continue
    # >>> ## 'Enter' "키를 입력합니다" ##
  5. Anaconda를 설치하기 위해서 EULA 등 라이선스에 동의합니다. 화면의 내용을 확인 후, q 키를 입력하여 다음 절차로 넘어갈 수 있습니다.

    # ==================================================
    # End User License Agreement - Anaconda Distribution
    # ==================================================
    #
    # Copyright 2015-2022, Anaconda, Inc.
    # ...
    # --More--
    # >>> ## 'q' "키를 입력합니다." ##
  6. EULA 라이선스에 동의한다면 yes를 입력합니다.

    # Do you accept the license terms? [yes|no]
    # [no] >>> ## 'yes' "를 입력합니다" ##
  7. Enter 키를 입력하여 설치를 시작합니다.

    # - Press ENTER to confirm the location
    # - Press CTRL-C to abort the installation
    # - Or specify a different location below
    #
    # [/root/anaconda3] >>> ## 'Enter' "키를 입력합니다" ##
  8. 설치가 성공적으로 끝나면, 아래와 같이 환경변수를 설정합니다. conda 명령어를 이용하여 정상 설치를 확인합니다.

    export PATH=~/anaconda3/bin:$PATH 

    # 아래로 설치되었는지 확인
    conda help

Step 3. Jupyter Notebook 설치 및 실행

Jupyter Notebook을 설치하고 접속을 위한 비밀번호 설정, 포트 및 IP 구성 등을 완료합니다. 이후 데이터 분석 및 머신러닝 작업에 필요한 필수 라이브러리를 설치합니다.

  1. Jupyter Notebook을 설치하고 설정 파일을 생성합니다.

    conda install jupyter-notebook
    jupyter-notebook --generate-config
  2. 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'
  3. 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
  4. 미리 복사 및 저장한 암호화된 문자열을 이용하여 Jupyter Notebook의 설정 파일에 비밀번호를 작성합니다.

    sed -i "s|^c\.NotebookApp\.password =.*$|c.NotebookApp.password = '${ENCRYPTED_PW}'|g" ~/.jupyter/jupyter_notebook_config.py
    파라미터유형필수 여부설명
    ENCRYPTED_PWString필수Jupyter Notebook에 접속할 암호화된 비밀번호
    - Out[2] 뒤에 오는 값
  5. 암호화된 비밀번호가 제대로 입력되었는지 확인합니다.

    # 이전에 환경변수로 지정한 문자열이 출력되는지 확인합니다.
    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'
  6. 설정 완료 후 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
  7. 사용할 필수 라이브러리를 설치합니다.

    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
  8. 예제가 작성된 파일을 다운로드합니다.

    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 인스턴스에서 제공된 코드가 정상적으로 실행되는지 확인합니다.

  1. 생성된 Jupyter Notebook 프로세스를 확인한 후, 브라우저에서 ${GPU_PUBLIC_IP}:8080/login으로 접속합니다.

  2. 설정한 비밀번호를 입력하여 접속합니다.

    접속 확인

  3. 비밀번호를 입력하면 Jupyter Notebook 작업 디렉터리 페이지에 접속할 수 있습니다. 다운로드한 handson-on-test.ipynb 파일에 접근합니다.

    Jupyter Notebook 작업 디렉터리 페이지

  4. 예제 코드로 “Hello kakaocloud!”를 실행하여 결과를 확인합니다.

    jupyter-실행 결과 확인