본문으로 건너뛰기

GPU에서 Jupyter Notebook 환경 구성

카카오클라우드 GPU 인스턴스에서 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에서 GPU를 사용하기 위한 기본 설정입니다.

Step 2. Python 및 Anaconda 설치​

Python 3.8과 Anaconda를 설치하여 Jupyter Notebook 환경에서 사용할 프로그래밍 언어와 패키지 관리 도구를 설정합니다.

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

    # python 3.8 설치
    sudo apt-get update -y
    sudo 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 명령어를 이용하여 정상 설치를 확인합니다.

    # 설치 종료 후 conda 초기화 여부 질문
    Do you wish the installer to initialize Anaconda3
    by running conda init? [yes|no]
    [no] >>> ## 'yes'를 입력합니다 ##
    # 터미널 환경 재적용
    source ~/.bashrc
    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'
    ENCRYPTED_PW

    위 예시에서 Out[2]: 뒤에 출력되는 암호화된 문자열을 의미합니다. 이 값을 설정 파일의 c.NotebookApp.password 항목에 입력합니다.

  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의 설정 파일에 비밀번호를 작성합니다.

    # vi 편집기로 설정 파일을 열어 수동 설정 (자동 sed 명령어 대신 권장)
    vi ~/.jupyter/jupyter_notebook_config.py
    # 아래 라인의 주석(#)을 제거하고, 암호화된 비밀번호를 입력합니다.
    c.NotebookApp.password = '복사한_암호화_비밀번호'
  5. 암호화된 비밀번호가 제대로 입력되었는지 확인합니다.

    # 비밀번호 설정 확인
    cat ~/.jupyter/jupyter_notebook_config.py | grep "c.NotebookApp.password ="
    # 출력 예시
    c.NotebookApp.password = 'argon2:$argon2id$...'
  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
    정보

    TensorFlow 2.5는 cuDNN 8.x 버전과 호환됩니다. cuDNN 9.x 환경에서는 GPU가 정상 인식되지 않을 수 있으므로, NVIDIA cuDNN 아카이브에서 버전 8을 설치해야 합니다.

  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 작업 디렉터리 페이지에 접속할 수 있습니다. 다운로드한 hands-on-test.ipynb 파일에 접근합니다.

    Jupyter Notebook 작업 디렉터리 페이지

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

    jupyter-실행 결과 확인