ubuntu16.04 安装cuda9.0+cudnn7.0.5+tensorflow+nvidia-docker配置GPU服务
【摘要】 docker很好用,但是在GPU服务器上使用docker却比较复杂,需要一些技巧,下面将介绍一下在ubuntu16.04环境下的GPU-docker环境搭建过程。
第一步:
删除之前的nvidia驱动:sudo apt-get purge nvidia-*
安装nvidia-<version> 此处version为396
n
此处需先配置ppa源,速度较慢,慢慢等吧,这里还没想出好办法解决。
sudo add-apt-repository ppa:graphics-drivers/ppa
更新源,运行 sudo apt-get update
查询nvidia驱动可用版本,运行sudo apt-cache search nvidia-* 查询相应版本
安装驱动,运行 sudo apt-get install nvidia-396
第二步:
安装cuda9.0
地址:https://developer.nvidia.com/cuda-90-download-archive 选择相应版本,我这里用的ubuntu16.04 64x
根据提示安装:
`sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64-deb`
`sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub`
`sudo apt-get update`
`sudo apt-get install cuda`
这里有坑:遇到一些奇怪问题,总结如下:
(1)当遇到旧版本删除不够彻底时,会报
下载 file:/var/cuda-repo-9-1-local/./nvidia-387-dev_387.26-0ubuntu1_amd64.deb 无法找到文件 - /var/cuda-repo-9-1-local/./nvidia-387-dev_387.26-0ubuntu1_amd64.deb (2: 没有那个文件或目录) 失败
错误,此时是判断为key错误,之前的9-1版本卸载后,key也删掉了,
使用命令`sudo apt-key add /var/cuda-repo-9-1-local/7fa2af80.pub`解决
(2)内核存在旧版本时,报错
正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
在处理时有错误发生:
initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)
此时需要删除系统旧内核:
sudo vi /etc/default/grub
dpkg --get-selections|grep linux
选中旧版本,删除:
sudo apt-get remove linux-image-4.4.0-119-generic
再次查看版本:
看起来旧版本已经被删除了,
看一下系统内核版本:
uname -a
更新系统解决(initramfs-tools)问题:
sudo apt-get update
sudo apt-get upgrade
重启电脑:
sudo shutdown -r now
再次查看nvidia能够正常识别:
cat /proc/driver/nvidia/version
nvcc -V
nvidia-smi
(3)nvidia-smi报错
重装nvidia device
nvidia-smi
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
测试cuda(正确显示):
nvidia-smi
第三步
安装cudnn:
此处有坑,英伟达用国内ip登不上去,要翻墙登录后再下载,有些同学给了镜像,我这里下载的是:
libcudnn7_7.0.5.15-1+cuda9.0_amd64.deb
用runtime library
安装步骤与cuda相似:
chmod 777 ibcudnn7_7.0.5.15-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7_7.0.5.15-1+cuda9.0_amd64.deb
等待安装,就好了
第四步
tensorflow-gpu安装
pip install tensorflow-gpu
安装完成 tensorflow-gpu,可以测试一下
进入ipython(以下为测试正常启动gpu画面)
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!’)
sess = tf.Session()
接下来,要安装nvidia-docker了:
第五步
nvidia-docker
参考:https://github.com/NVIDIA/nvidia-docker
#如果你安装了nvidia-docker 1.0:我们需要删除它和所有现有的GPU容器
docker volume ls -q -f driver = nvidia-docker | xargs -r -I {} -n1 docker ps -q -a -f volume = {} | xargs -r docker rm -f
sudo apt-get purge -y nvidia-docker
#添加软件包仓库
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
sudo apt-key add -
distribution = $( ./ etc/os-release ; echo $ ID $ VERSION_ID )
curl -s -L https://nvidia.github.io/nvidia-docker/ $ distribution /nvidia-docker.list | \
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
#安装nvidia-docker2并重新加载Docker守护进程配置
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd
#使用最新官方CUDA图像
docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
**下面是一些报错信息的修正方法:**
6.安装完成后,docker下载速度慢,报错:
error pulling image configuration: Gethttps://dseasb33srnrn.cloudfront.net/registry-v2/docker/registry/v2/blobs/sha256/97/9782c71c14b7960794c9141f66721f7fff873d4de027b726c696ac1d54a99ce2/data?Expires=1524001324&Signature=EpbapfSa3ftVsuyhEHYwJjJILAzQhyf0iN4YQ1QpwXU9ITPlUhhIExWb6Efh~6ya3BkI44p3XvEI~SnrPPDyRYvsNRLbCc2qHhERV13J6BC7Ksylk54l75aKsigSHSFlmddvdR7Q1YszgKPEBFTAyMWzQ2GADaDKgMXjfN4W1Qk_&Key-Pair-Id=APKAJECH5M7VWIS5YZ6Q: net/http: TLS handshake timeout
这是因为安装nvidia-docker会覆盖原来的/etc/docker/daemon.json文件
如果文件夹不存在:
sudo mkdir -p /etc/docker
打开 /etc/docker/daemon.json;
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://4x0vrhen.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
问题解决
7.在安装nvidia-docker2的时候,报错:
$ sudo apt-get install -y nvidia-docker2
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:
下列软件包有未满足的依赖关系:
nvidia-docker2 : 依赖: docker-ce (= 18.03.0~ce-0~ubuntu) 但无法安装它 或
docker-ee (= 18.03.0~ee-0~ubuntu) 但无法安装它
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
首先打开清华源:
https://mirrors.tuna.tsinghua.edu.cn/
有两个镜像:docker和docker-ce
这里用docker-ce,因为nvidia-docker是基于docker-ce的:
最重要的几条命令:
删掉原来的docker:
sudo apt-get remove docker docker-enginedocker.io
sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
这里注意了:
网上大部分的策略是:
curl -fsSLhttps://download.docker.com/linux/debian/gpg | sudo apt-key add -
这句话没办法运行,因为被墙掉了:
改用清华的gpg:curl -fsSLhttps://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64]https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
安装docker-ce和nvidia-docker2:
sudo apt-get install docker-ce
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd
8.报如下错误时:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "process_linux.go:402: container init caused \"process_linux.go:385: running prestart hook 1 caused \\\"error running hook: exit status 1, stdout: , stderr: exec command: [/usr/bin/nvidia-container-cli --load-kmods configure --ldconfig=@/sbin/ldconfig.real --device=all --compute --utility --require=cuda>=9.0 --pid=24351 /var/lib/docker/aufs/mnt/085a2f9697d8b4dfbf269d413e032b46e948fa619e82f7a50b0dbac97e716be6]\\\\nnvidia-container-cli: initialization error: cuda error: no cuda-capable device is detected\\\\n\\\"\"": unknown.
可能是nvidia driver/cuda/nvidia-docker2之间出了问题;
将三者彻底删除
apt-get purge nvidia driver-* cuda-* nvidia-docker2
apt-get update
重新安装cuda-9-0,会自动安装相应的nvidia driver-384 就用默认的版本
测试nvidia-smi通过
重新安装nvidia-docker2,
测试 docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi通过
问题解决
到这里,就完成了ubuntu16.04 安装cuda9.0+cudnn7.0.5+tensorflow+nvidia-docker配置GPU服务器
ubuntu16.04 安装cuda9.0+cudnn7.0.5+tensorflow+nvidia-docker配置GPU服务的更多相关文章
- Ubuntu16.04安装cuda9.0+cudnn7.0
Ubuntu16.04安装cuda9.0+cudnn7.0 这篇记录拖了好久,估计是去年6月份就已经安装过几遍,然后一方面因为俺比较懒,一方面后面没有经常在自己电脑上跑算法,比较少装cuda和cudn ...
- ubuntu16.04安装tensorflow-gpu和cuda8.0加速训练
转载请注明出处:http://www.cnblogs.com/buxizhizhoum/p/8086230.html 环境: 系统:ubuntu 16.04 cpu:i5 gpu:gt920m mem ...
- Ubuntu16.04 安装cuda9.0 cudnn 7.0.5
参考网址:https://blog.csdn.net/zhuangwu116/article/details/81063234 (1)下载安装文件: 下载cuda9.0 runfile 文件 下载地址 ...
- Ubuntu16.04 安装 CUDA9.2(总结一些新手容易遇到的问题)
系统:Ubuntu16.04 64bit 显卡:Nvidia GEFORCE 940MX 驱动:NVIDIA-Linux-x86_64-396.18.run 软件:cuda_9.2.88_396.26 ...
- Ubuntu16.04安装Ambari 2.7.3
概念了解 Ambair介绍 Apache Ambari是一个用于支持大数据软件供应 管理与监控软件.它也是一个分布式软件,分为Ambair-Server与Ambari-Client两个部分.在生产环境 ...
- Tensorflow1.5.0+cuda9.0+cudnn7.0+gtx1080+ubuntu16.04
目录 Tensorflow1.5.0+cuda9.0+cudnn7.0+gtx1080+ubuntu16.04 0. 前记 1. 环境说明 2. 安装GTX1080显卡驱动 3. CUDA 9.0安装 ...
- ubuntu 16.04 +anaconda3.6 +Nvidia DRIVER 390.77 +CUDA9.0 +cudnn7.0.4+tensorflow1.5.0+neural-style
这是我第一个人工智能实验.虽然原理不是很懂,但是觉得深度学习真的很有趣.教程如下. Table of Contents 配置 时间轴 前期准备工作 anaconda3 安装 bug 1:conda:未 ...
- ubuntu18.04下搭建深度学习环境anaconda2+ cuda9.0+cudnn7.0.5+tensorflow1.7【原创】【学习笔记】
PC:ubuntu18.04.i5.七彩虹GTX1060显卡.固态硬盘.机械硬盘 作者:庄泽彬(欢迎转载,请注明作者) 说明:记录在ubuntu18.04环境下搭建深度学习的环境,之前安装了cuda9 ...
- ubuntu16.04安装cuda8.0试错锦集
ubuntu16.04安装cuda8.0试错锦集 参考文献: [http://www.jianshu.com/p/35c7fde85968] [http://blog.csdn.net/sinat_1 ...
随机推荐
- [BZOJ2821][Luogu4135] 作诗
由于BZOJ这题要contact lydsy2012@163.com,所以就放个洛谷的传送门(我木有BZOJ权限号啊0.0) 诶?这不是莫队裸题?? 等等--这题强制在线欸,没办法莫队了,肿么破? 之 ...
- 「考试」 Or
不得不说是一道多项式神题了. 虽然说颓代码颓的很厉害不过最终A掉了. 好好讲一讲这道题. 涉及的知识点是:高阶导数,NTT,指数型母函数,泰勒公式,以及意志力和数学推导能力. 那就开始了. 一个测试点 ...
- NOIP模拟27
两个机房又和在一起考试 开场看了看T1,感觉挺水的,过. T2,这个式子有点奇怪,暂时没什么思路,过 T3,好像保留最后几位换个根处理一下就行了,过,先去打T1 于是T1大概打了0.5h,连暴力带正解 ...
- 【java基础】程序员你真的理解反射机制吗?
目录 前言 1.反射的概述 2.正式使用反射之前很有必要了解的Class类 3.反射的使用 前言 很多讲解反射的博客文章并没有详细讲解Class类,~当然包括之前的我也一样~,这样的文章只会让反射徒有 ...
- docker compose网络设置
(系统:Centos 7.4 ,docker 版本:18.03.1-ce, docker-compose version 1.18.0) cat docker-compose.yml version: ...
- 一文教您如何通过 Java 压缩文件,打包一个 tar.gz Filebeat 采集器包
欢迎关注笔者的公众号: 小哈学Java, 专注于推送 Java 领域优质干货文章!! 个人网站: https://www.exception.site/essay/create-tar-gz-by-j ...
- 『题解』洛谷P1351 联合权值
更好的阅读体验 Portal Portal1: Luogu Portal2: LibreOJ Description 无向连通图\(\mathrm G\)有\(n\)个点,\(n - 1\)条边.点从 ...
- 机器学习环境搭建安装TensorFlow1.13.1+Anaconda3.5.3+Python3.7.1+Win10
安装Python3.7.1 此处不再赘述安装过程,作为记录 安装Anaconda3.5.3 Anaconda3-5.3.0-Windows-x86_64.exe 方案1. 可以直接从官网https:/ ...
- python经典算法面试题1.5:如何找出单链表中的倒数第K个元素
本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. [微软笔试题] 难度系数:⭐⭐⭐ 考察频率:⭐⭐⭐⭐⭐ 题目描 ...
- PHP判断是否关注微信公众号
PHP判断是否关注微信公众号 1 服务号直接请求这个接口https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140839 su ...