之前的[笔记] 基于nvidia/cuda的深度学习基础镜像构建流程已经Out了,以这篇为准。

基于NVidia官方的nvidia/cuda image,构建适用于Deep Learning的基础image。

思路就是先把常用的东西都塞进去,build成image,此后使用时想装哪个框架就装。

为了体验重装系统的乐趣,所以采用慢慢来比较快的步骤,而不是通过Dockerfile来build。

环境信息

已经安装了Docker CENVIDIA Container Toolkit,具体流程参考这里

Host OS: Ubuntu 18.04 64 bit

CUDA: 10.0

cuDNN: 7.4

Docker CE: 19.03.0

镜像信息

可以在nvidia/cuda查看提供的镜像列表,不同tag的区别是:

  • base: 基于CUDA,包含最精简的依赖,用于部署预编译的CUDA应用,需要手工安装所需的其他依赖。
  • runtime: 基于base,添加了CUDA toolkit共享的库
  • devel: 基于runtime,添加了编译工具链,调试工具,头文件,静态库。用于从源码编译CUDA应用。

为了省事,这里选择nvidia/cuda:10.0-cudnn7-devel

$ sudo docker pull nvidia/cuda:10.0-cudnn7-devel

目前拉取到的镜像信息如下:

OS: Ubuntu 18.04.2 LTS

Size: 3.09 GB

启动镜像

创建目录base,方便数据导入导出,映射为容器内的/host目录,然后在这个目录下运行命令创建容器dl-base

$ sudo docker run -it --gpus all -P --name dl-base -v `pwd`:/host nvidia/cuda:10.0-cudnn7-devel

一切顺利的话,出现类似下面的命令行:

root@d6421dac4cec:/#

可以运行nvidia-smi验证容器内的CUDA环境正常。

替换阿里源

大陆的网络环境下,阿里源速度还不错。

将下面的内容存为base目录下的sources.list文件。

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted
deb http://mirrors.aliyun.com/ubuntu/ bionic universe
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates universe
deb http://mirrors.aliyun.com/ubuntu/ bionic multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted
deb http://mirrors.aliyun.com/ubuntu/ bionic-security universe
deb http://mirrors.aliyun.com/ubuntu/ bionic-security multiverse

在容器命令行下运行命令更新源。

$ cp /host/sources.list /etc/apt/sources.list
$ apt update

安装基本工具

$ apt install -y vim curl git iputils-ping net-tools telnet tmux unzip

创建工作及下载目录

$ mkdir -p /work/download

修改~/.bashrc

在文件尾部添加下面内容:

alias u='cd ..'
alias ins='apt install -y'
alias ta='tmux a -t'
alias jn='jupyter notebook --ip=0.0.0.0 --allow-root'

再使其生效:

$ source ~/.bashrc

安装openssh-server

$ apt install -y openssh-server

修改/etc/ssh/sshd_config,找到#PermitRootLogin开头的这一行,修改为PermitRootLogin yes,这样就可以通过root登录了。

然后修改密码:

$ passwd

两次输入密码,然后重启ssh:

$ /etc/init.d/ssh restart

出现下面内容就OK了。

 * Restarting OpenBSD Secure Shell server sshd [ OK ]

这里为了简单粗暴,采用了root来登陆。

如果考虑安全,可自行创建用户,并对ssh进行配置。

安装miniconda

也可按需安装anaconda等python包,这里以miniconda为例。

$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
$ sh Miniconda3-latest-Linux-x86_64.sh

安装时问是否初始化,选择yes:

Do you wish the installer to initialize Miniconda3 by running conda init? [yes|no]

再使其生效:

$ source ~/.bashrc

配置pip源为阿里源:

$ pip config set global.index-url https://mirrors.aliyun.com/pypi/simple

配置conda源为清华源:

$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
$ conda config --set show_channel_urls yes

安装常用的包:

$ conda install jupyter numpy matplotlib Pillow scipy pandas opencv

这里安装的opencv是3.4.2

保存镜像

至此,就可以在Host下运行命令将容器保存为镜像了。

$ sudo docker commit dl-base dl/base

这样就生成了一个镜像dl/base,大小为6.51GB。

在此镜像基础上,可以自行安装不同的框架。

jupyter notebook

如果希望在容器中启动jupyter notebook,需要加上参数如下:

$ jupyter notebook --ip=0.0.0.0 --allow-root

这个已经加入alias了。

