BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

在Docker Compose上使用GPU运行TensorFlow

| 作者 Beining 关注 0 他的粉丝 发布于 2018年4月11日. 估计阅读时间: 5 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!

容器化和AI是目前开发的大趋势。理想情况下,容器化可以将环境无缝迁移,将配置环境的成本无限降低:但是在容器中配置CUDA并运行TensorFlow一向是个难题。对于初学者以及没有深度学习工作站的用户,AWS和Azure推出了带独立显卡的云服务:但是按需实例价格不便宜,竞价式实例价格公道然而虚拟机不能重启,导致不能按需挂载硬盘并保存工作状态,用户需要编写大量代码时刻对虚拟机进行监控并对结果进行异地保存。Deep Systems对这个问题进行了研究并给出了很好的建议。

  1. 用户首先需要配置CUDA:Deep Systems推荐使用runtime 安装,以免在升级后污染依赖环境。

  2. 安装Docker:一行命令就可以解决这个问题。curl -sSL https://get.docker.com/ | sh

  3. 安装Nvidia Docker:Nvidia对Docker有良好的支持,可以方便地配置GPU穿透,而且不必再担心驱动版本不匹配的问题。

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

安装后的调用方法是:nvidia-docker run --rm nvidia/cuda nvidia-smi

安装Docker Compose:Docker Compose可以提供很多方便的功能,即使只有一个容器也推荐使用。

curl -L https://github.com/docker/compose/releases/download/1.15.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

安装Nvidia Docker Compose:这个小脚本可以将Nvidia Docker和Docker Compose连接起来。

使用pip install nvidia-docker-compose 安装后,即可使用nvidia-docker-compose 命令直接调用。

加入别名:nvidia-docker-compose 比较难敲,所以配置下列别名:

alias doc='nvidia-docker-compose'
alias docl='doc logs -f --tail=100'

最后,在docker-compose.yml 写入下列内容:

version: '3'
services:
  tf:
    image: gcr.io/tensorflow/tensorflow:latest-gpu
    ports:
      - 8888:8888
    volumes:
      - .:/notebooks

大功告成!doc up 会启动容器,自带TensorFlow Jupiter。

Deep Systems已经将这套系统投入生产。

对于AWS的竞价实例,由于竞价实例不能重启,而且不能保存状态,情况略微复杂一些:有几种聪明的解决方式。

  • 建立一个数据卷,启动时手工挂载。优点是稳定;缺点是每次启动时都必须人工操作,而且数据卷外的所有操作都会丢失。

  • 使用Docker,在启动后挂载一个数据卷,或者按本文方法在启动后建立Docker,直接在里面进行操作。优点是易于理解、工具成熟,缺点是有点麻烦,而且除非按本文方法,否则没有真正解决数据集外操作全部丢失的问题。

  • 使用ec2-spotter,准备一个配置好的数据卷,在启动时直接将系统卷替换:缺点是对于每个区域都需要人工修改所需镜像。

查看英文原文Docker Compose + GPU + TensorFlow = ❤️


感谢郭蕾对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT