设为首页 收藏本站
查看: 1889|回复: 0

[经验分享] 搭建mxnet-gpu docker的pyhon remote kernel

[复制链接]

尚未签到

发表于 2017-11-20 23:50:23 | 显示全部楼层 |阅读模式
起因
  最近看mxnet的东西,打算给实验室的机器装一个mxnet的环境,无奈实验室里面机器已经装了tensorflow,运行了好久了,环境比较老。而mxnet可是支持最新的cuda9和cudnn7的。研究了一段时间后,发现cuda的docker镜像是个不错的选择。别问我为啥不编译tensorflow以获得cuda9和cudnn7的支持,谁再让我编译tensorflow,谁是XX。
  试着装了一个cuda9的docker镜像,发现很好用,基本除了nvidia-docker之外,不需要其他任何外部依赖。
  配合atom的插件hydrogen,可以实现notebook的几乎全部功能。

docker的安装
  参考 https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/
  
docker的手册写的很好,没啥好说的

nvidia-docker2的安装
  nvidia-docker有一版本的安装,也有2版本,这里推荐2版本,虽然还在开发,不适合production。不过实验室里面跑跑还考虑啥。
  
安装参考 https://github.com/NVIDIA/nvidia-docker/tree/2.0
  需要注意一点的是,nvidia-docker2安装之后,需要设置一下:
  
参考 https://github.com/nvidia/nvidia-container-runtime#installation

镜像的选择
  nvidia自己以ubuntu16.04的镜像为基础创建了一堆cuda的镜像:
  
https://hub.docker.com/r/nvidia/cuda/
  这些镜像中包含不同的cuda版本,以及不同的cuda库配置。
  
这里选用 9.0-cudnn7-runtime 这个标签的镜像作为基础。

构建docker镜像
  这里使用的是docker build命令配合Dockerfile文件。
  Dockerfile的语法参考 https://docs.docker.com/engine/reference/builder/

Dockerfile
  文件内容如下
FROM nvidia/cuda:9.0-cudnn7-runtime  
MAINTAINER dwSun
  

  
ADD sources.list /etc/apt/sources.list
  
RUN apt-get update
  
RUN apt-get install python3-pip libgfortran3 -y
  
RUN pip3 install mxnet-cu90mkl jupyter matplotlib pandas ipython scikit-image -i https://pypi.douban.com/simple/ && rm -rvf ~/.cache
  

  
RUN jupyter notebook --generate-config
  
RUN sed "s/#c.NotebookApp.token = '<generated>'/c.NotebookApp.token = 'mx_cuda'/" /root/.jupyter/jupyter_notebook_config.py -i
  

  
RUN mkdir /code
  
WORKDIR /code
  

  
EXPOSE 8888
  
CMD jupyter notebook --port=8888 --ip 0.0.0.0 --no-browser --allow-root
  文件中有对sources.list文件的引用,这个文件跟Dockerfile放在同一个目录下面。文件为国内阿里的ubuntu镜像源,为的是apt-get的时候能够快一点,文件内容如下:
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse  
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
  
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
  
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
  
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
  也可以使用其他的国内linux源,具体细节参考各个linux源关于ubuntu的使用说明。
  docker内的文件需要使用volume传递给外界,所以这里的镜像预留了一个code目录作为运行目录,使用默认参数运行的话,会直接从code目录启动ipython kernel的gateway。
  sed前后的两行是为了让hydrogen运行的时候,可以不用输入token,这里直接将token设置为了mx_cuda
  
更详细的内容,参考 https://nteract.gitbooks.io/hydrogen/docs/Usage/RemoteKernelConnection.html

build
  到Dockerfile所在的文件夹下面执行
docker build . -t mx_cuda  这里生成一个tag为mx_cuda的镜像。
  
需要注意的是,Dockerfile所在的文件会被整个发送给docker dameon作为编译的context,所以不要在这个文件夹里放其他没有意义的东西,更不要使用home目录。

hydrogen

介绍
  参考:https://atom.io/packages/hydrogen
  他们还有一个叫做nteract的项目,是桌面版本的notebook。参考 https://github.com/nteract/nteract

安装
  使用apm或者直接在atom里面安装 hydrogen
apm install hydrogen
设置
  找到hydrogen的设置,在 Kernel Gateways里面填写:
[  {
  "name": "your config name",
  "options": {
  "baseUrl": "http://your_cuda_host_ip:port",
  "token": "mx_cuda"
  }
  }
  
]

运行
  到cuda的主机里面执行以下命令,启动docker镜像里面的ipython kernel gateway。
docker run --runtime=nvidia -p 0.0.0.0:8888:8888 --rm mx_cuda -d  
or
  
docker run --runtime=nvidia -p 0.0.0.0:8888:8888 --rm -v path:/code mx_cuda -d
  在atom里面编写一个简单的mxnet测试脚本,使用ctrl+shift+p找到Hydrpgen: Connect to Remote Kernel并运行
  然后就是实际的使用了。
  使用的文件参考 https://github.com/dwSun/mx_cuda_docker

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-409024-1-1.html 上篇帖子: docker制作基础镜像 下篇帖子: 2 修改与恢复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表