[笔记] 基于nvidia/cuda的深度学习基础镜像构建流程 V0.2的更多相关文章

  1. [笔记] 基于nvidia/cuda的深度学习基础镜像构建流程

    基于NVidia开源的nvidia/cuda image,构建适用于DeepLearning的基础image. 思路就是先把常用的东西都塞进去,再装某个框架就省事儿了. 为了体验重装系统的乐趣,所以采 ...

  2. 基于NVIDIA GPUs的深度学习训练新优化

    基于NVIDIA GPUs的深度学习训练新优化 New Optimizations To Accelerate Deep Learning Training on NVIDIA GPUs 不同行业采用 ...

  3. vitess基础镜像构建流程Centos

    以下列出了构建vitess使用的Centos镜像的简单流程,由于较早基础版本是Centos7.2的,重新构建可以基于最新的Centos版本构建 1.基础镜像拉取 #拉取官方版本 docker pull ...

  4. NVIDIA GPUs上深度学习推荐模型的优化

    NVIDIA GPUs上深度学习推荐模型的优化 Optimizing the Deep Learning Recommendation Model on NVIDIA GPUs 推荐系统帮助人在成倍增 ...

  5. CUDA上深度学习模型量化的自动化优化

    CUDA上深度学习模型量化的自动化优化 深度学习已成功应用于各种任务.在诸如自动驾驶汽车推理之类的实时场景中,模型的推理速度至关重要.网络量化是加速深度学习模型的有效方法.在量化模型中,数据和模型参数 ...

  6. NVIDIA TensorRT高性能深度学习推理

    NVIDIA TensorRT高性能深度学习推理 NVIDIA TensorRT 是用于高性能深度学习推理的 SDK.此 SDK 包含深度学习推理优化器和运行时环境,可为深度学习推理应用提供低延迟和高 ...

  7. 算法工程师<深度学习基础>

    <深度学习基础> 卷积神经网络,循环神经网络,LSTM与GRU,梯度消失与梯度爆炸,激活函数,防止过拟合的方法,dropout,batch normalization,各类经典的网络结构, ...

  8. 大数据下基于Tensorflow框架的深度学习示例教程

    近几年,信息时代的快速发展产生了海量数据,诞生了无数前沿的大数据技术与应用.在当今大数据时代的产业界,商业决策日益基于数据的分析作出.当数据膨胀到一定规模时,基于机器学习对海量复杂数据的分析更能产生较 ...

  9. 机器学习&深度学习基础(目录)

    从业这么久了,做了很多项目,一直对机器学习的基础课程鄙视已久,现在回头看来,系统的基础知识整理对我现在思路的整理很有利,写完这个基础篇,开始把AI+cv的也总结完,然后把这么多年做的项目再写好总结. ...

随机推荐

  1. zencart简易页面ezpage后台编辑位置

    zencart简易页面ezpage后台编辑位置: 后台-Tools(工具)-EZ-Pages(简易页面管理) 若编辑之后无法保存,说明includes\languages\语言包\html_inclu ...

  2. 2019.9.30 ErrorWidget 的使用

    开发过程中总会碰见页面出现错误的情况,这时候整个页面一片红, 如下 测试阶段出现这样的问题就算了,万一正式环境也出现这个就要不和谐了.所以就有了ErrorWidget.这个是要在最底层设置一下就可以屏 ...

  3. DNS原理及实战配置指南

    目录 DNS简介 DNS域名结构介绍 顶级域名 DNS工作原理 工作模式和端口 资源记录 安装bind(详细) 实战:配置一个正反向解析 实战:配置DNS转发 实战:配置DNS主从 实战:子域授权 实 ...

  4. (九)zabbix监控web应用

    1)web应用监控介绍 使用zabbix自带的web场景可以监控url的状态码,响应时间,url的下载速度,非常的棒 思路:定义模板-->创建应用集--->定义web场景--->定义 ...

  5. Acwing-169-数独2(搜索, 剪枝)

    链接: https://www.acwing.com/problem/content/171/ 题意: 请你将一个16x16的数独填写完整,使得每行.每列.每个4x4十六宫格内字母A~P均恰好出现一次 ...

  6. Java根据余弦定理计算文本相似度

    项目中需要算2个字符串的相似度,是根据余弦相似性算的,下面具体介绍一下: 余弦相似度计算 余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小.余弦值越接近1,就表明夹角越接近0度, ...

  7. 实现同时将一批.bmp文件转换成.mat格式

    %% 功能:实现同时对一批.bmp文件的转换成.mat格式PicFormat = {'*.bmp','Bitmap image (*.bmp)';... '*.jpg','JPEG image (*. ...

  8. Spring——bean的五种作用域和生命周期

    一.Bean的作用域 1.当一个bean的作用域为Singleton,那么Spring IoC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回 ...

  9. Codeforces 785 E. Anton and Permutation(分块,树状数组)

    Codeforces 785 E. Anton and Permutation 题目大意:给出n,q.n代表有一个元素从1到n的数组(对应索引1~n),q表示有q个查询.每次查询给出两个数l,r,要求 ...

  10. devServer之proxy跨域

    配置 注意:修改之后要重新运行一遍项目才行 devServer:{ contentBase:'./', proxy:{ // 当你请求是以/api开头的时候,则我帮你代理访问到http://local ...