現在機械学習を勉強しています。
特にRNN周りをやっていて、時々CNNを触ってみたりといった感じです。
環境
自分の機械学習マシン環境は
- ThinkPad X230
- Ubuntu18.04
- GTX1060 6GB
- nvidia-docker
- jupyter notebook
です。
nvidia-docker version
NVIDIA Docker: 2.0.3
Client: Docker Engine - Community
Version: 19.03.1
API version: 1.40
Go version: go1.12.5
Git commit: 74b1e89
Built: Thu Jul 25 21:21:05 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.1
API version: 1.40 (minimum version 1.12)
Go version: go1.12.5
Git commit: 74b1e89
Built: Thu Jul 25 21:19:41 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.6
GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
runc:
Version: 1.0.0-rc8
GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f
docker-init:
Version: 0.18.0
GitCommit: fec3683
環境構築の話はこちらで書きました。
Dockerfile
DockerfileはtensorflowのDockerイメージの上に、自分が使うライブラリ等を入れています。
FROM tensorflow/tensorflow:latest-gpu-py3-jupyter
RUN apt update && apt install -y vim graphviz wget libsm6 libxext6 libxrender-dev tmux && python3 -m pip install keras sklearn pydot_ng graphviz nltk pandas tqdm Pillow opencv-python pillow
RUN apt install -y make automake autoconf autotools-dev m4 mecab libmecab-dev mecab-ipadic-utf8 git make curl xz-utils file
RUN git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git &&\
cd mecab-ipadic-neologd &&\
sed -e "s/sudo//g" /tf/mecab-ipadic-neologd/bin/../libexec/install-mecab-ipadic-neologd.sh > /tf/mecab-ipadic-neologd/bin/../libexec/install-mecab-ipadic-neologd.sh &&\
./bin/install-mecab-ipadic-neologd -n -a -y
RUN python3 -m pip install mecab-python3
docker-compose.yml
上記のdocker imageをnozomi0966/tensorflow:
という名前にしています。
コンテナを$HOME
にマウントしてあげることで、ホストマシンとのデータの受け渡しを楽にできるようにしています。
また、jupyter notebookのtokenを決めておくことで、再起動をかけても入りやすくしています。
version: '2.3'
services:
tensorflow:
container_name: nozomi_tensorflow
image: nozomi0966/tensorflow:latest
volumes:
- $HOME/:/tf
runtime: nvidia
tty: true
restart: always
command: /usr/local/bin/jupyter notebook --NotebookApp.token='hogehoge' --ip=0.0.0.0 --allow-root
ports:
- 8888:8888