docker-torch-rnn的方式
1. Installation of Docker 参考https://yeasy.gitbooks.io/docker_practice/content/install/ubuntu.html#使用脚本自动安装
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。可打包应用及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,实现虚拟化。完全使用沙箱机制,相互间不会有任何接口(类似 iPhone 的 app),容器性能开销极低。
Docker的优点:
1、简化程序:
改变了虚拟化方式,可直接将自己的成果放入Docker中进行管理。方便快捷。
2、简化部署:
如 Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。
3、节省开支:
云计算时代无需配置高额的硬件,Docker 与云结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。
下条命令是官方的Ubuntu 和 Debian简化套装脚本。执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker 安装在系统中。
sudo curl -sSL https://get.docker.com/ | sh
因墙的下载出错,可用阿里云的安装脚本
sudo curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
2. Installation of nvidia-docker
因为GPU
属于特定的厂商产品,需要特定的driver
,Docker
本身并不支持GPU
。以前如果要在Docker
中使用GPU
,就需要在container
中安装主机上使用GPU
的driver
,然后把主机上的GPU
设备(例如:/dev/nvidia0
)映射到container
中。所以这样的Docker image
并不具备可移植性。
Nvidia-docker
项目就是为了解决这个问题,它让Docker image
不需要知道底层GPU
的相关信息,而是通过启动container
时mount
设备和驱动文件来实现的。
# Install nvidia-docker and nvidia-docker-plugin
wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1-1_amd64.deb
sudo dpkg -i /tmp/nvidia-docker*.deb && rm /tmp/nvidia-docker*.deb
# Test nvidia-smi
nvidia-docker run --rm nvidia/cuda nvidia-smi
3. Start bash in the container
CPU only:
sudo docker run --rm -ti crisbal/torch-rnn:base bash
CUDA:
sudo nvidia-docker run --rm -ti crisbal/torch-rnn:cuda7.5 bash
会时间较长下载newer image for crisbal/torch-rnn:cuda7.5
4. Preprocess the sample data
python scripts/preprocess.py --input_txt data/tiny-shakespeare.txt --output_h5 data/tiny-shakespeare.h5 --output_json data/tiny-shakespeare.json
5. Train
th train.lua \
-input_h5 data/tiny-shakespeare.h5 \
-input_json data/tiny-shakespeare.json
6. Sample
th sample.lua -checkpoint cv/checkpoint_10000.t7 -length 2000
Own data
1. 把主机的数据拷贝到容器
sudo docker cp test.txt adf2db03ef9c:/root/torch-rnn/