sshuair's note

深度学习docker环境搭建

2017-08-14

在平时的机器学习和深度学习的工作中,虽然在mac os上用brew配置各种机器学习、深度学习以及地理相关的开发环境比较容易,但是公司的linux上又是另一套安装方法,略显麻烦,对于新来的同事或者实习生也得手把手教一遍配置各种包库,不仅浪费时间,而且新手很容易把环境搞崩掉。平台组的同事已近把docker用于开发中,那么我们是不是也可以把机器学习、深度学习的开发环境打包到docker中呢?当然是可以的,TensorFlow、pytorch、caffe等深度学习框架都有自己的官方docker image,虽然可以分开用,但是我们还要用到sk-learn、sk-image、pandas、gdal等其它工具,所以把这些都打包到一个image中不仅用着方便,不用每次在各个docker image之间切换,还能减少总的image的大小,更有助于提高工作效率,不用浪费大量的时间再各种环境的配置上面,真正做到了一次打包四处开发的效果。

image与dockerfile

我这里已近构建好了四个image,已经放到了docker hub上: sshuair/dl-satellite,dockerfile也放到了github上: dockerfile链接,感兴趣的童鞋可以在这个基础上再添加其它内容。如果想自己构建镜像推荐使用docker cloud的Automated Builds自动构建镜像,如果在本地构建镜像的话,记得将docker的镜像源换成阿里云的,ubuntu的镜像源也换成阿里云的(替换方法在我的dockerfile中)。

四个镜像如下包含的东西如下:

  1. sshuair/dl-satellite:cpu sshuair/dl-satellite:gpu
    • 平台:cpu & gpu
    • python:3.5
    • 深度学习库:TensorFlow 1.2.1, mxnet 0.10, pytorch 0.2, keras
    • 机器学习库:sk-learn, sk-image, xgbost, hyperopt
    • 地理处理库:mapnik, gdal, shapely, fiona, rasterio等等
    • 其它科学计算库:pandas, matplotlib, scipy等等
  2. sshuair/dl-satellite:caffe-py2-cpu sshuair/dl-satellite:caffe-py2-gpu
    • 平台:cpu & gpu
    • python:2.7
    • 深度学习库:caffe
    • 机器学习库:sk-learn, sk-image
    • 地理处理库:mapnik, gdal
    • 其它科学计算库:pandas, scipy等等

另外有一点需要注意,目前sshuair/dl-satellite:gpu这个image依赖于cudnn6,而我TensorFlow1.2.1支持支cudnn5,因此TensorFlow暂时无法使用gpu版本,不过在下一个版本1.3中将会加入对cudnn6的支持(估计9月初会release正式版)。

required

  • docker: docker的安装可以到其官网查看各种平台的安装方法;
  • nvidia-docker: 为了在使用GPU还需要nvidia官方出的一个docker插件,用来调用GPU资源;

使用

如果仅仅用到cpu那么直接用docker run即可,如果需要调用gpu就需要使用nvidia-docker run进行启动,

  1. 新建container
    docker run -it --rm sshuair/dl-satellite:cpu bash

  2. 启用jupyter-Notebook:
    nvidia-docker run -it -p 8888:8888 -p 6006:6006 --rm --name container_name sshuair/dl-satellite:gpu jupyter-notebook --allow-root

  3. 启用tensorboard:
    nvidia-docker run -it -p 8888:8888 -p 6006:6006 --rm --name container_names shuair/dl-satellite:gpu tensorboard --logdir=/workdir

更多命令可以到Docker–从入门到实战中查阅。

pycharm调试与代码提示

在开发的过程中代码提示、debug是必备的,可是在docker中怎么办呢,幸好pycharm提供了对docker的支持,具体使用方法见pycharm帮助文档,在配置docker环境时,pycharm会在宿主机器上生成相应的包库所有文件,因此第一次配置的时候会画比较长的时间,后面再开启pycharm时就会很快

常见问题

  1. mac os下的image所占空间特别大,删除后不释放空间问题,可以到这里查看@djs55提供的解决方法
  2. pytorch 0.2版本依赖于numpy 1.3.1,因此在安装pytorch之前需要先升级numpy
  3. mapnik要在gdal之前安装,不然import mapnik时会报错
  4. pytorch在Notebook中import时会报错,目前还不清楚是什么原因

扫描二维码,分享此文章