Sign inSign up

teddylee777/docker-kaggle-ko

By teddylee777

•Updated over 3 years ago

tensorflow jupyter 도커 이미지 기반에 한글 폰트, 한글 자연어처리 패키지(konlpy), 형태소 분석기, Timezone 등의 설정이 추가된 도커입니다.

Image
5

2.8K

teddylee777/docker-kaggle-ko repository overview

⁠docker-kaggle-ko

tensorflow jupyter 도커 이미지 기반으로 구성하였습니다. tensorflow/tensorflow:2.x.x-gpu-jupyter 공개한 도커 이미지는 한글 폰트, 자연어처리 패키지, 형태소 분석기 등이 누락되어 있습니다.

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

⁠도커 환경

  • OS: Ubuntu18.04
  • GPU: RTX3090 x 2way
  • CUDA11
  • Python (anaconda): 3.8

⁠추가 설치된 항목과 Python 패키지

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

⁠설치된 주요 라이브러리

catboost                       0.25.1
cudf                           0.16.0
fastai                         2.2.7
fasttext                       0.9.2
fbprophet                      0.7.1
gensim                         4.0.1
huggingface-hub                0.0.9
hyperopt                       0.2.5
kaggle                         1.5.12
Keras                          2.4.3
Keras-Preprocessing            1.1.2
konlpy                         0.5.2
krwordrank                     1.0.3
lightgbm                       3.2.0
matplotlib                     3.4.2
mecab-python                   0.996-ko-0.9.2
missingno                      0.4.2
mlxtend                        0.18.0
nltk                           3.2.4
numpy                          1.19.5
opencv-python                  4.5.2.52
pandas                         1.1.5
plotly                         4.14.3
plotly-express                 0.4.1
py-hanspell                    1.1
scikit-image                   0.18.1
scikit-learn                   0.24.2
scikit-surprise                1.1.1
scipy                          1.6.2
seaborn                        0.11.1
sentencepiece                  0.1.95
soynlp                         0.0.493
soyspacing                     1.0.17
spacy                          2.3.5
SQLAlchemy                     1.4.3
statsmodels                    0.12.2
tensorboard                    2.4.1
tensorflow                     2.4.1
tensorflow-datasets            3.0.0
Theano                         1.0.5
torch                          1.7.0
torchaudio                     0.7.0a0+ac17b64
torchmetrics                   0.3.2
torchtext                      0.8.0a0+cd6902d
torchvision                    0.8.1
wordcloud                      1.8.1
xgboost                        1.4.2

⁠빠른 설치 및 실행

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

도커의 설치 및 사용법에 대하여 궁금하신 분들은 Docker를 활용하여 딥러닝/머신러닝 환경 구성하기⁠ 글을 참고해 주세요.

# 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: docker-kaggle-ko 이미지 pull 하여 서버 실행
  • --rm: 도커가 종료될 때 컨테이너 삭제
  • -it: 인터랙티브 TTY 모드 (디폴트로 설정)
  • -d: 도커를 백그라운드로 실행
  • -p: 포트 설정. local 포트:도커 포트
  • -v: local 볼륨 마운트. local 볼륨:도커 볼륨
  • --name: 도커의 별칭(name) 설정

DockerHub에서 이미지 다운로드

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

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

[참고]

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

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

jupyter notebook 서버 실행, port는 8888번 포트 사용

docker run --runtime nvidia --rm -it -p 8888:8888 teddylee777/docker-kaggle-ko:latest

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

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

도커를 background에서 실행

docker run --runtime nvidia --rm -itd -p 8888:8888 teddylee777/docker-kaggle-ko:latest

bash shell 진입

docker run --runtime nvidia --rm -it -p 8888:8888 teddylee777/docker-kaggle-ko:latest /bin/bash

⁠빌드

DockerHub에서 다운로드 받은 도커 이미지로 실행시 빌드 과정은 생략 가능합니다.

⁠DockerHub 다운로드

DockerHub에 미리 만들어 놓은 이미지를 다운로드 받습니다.

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

docker run --runtime nvidia --rm -it -p 8888:8888 teddylee777/docker-kaggle-ko:latest
⁠Dockerfile을 수정하여 직접 빌드

커스텀이 가능합니다. 필요한 추가 패키지가 있다면 추가 구성이 가능합니다.

추가 패키지 설치를 위해서는 Dockerfile을 수정하시면 됩니다.

참고

  • DockerHub 유저 아이디: teddylee777
  • 도커명: docker-kaggle-ko
  • 태그: latest
git clone https://github.com/teddylee777/docker-kaggle-ko.git
cd docker-kaggle-ko
docker build -t teddylee777/docker-kaggle-ko:latest .

⁠도커 실행

  • --rm: 도커가 종료될 때 컨테이너 삭제
  • -it: 인터랙티브 TTY 모드 (디폴트로 설정)
  • -d: 도커를 백그라운드로 실행
  • -p: 포트 설정. local 포트:도커 포트
  • -v: local 볼륨 마운트. local 볼륨:도커 볼륨
  • --name: 도커의 별칭(name) 설정
docker run --runtime nvidia --rm -itd -p 8888:8888 -v /data/jupyter_data:/home/jupyter --name kaggle-ko teddylee777/docker-kaggle-ko

⁠.bashrc에 단축 커멘드 지정

~/.bashrc의 파일에 아래 커멘드를 추가하여 단축키로 Docker 실행

kjupyter{
    docker run --runtime nvidia --rm -itd -p 8888:8888 -v /data/jupyter_data:/home/jupyter --name kaggle-ko teddylee777/docker-kaggle-ko
}

터미널에 다음과 같이 입력하여 도커 실행

kjupyter

⁠설치 완료 후 테스트

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__}')

Tag summary

Content type

Image

Digest

sha256:b5cd2e510…

Size

12.2 GB

Last updated

over 3 years ago

docker pull teddylee777/docker-kaggle-ko