使用容器与云计算技术快速进行深度学习

最早见于本人山大的一次讲课附带的技术资料,后在多处使用。

Docker 是什么?

Docker 是一个开源的应用容器引擎,容器不同于虚拟机,更简单的架构使其无需创建臃肿的操作系统就能够创建一个隔离的应用环境。利用Docker我们也就可以快速的部署各类服务,而无需复杂的安装过程。

简单来说,当我们在安装Docker之后我们就可以使用一条命令启动一个容器,而容器中已经有了安装好的各种软件。

Docker使用显卡:nvidia-docker

深度学习计算必须要使用显卡,这就牵扯到了显卡的虚拟化技术。虚拟机本身是无法使用显卡的,只是在使用CPU和存储来创建一个虚拟的操作系统。然而容器技术则不同。Docker容器底层是可以支持显卡的使用的,而Docker底层想要使用显卡只需要安装一个NVIDIA Docker而已。NVIDIA Docker本身并非一个新的Docker,实际上它更接近于一个Docker的插件。

具体的安装流程则请参考安装nvidia-docker2文件。大体分为以下几步:

  • 安装显卡驱动
  • 安装CUDA与cudnn
  • 安装nvidia-docker2

具体的英伟达显卡驱动的支持等有关内容可以参考:

使用深度学习镜像

在以上内容弄好之后,那么就可以使用各大官方提供的Docker镜像进行编程了。

比如Tensorflow的官方镜像:Tensorflow官方提供了一系列的Docker镜像,可以用于创建包含Tensorflow的Docker容器。

其一系列镜像有一定的命名规则,镜像列表位于:https://hub.docker.com/r/tensorflow/tensorflow/tags

其中各项参数如下:

  • -py3:Python3版本的Tensorflow,不带该参数的默认为py2(Tensorflow开发历史原因)

  • -gpu:提供支持GPU运行的Tensorflow镜像,需要英伟达Docker以及对应显卡驱动的支持

  • -jupyter:提供带有jupyter notebook版本的Docker镜像,可以结合Docker卷和端口绑定使用。

  • -nightly:Tensorflow的每日构建版本。如果安装具体版本,需要到tensorflow官方仓库查看指定版本的Docker镜像

tensorflow 使用案例

docker run -it --rm tensorflow/tensorflow bash

Start a CPU-only container

开启只使用CPU的镜像,这也正是其默认镜像(cpu-py2-not jupyter)


docker run -it --rm --runtime=nvidia tensorflow/tensorflow:latest-gpu python

Start a GPU container, using the Python interpreter.

开启支持GPU运算的镜像,同时进入Python命令行。需要宿主机显卡配置。


docker run -it --rm -v $(realpath ~/notebooks):/tf/notebooks -p 8888:8888 tensorflow/tensorflow:latest-jupyter

# 测试gpu版本
docker run -it --rm -v $(realpath ~/notebooks):/tf/notebooks -p 8888:8888 tensorflow/tensorflow:latest-gpu-jupyter

Run a Jupyter notebook server with your own notebook directory (assumed here to be ~/notebooks). To use it, navigate to localhost:8888 in your browser.

运行一个带有jupyter的tensorflow。端口绑定8888,位置在~/notebook。注意这里使用的具体路径是~/notebooks

sudo docker run -it --rm -v $(realpath ~/notebooks):/tf/notebooks -p 8888:8888 tensorflow/tensorflow:nightly-gpu-py3-jupyter

在后台运行支持gpu,py3,带有jupyter,且为nightly安装的tensorflow镜像,在容器停止后删除。

sudo docker run -it --rm -v $(realpath ~/notebooks):/tf/notebooks -p 8888:8888 tensorflow/tensorflow:1.13.2-py3-jupyter
# 2.2.0
  sudo docker run -it --rm -v $(realpath ~/notebooks):/tf/notebooks -p 8888:8888 tensorflow/tensorflow:2.2.0-gpu-jupyter

最后我们运行一个tensorflow版本为1.13.2,Python版本为3,带有jupyter notebook的docker镜像。这是一个比较合适的tensorflow1.x镜像。稳定,没有太多语法替换警告。

PyTorch

pytorch与tensorflow类似都是通过标签中的关键词来定义镜像的。只不过由于其必须依赖GPU运算,因此主要标签为pytorch版本号和cuda和cudnn版本号。如下命令:

docker pull pytorch/pytorch:1.4-cuda10.1-cudnn7-devel

下载镜像为1.4版本的pytorch,使用gpu加速为cuda10.1,cudnn7。

具体镜像版本请参考:https://hub.docker.com/r/pytorch/pytorch/tags

不过Pytorch默认不支持jupyter notebook,但是可以通过安装添加jupyter。

注意默认镜像及其纯净,并无vi。

飞桨

另外来自百度的国产深度学习框架飞桨也提供了Docker镜像,具体网址可见https://www.paddlepaddle.org.cn/install/quick

具体命令则如下:docker pull hub.baidubce.com/paddlepaddle/paddle:1.8.3-gpu-cuda10.0-cudnn7

该命令的作用是从百度的docker镜像仓库,下载飞桨1.83版本,同时底层支持GPU运算,同时cuda版本为10,cudnn为7。

官方入门教程

正所谓授之以鱼不如授之于渔,其实各大深度学习框架为了推广自身的人工智能框架都提供了大量的代码教程以及训练好的模型。其中做得比较好的就是tensorflow与飞桨(PaddlePaddle),tensorflow重在完成,各种应用各类模型(hub,model)等等,而飞桨不仅仅有以上的各类功能,甚至还提供了专门的教学课程或者比赛解析(尤其百度最近几年办了很多比赛,要求就是使用飞桨进行编程,同时需要开放源代码和解决方案,而且其原生语言即为中文)。

TensorFlow官方教程:https://tensorflow.google.cn/tutorials

飞桨官方教程:https://www.paddlepaddle.org.cn/tutorials/projectdetail/590324

PyTorch官方教程(英文):https://pytorch.org/tutorials/

PyTorch官方教程(中文,开源社区维护,更新较慢,markdown格式不可直接运行):https://pytorch.apachecn.org/

基于云计算的在线平台

公有云:Google云,百度云,腾讯智能钛等等

私有云:高寻真源大数据与人工智能科研平台

数据科学有关镜像

notebook官方同样给出了一系列镜像,使用方法类似。如使用PySpark镜像:

# spark-2
docker run -it --rm -v $(realpath ~/notebooks):/home/jovyan/work -p 8888:8888 jupyter/pyspark-notebook:spark-2

# 最新版,spark3.X
docker run -it --rm -v $(realpath ~/notebooks):/home/jovyan/work -p 8888:8888 jupyter/pyspark-notebook

下面是一个jupyter 官方镜像的一个简单列表,更多内容请直接前往dockerhub上jupyter的官方账号查询。
在这里插入图片描述

上云

以上所说的镜像都是docker镜像,docker容器技术是k8s的技术基础,利用k8s可以有效上云。不过要真的上云,只有在大量集群时,才有实际意义。受制于文章篇幅有限,这里我们不再进行过多描述,我在其他文章中对此有更详细的描写。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Font Tian

写的很好,请给我钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值