캐글 노트북(Kaggle Notebook) 커널로도 유명한 도커인 Kaggle/docker-python의 GPU Docker(gpu.Dockerfile)를 기반으로 구성하였습니다. Kaggle에서 공개한 도커 이미지는 한글 폰트, 자연어처리 패키지, 형태소 분석기 등이 누락되어 있습니다.
docker-kaggle-ko를 만들게 된 계기는 안정적으로 업데이트 되고 있는 캐글 GPU 도커에 기반하여 한글 폰트, 한글 자연어처리 패키지(konlpy), 형태소 분석기(mecab), Timezone 등의 설정을 추가하여 별도의 한글 관련 패키지와 설정을 해줘야 하는 번거로움을 줄이기 위함입니다.
- 도커 Hub 주소: teddylee777/docker-kaggle-ko
- GitHub 주소: teddylee777/docker-kaggle-ko
- OS: Ubuntu18.04
- GPU: RTX3090 x 2way
- CUDA11
- Python (anaconda): 3.7.10
- apt 패키지 인스톨러 카카오 mirror 서버 추가
- 나눔폰트, D2Coding 폰트 설치
- matplotlib 에 나눔폰트, D2Coding 폰트 추가
- 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
도커의 설치 및 사용법에 대하여 궁금하신 분들은 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
--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에 미리 만들어 놓은 이미지를 다운로드 받습니다.
스트레스가 없다는 것이 장점입니다. 다운로드 시간은 오래 걸립니다.
docker run --runtime nvidia --rm -it -p 8888:8888 teddylee777/docker-kaggle-ko:latest
커스텀이 가능합니다. 필요한 추가 패키지가 있다면 추가 구성이 가능합니다.
추가 패키지 설치를 위해서는 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
의 파일에 아래 커멘드를 추가하여 단축키로 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__}')