🔥알림🔥
① 테디노트 유튜브 - 구경하러 가기!
② LangChain 한국어 튜토리얼 바로가기 👀
③ 랭체인 노트 무료 전자책(wikidocs) 바로가기 🙌

3 분 소요

최신 버전의 GPU를 활용한 학습이 가능한 딥러닝 도커를 구성하여 배포하게 되었습니다. (배포날짜는 2022년 07월 20일 기준입니다)

tensorflow/tensorflow 도커의 2.9.1-gpu-jupyter 도커 이미지를 확장하여 구성하였습니다.

tensorflow 에서 공개한 2.9.1 gpu-jupyter 도커 이미지는 최신 버전(2.9.1) 의 tensorflow 를 설치 및 활용 가능하지만, pytorch, scikit-learn 그리고 한글 자연어 처리 패키지가 누락되었기 때문에 이를 추가하였습니다. 뿐만아니라, kakao mirror 서버를 추가하여 빠른 패키지 설치가 가능도록 하였습니다.

또한, lightgbmxgboostGPU 학습이 가능한 라이브러리로 설치하였습니다.

deepko를 만들게 된 계기는 안정적으로 업데이트 되고 있는 Jupyter GPU 도커에 기반하여 한글 폰트, 한글 자연어처리 패키지(konlpy), 형태소 분석기(mecab), Timezone 등의 설정을 추가하여 별도의 한글 관련 패키지와 설정을 해줘야 하는 번거로움을 줄이기 위함입니다.

앞으로 3~6개월 주기로 지속적인 package 업데이트 및 배포를 진행하려고 합니다.

GitHub에서 Star는 배포하는데 큰 힘이 됩니다 :)

도커 환경

  • OS: Ubuntu18.04
  • GPU: RTX3090 x 2way
  • CUDA 11.2
  • Python (anaconda): 3.7

설치된 주요 라이브러리

tensorflow, torch, keras 모두 GPU 학습을 지원합니다.

  • tensorflow: 2.9.1
  • tensorboard: 2.9.1
  • torch: 1.10.1
  • torchaudio: 0.10.1
  • torchvision: 0.11.2
  • keras: 2.9.0
  • Keras-Preprocessing: 1.1.2
  • scikit-learn: 1.0.2
  • xgboost: 2.0.0.dev0 (GPU 지원)
  • lightgbm: 3.3.2 (GPU 지원)

한글 자연어처리 / 한글 폰트 / 형태소 분석기

  • apt 패키지 인스톨러 카카오 mirror 서버 추가
  • 나눔고딕 폰트 설치
  • matplotlib 에 나눔고딕 폰트 추가
  • mecab 형태소 분석기 설치 및 파이썬 패키지 설치
  • konlpy: 한국어 정보처리를 위한 파이썬 패키지
  • py-hanspell: 네이버 맞춤법 검사기를 이용한 파이썬용 한글 맞춤법 검사 라이브러리
  • soynlp: 한국어 자연어처리를 위한 파이썬 라이브러리
  • soyspacing: 띄어쓰기 오류 교정 라이브러리
  • KR-WordRank비지도학습 방법으로 한국어 텍스트에서 단어/키워드를 자동으로 추출하는 라이브러리
  • jupyter_notebook_config.py : Jupyter Notebook 설정 파일 추가

기타 설치된 패키지

beautifulsoup4               4.11.1
catboost                     1.0.6
fastai                       2.7.7
fbprophet                    0.7.1
folium                       0.12.1.post1
gensim                       4.2.0
graphviz                     0.20
huggingface-hub              0.8.1
hyperopt                     0.2.7
jupyter                      1.0.0
kaggle                       1.5.12
keras                        2.9.0
Keras-Preprocessing          1.1.2
konlpy                       0.6.0
korean-lunar-calendar        0.2.1
librosa                      0.9.2
lightgbm                     3.3.2
matplotlib                   3.5.2
mecab-python                 0.996-ko-0.9.2
missingno                    0.5.1
mlxtend                      0.20.0
nltk                         3.7
numpy                        1.21.6
opencv-python                4.6.0.66
opencv-python-headless       4.6.0.66
optuna                       2.10.1
pandas                       1.3.5
Pillow                       9.2.0
pip                          22.1.2
plotly                       5.9.0
pyfasttext                   0.4.6
PyMySQL                      1.0.2
regex                        2022.7.9
requests                     2.28.1
scikit-image                 0.19.3
scikit-learn                 1.0.2
scipy                        1.7.3
seaborn                      0.11.2
spacy                        3.4.0
SQLAlchemy                   1.4.39
tensorboard                  2.9.1
tensorflow                   2.9.1
tensorflow-datasets          4.6.0
tensorflow-estimator         2.9.0
tensorflow-io-gcs-filesystem 0.26.0
tensorflow-metadata          1.9.0
torch                        1.10.1+cu111
torchaudio                   0.10.1+rocm4.1
torchvision                  0.11.2+cu111
transformers                 4.20.1
wandb                        0.12.21
wordcloud                    1.8.2.2
xgboost                      2.0.0.dev0

