[笔记] 基于nvidia/cuda的深度学习基础镜像构建流程
基于NVidia开源的nvidia/cuda image,构建适用于DeepLearning的基础image。
思路就是先把常用的东西都塞进去,再装某个框架就省事儿了。
为了体验重装系统的乐趣,所以采用慢慢来比较快的步骤,而不是通过Dockerfile来build。
环境信息
已经安装了Docker CE和nvidia-docker2
Host OS: Ubuntu 18.04 64 bit
CUDA: 10.0
cuDNN: 7.4
Docker CE: 18.09.1
nvidia-docker2: 2.0.3
镜像信息
拉取镜像nvidia/cuda:
$ sudo docker pull nvidia/cuda
目前拉取到的镜像nvidia/cuda信息如下:
OS: Ubuntu 18.04.1 LTS
CUDA: 10.0
Size: 2.24GB
启动镜像
创建目录base,方便数据导入导出,映射为容器内的/host目录,然后在这个目录下运行命令创建容器dl-base。
$ sudo nvidia-docker run -it --name dl-base -v `pwd`:/host nvidia/cuda
一切顺利的话,出现类似下面的命令行:
root@a336efb2d5b0:/host#
可以运行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'
export PATH=/usr/local/cuda-10.0/bin:$PATH
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export LD_LIBRARY_PATH="/usr/local/lib:/usr/local/cuda-10.0/lib64:/home/etworker/anaconda3/lib:$LD_LIBRARY_PATH"
export CUDNN_PATH="/usr/local/cuda-10.0/lib64/libcudnn.so"
再使其生效:
$ source ~/.bashrc
安装cnDNN
Host下虽然已经安装了cnDNN环境,但是容器内没法使用,所以需要再搞一把。
先将cnDNN的压缩包解压到base目录,此处为cudnn-10.0-linux-x64-v7.4.2.24目录,在容器命令行下运行:
$ cp /host/cudnn-10.0-linux-x64-v7.4.2.24/cuda/include/cudnn.h /usr/local/cuda-10.0/include
$ cp /host/cudnn-10.0-linux-x64-v7.4.2.24/cuda/lib64/libcudnn* /usr/local/cuda-10.0/lib64
$ chmod a+r /usr/local/cuda-10.0/include/cudnn.h /usr/local/cuda-10.0/lib64/libcudnn*
然后验证一下,不报错就OK了。
$ echo -e '#include"cudnn.h"\n void main(){}' | nvcc -x c - -o /dev/null -lcudnn
安装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进行配置。
安装python常用组件
Ubuntu 18.04的容器,默认安装了python 3.6.7,此时还需安装pip:
$ apt install -y python3-pip
建议不要更新pip,否则容易出现问题。
创建pip的配置文件目录~/.pip,再创建文件~/.pip/pip.conf,内容如下:
[global]
trusted-host=mirrors.aliyun.com
index-url=https://mirrors.aliyun.com/pypi/simple/
安装常用的包:
$ pip3 install numpy matplotlib Pillow scipy jupyter pandas h5py easydict sklearn
安装opencv-python
$ apt install -y libsm6 libxext6 libfontconfig1 libxrender1
$ pip3 install opencv-python
此时安装的opencv版本是4.0.0。
保存镜像
至此,就可以在Host下运行命令将容器保存为镜像了。
$ sudo nvidia-docker commit dl-base dl/base
这样就生成了一个镜像dl/base,大小为4.36GB。
在此镜像基础上,可以自行安装不同的框架。
jupyter notebook
如果希望在容器中启动jupyter notebook,需要加上参数如下:
$ jupyter notebook --ip=0.0.0.0 --allow-root
[笔记] 基于nvidia/cuda的深度学习基础镜像构建流程的更多相关文章
- [笔记] 基于nvidia/cuda的深度学习基础镜像构建流程 V0.2
之前的[笔记] 基于nvidia/cuda的深度学习基础镜像构建流程已经Out了,以这篇为准. 基于NVidia官方的nvidia/cuda image,构建适用于Deep Learning的基础im ...
- 基于NVIDIA GPUs的深度学习训练新优化
基于NVIDIA GPUs的深度学习训练新优化 New Optimizations To Accelerate Deep Learning Training on NVIDIA GPUs 不同行业采用 ...
- vitess基础镜像构建流程Centos
以下列出了构建vitess使用的Centos镜像的简单流程,由于较早基础版本是Centos7.2的,重新构建可以基于最新的Centos版本构建 1.基础镜像拉取 #拉取官方版本 docker pull ...
- NVIDIA GPUs上深度学习推荐模型的优化
NVIDIA GPUs上深度学习推荐模型的优化 Optimizing the Deep Learning Recommendation Model on NVIDIA GPUs 推荐系统帮助人在成倍增 ...
- CUDA上深度学习模型量化的自动化优化
CUDA上深度学习模型量化的自动化优化 深度学习已成功应用于各种任务.在诸如自动驾驶汽车推理之类的实时场景中,模型的推理速度至关重要.网络量化是加速深度学习模型的有效方法.在量化模型中,数据和模型参数 ...
- NVIDIA TensorRT高性能深度学习推理
NVIDIA TensorRT高性能深度学习推理 NVIDIA TensorRT 是用于高性能深度学习推理的 SDK.此 SDK 包含深度学习推理优化器和运行时环境,可为深度学习推理应用提供低延迟和高 ...
- 算法工程师<深度学习基础>
<深度学习基础> 卷积神经网络,循环神经网络,LSTM与GRU,梯度消失与梯度爆炸,激活函数,防止过拟合的方法,dropout,batch normalization,各类经典的网络结构, ...
- 大数据下基于Tensorflow框架的深度学习示例教程
近几年,信息时代的快速发展产生了海量数据,诞生了无数前沿的大数据技术与应用.在当今大数据时代的产业界,商业决策日益基于数据的分析作出.当数据膨胀到一定规模时,基于机器学习对海量复杂数据的分析更能产生较 ...
- 机器学习&深度学习基础(目录)
从业这么久了,做了很多项目,一直对机器学习的基础课程鄙视已久,现在回头看来,系统的基础知识整理对我现在思路的整理很有利,写完这个基础篇,开始把AI+cv的也总结完,然后把这么多年做的项目再写好总结. ...
随机推荐
- go * 和 &的区别
类型 *T 是指向 T 类型值的指针.其零值为 nil . var p *int & 操作符会生成一个指向其操作数的指针. i := 42 p = &i * 操作符表示指针指向的底层值 ...
- Hadoop1.2.1 配置文件详解
首先我们先回顾一下Hadoop的一些概念: Apache Hdoop 1.x 组成 NameNode(元数据服务器) Secondary NameNode(辅助元数据服务器) JobTracker(任 ...
- 常问面试题:C++中sizeof的陷阱及应答
C++中sizeof是经常被问到的一个概念,比如,下面的几个关于sizeof的面试题反复出现在各大IT公司的技术面试当中,我们有必要完全理解并掌握.注:在曾经面试大公司时,我的确被问到过这样的问题. ...
- Objective-C代码学习大纲(6)
2011-05-11 14:06 佚名 otierney 字号:T | T 本文为台湾出版的<Objective-C学习大纲>的翻译文档,系统介绍了Objective-C代码,很多名词为台 ...
- Vue基础-渲染函数-插槽
Vue 测试版本:Vue.js v2.5.13 先看个插槽的例子: <div id="app"> <child > <span slot-scope= ...
- js apply 引申
apply 可以接受两个参数, fun.apply(thisArg[, argsArray]) 其中第二个参数是数组或类数组对象,所以有时传 arguments 也很正常,但是,认真的说,我测试出来: ...
- IDEA安装Python环境,并加入Anaconda环境
为什么做这个事情? 1.首先,Anaconda中已经有各种科学计算环境,包括后面安装的tensorflow 2.通过IDEA中配置就达到了Scala.Python.Java同时运行的目的. Intel ...
- jsp+servlet+mvc模式图
在我们的开发中,最常用的开发模式莫过于MVC模式,即M--MODEL.V--View.C--Controller,这样不仅可以方便开发人员分工协作,提高开发效率,增强程序的可维护性和拓展性,而且利用C ...
- 每日集成CruiseControl.NET + SVN + Msbuild + NAnt
CruiseControl.NET-1.8.4.0-Setup.exe 是服务器,安装时可以选择生成windows service以便开启,建议测试时不用windows se ...
- Android Handler 的使用
Android UI 操作是线程不安全的.我们只能在UI线程或者说主线程中修改UI.试想多个Thread操作同一个UI,可能引起不一致.UI 线程的主要工作是:UI界面更新显示,各个控件的交互等等.一 ...