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

文章目录

  • Docker 是什么?
    • Docker使用显卡:nvidia-docker
  • 使用深度学习镜像
    • tensorflow 使用案例
    • PyTorch
    • 飞桨
  • 官方入门教程
  • 基于云计算的在线平台
  • 数据科学有关镜像
  • 上云

Docker 是什么?

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

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

Docker使用显卡:nvidia-docker

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

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

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

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

  • 安装nvidia-docker2

  • Ubuntu18.04 显卡驱动安装

  • Ubuntu18.04 CUDA与cudnn安装

  • Ubuntu 18.04 独显和集显切换

使用深度学习镜像

在以上内容弄好之后,那么就可以使用各大官方提供的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.0sudo 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可以有效上云。不过要真的上云,只有在大量集群时,才有实际意义。受制于文章篇幅有限,这里我们不再进行过多描述,我在其他文章中对此有更详细的描写。

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

  1. 百度 AI Studio——《高层API助你快速上手深度学习》课程学习1

    百度 AI Studio--<高层API助你快速上手深度学习>课程学习1 该系列文章系个人读书笔记及总结性内容,任何组织和个人不得转载进行商业活动! 相关链接: 飞桨:飞桨开源框架(Pad ...

  2. CSDN技术主题月----“深度学习”代码笔记专栏

    from: CSDN技术主题月----"深度学习"代码笔记专栏 2016-09-13 nigelyq 技术专题 Hi,各位用户 CSDN技术主题月代码笔记专栏会每月在CODE博客为 ...

  3. 【技术综述】深度学习新手如何开始合适的“调参”任务

    言有三 毕业于中国科学院,计算机视觉方向从业者,有三工作室等创始人 作者 | 言有三 编辑 | 言有三 深度学习工程师被称为"炼丹工程师",自然是因为在日常工作中需要各种各样的调参 ...

  4. 如何快速入门深度学习写论文?

    原文作者:月来客栈     https://www.zhihu.com/people/the_lastest 最快的方式: 第一,选择一篇有代码的论文,记住一定要有代码: 第二,大致弄清楚论文里所提出 ...

  5. 新手如何快速入门深度学习

    如何快速入门深度学习 本篇学习笔记对应深度学习入门视频课程 博客地址:http://blog.csdn.net/tangyudi 欢迎转载 深度学习入门必备基础 避开常见误区 学习路线图 干货分享 深 ...

  6. 新手如何快速入门 深度学习

    如何快速入门深度学习 深度学习入门必备基础 避开常见误区 学习路线图 干货分享 深度学习必备基础 深度学习发展至今已然有几个年头了,上个世纪九十年代的美国银行率先使用深度学习技术做为手写字体识别,但深 ...

  7. 新手如何快速入门深度学习领域

    如何快速入门深度学习 本篇学习笔记对应深度学习入门视频课程 博客地址:http://blog.csdn.net/tangyudi 欢迎转载 深度学习入门必备基础 避开常见误区 学习路线图 干货分享 深 ...

  8. (快速入门深度学习)证件照生成项目

    前言 通过一个可以运行的项目,快速入门深度学习,该项目通过微信小程序拍摄照片,调用后台程序上传照片,生成证件照,提供完整可运行的前后端源代码. 本项目能学习到: 1.快速了解深度学习框架的应用, 进行 ...

  9. 【技术综述】深度学习中的数据增强(下)

    文章首发于微信公众号<有三AI> [技术综述]深度学习中的数据增强(下) 今天带来深度学习中的数据增强方法的下篇.我们将从以下几个方向入手.1,介绍一下什么是无监督的数据增强方法.2,简单 ...

最新文章

  1. ML之多分类预测之PLiR:使用PLiR实现对六类label数据集进行多分类
  2. mysql的partition分区
  3. Sharepoint项目周记一:关于开展MOSS项目的前期调查和需要解决的问题
  4. Android Glide图片加载框架(三)缓存机制
  5. 数论 —— 线性同余方程
  6. Xception: DeepLearning with Depthwise Separable Convolutions2017Google【论文理解】
  7. Nuget如何管理本地的包
  8. Rails中select2 实现多选框的效果
  9. 『Java安全』tabby代码审计工具Windows环境搭建
  10. EditPlus中文版64bit百度网盘下载
  11. 一图搞懂梯度、散度、旋度、Jacobian、Hessian、Laplacian之间的关系
  12. linux 修改文件类型 查看系统类型 改hosts文件
  13. 搭建jitsi的prosody出现的问题
  14. win10的计算机 桌面图标不见了怎么办,教你win10桌面我的电脑图标不见了怎么办...
  15. Raspberry Pi 树莓派切换国内源
  16. python学得好、进监狱进的快_最经典的100部美剧,看到第一名瞬间服气!
  17. 初学者计算机电脑怎样学,初学者怎样学习电脑能够快速入门(免费科普电脑基础知识)...
  18. window 文件夹 标题栏 工具栏不见了
  19. appium滑动操作(向上、向下、向左、向右滑动)
  20. 100万算大钱还是小钱?

热门文章

  1. 用友云平台,真正的云原生架构,加速云应用落地 1
  2. Hadoop Hive概念学习系列之hive里的HiveQL——查询语言(十五)
  3. 【工具】git笔记(一)
  4. redis-redisTemplate模糊匹配删除
  5. ASP导出Excel数据的四种方法
  6. IIS Permissions
  7. mysql 配置文件设置最大链接数 max_connections不生效
  8. 通俗讲解分布式锁,看完不懂算作者输
  9. MySQL 中主键的几种表设计组合的实际应用效果
  10. 原子变量、锁、内存屏障,写得非常好!