빠른 설치 및 실행

STEP 1: Docker가 사전에 설치되어 있어야 합니다.

docker desktop 다운로드

🌱 윈도우(Windows)

  • Docker Desktop for Windows 다운로드: Docker의 공식 웹사이트(https://www.docker.com/products/docker-desktop)에서 Docker Desktop for Windows를 다운로드합니다.

  • 설치 프로세스 진행: 다운로드한 설치 파일을 실행하고 지시에 따라 설치를 완료합니다.

  • 도커 시작: 설치가 완료되면 도커를 시작합니다. 작업 표시줄에서 도커 아이콘을 찾을 수 있습니다.

  • 도커 버전 확인: 터미널에서 docker --version 명령을 사용하여 도커 버전을 확인할 수 있습니다.

🌱 맥(macOS)

  • Docker Desktop for Mac 다운로드: Docker의 공식 웹사이트(https://www.docker.com/products/docker-desktop)에서 Docker Desktop for Mac을 다운로드합니다.

  • 설치 프로세스 진행: 다운로드한 .dmg 파일을 열고 Docker.app을 Applications 폴더로 드래그 앤 드롭합니다.

  • 도커 시작: Applications 폴더에서 Docker.app을 실행합니다.

  • 도커 버전 확인: 터미널에서 docker --version 명령을 사용하여 도커 버전을 확인할 수 있습니다.

🌱 리눅스(Ubuntu)

터미널에서 다음의 순서대로 명령어를 입력합니다.

# step 1: apt-get 업데이트
sudo apt-get update

# step 2: 이전 버젼 제거
sudo apt-get remove docker docker-engine docker.io

# step 3: 도커(Docker) 설치 
sudo apt install docker.io

# step 4: 도커 서비스 시작
sudo systemctl start docker
sudo systemctl enable docker

# step 5: 잘 설치 되어있는지 버젼 체크
docker --version

STEP 2: deepko 이미지 pull 하여 서버 실행

  • --rm: 도커가 종료될 때 컨테이너 삭제
  • -it: 인터랙티브 TTY 모드 (디폴트로 설정)
  • -d: 도커를 백그라운드로 실행
  • -p: 포트 설정. local 포트:도커 포트
  • -v: local 볼륨 마운트. local 볼륨:도커 볼륨
  • --name: 도커의 별칭(name) 설정

DockerHub에서 이미지 다운로드

DockerHub에 미리 빌드된 이미지를 다운로드 받은 후 실행합니다.

(스트레스가 없다는 것이 장점입니다. 다만, 다운로드 시간은 오래 걸립니다.)

[참고]

jupyter_notebook_config.py 을 기본 값으로 사용하셔도 좋지만, 보안을 위해서 비밀번호 설정은 해주시는 것이 좋습니다.

비밀번호 설정 방법, 방화벽 설정 방법은 Docker를 활용하여 딥러닝/머신러닝 환경 구성하기 글의 STEP 5, 7을 참고해 주세요.

jupyter notebook 서버 실행, 로컬 volume 마운트

docker run --runtime nvidia --rm -it -p 8888:8888 -v /data/jupyter_data:/home/jupyter teddylee777/deepko:latest

도커를 background에서 실행 (-itd 옵션)

docker run --runtime nvidia --rm -itd -p 8888:8888 -v /data/jupyter_data:/home/jupyter teddylee777/deepko:latest

bash shell 진입

docker run --runtime nvidia --rm -it -p 8888:8888 -v /data/jupyter_data:/home/jupyter teddylee777/deepko:latest /bin/bash

설치 완료 후 테스트

test.ipynb 파일을 실행하여 잘 설치가 되었는지 확인할 수 있습니다.

NVIDIA

!nvidia-smi

TensorFlow

import tensorflow as tf

print(f'tf.__version__: {tf.__version__}')

gpus = tf.config.experimental.list_physical_devices('GPU')
print(gpus)

PyTorch

import torch

print(f'torch.__version__: {torch.__version__}')

print(f'GPU 사용여부: {torch.cuda.is_available()}')
gpu_count = torch.cuda.device_count()
print(f'GPU count: {gpu_count}')
if gpu_count > 0:
    print(f'GPU name: {torch.cuda.get_device_name(0)}')

한글 자연어처리 패키지

from konlpy.tag import Okt, Kkma, Hannanum

sample_sentence = '아버지가방에들어가신다.'

okt = Okt()
print(f'okt: {okt.pos(sample_sentence)}')

kkma = Kkma()
print(f'kkma: {okt.pos(sample_sentence)}')

hannanum = Hannanum()
print(f'hannanum: {hannanum.pos(sample_sentence)}')

Mecab 설치 확인

from konlpy.tag import Mecab

sample_sentence = '아버지가방에들어가신다.'

mecab = Mecab()
print(f'mecab: {mecab.pos(sample_sentence)}')

머신러닝 패키지

import sklearn
import lightgbm
import xgboost

print(f'lightgbm: {lightgbm.__version__}\nxgboost: {xgboost.__version__}\nsklearn: {sklearn.__version__}')

댓글남기기