Ubuntu 18.04 nvidia driver 390.48 安装 TensorFlow 1.12.0 和 PyTorch 1.0.0 详细教程
最近要在个人台式机上搭建TensorFlow和PyTorch运行环境,期间遇到了一些问题。这里就把解决的过程记录下来,同时也可以作为安装上述环境的过程记录。
如果没有遇到类似的问题,想直接从零安装上述两个包的运行环境的,请直接阅读第三部分。
一、硬件和环境配置:
1)操作系统:Ubuntu 18.04;
2)NVIDIA Driver Version :390.48;(可通过nvidia-smi命令查到)
3)GPU:GTX 1080; (可通过nvidia-smi命令查到)
4)已安装CUDA Toolkit 9.1; (可通过nvcc --version命令查到)
5)已安装Anaconda3。
二、问题描述及解决过程:
1)在安装Anaconda3后,创建名为mydev的虚拟环境
conda create --name mydev
2)随后
source activate mydev
启用虚拟环境
3)安装torch1.0.0和tensorflow1.12.0
conda install -c pytorch pytorch
conda install tensorflow-gpu
4)安装完成后,检测上述两个包是否均能够使用GPU进行训练
pytorch的测试代码:
# -*- coding: utf-8 -*-
from __future__ import print_function
import os
import torch cuda = torch.cuda.is_available()
if cuda:
print('OK! CUDA device detected.')
else :
print('Error, CUDA device NOT detected.')
tensorflow的测试代码:
import tensorflow as tf
print(tf.test.is_gpu_available())
测试结果:
pytorch测试结果显示:OK! CUDA device detected.
tensorflow测试结果显示:False.
说明torch可以检测到GPU但是tensorflow没检测到GPU。
5)开始查错。首先
source deactivate
退出当前虚拟环境
6)然后
source activate mydev
重新进入虚拟环境,
conda list
让conda列出当前虚拟环境下安装的所有包的信息,目的是查看包的版本
发现一个名为cudatoolkit的包,其版本是9.2,是随着tensorflow一并安装到虚拟环境内的。看似没有什么问题。
7)在当前虚拟环境内进入python
python
在python内,敲入:
>>> import tensorflow as tf
>>> tf.__file__
>>> tf.__version__
来获取tensorflow的安装位置,我们要检查一下tensorflow到底安装到了哪里,以及版本对不对。
从python的输出结果来看:
tensorflow的版本是1.10.0,而且位置也不对,被安装到了~/.local/lib/python3.6/site-packages/...目录下,而不是类似~/anaconda3/envs/mydev/...下。
同样类似的问题也出现在了pytorch上。
突然回想起来电脑刚装完驱动和CUDA Toolkit的时候,可能用过pip安装过tensorflow,而且当时没有意识到tensorflow有CPU和GPU版本之分,就误安装了tensorflow1.10的CPU版,而pip安装的包会优先于conda虚拟环境内安装的包,所以都乱套了。
8)根据上面的发现,我们要退出当前虚拟环境,
source deactivate
然后在主环境内
pip uninstall tensorflow
pip uninstall torch
卸载掉这两个旧的包。
9)卸载之后,再
source activate mydev
进入虚拟环境,运行tensorflow的测试代码,显示
cudaGetDevice() failed. Status: CUDA driver version is insufficient for CUDA runtime version
意思是CUDA驱动版本和CUDA运行库版本不匹配,这是由于之前所说的cudatoolkit版本是9.2,版本过高造成的。
10)于是根据出错信息上网搜解决措施,发现在conda虚拟环境内,利用
conda update --all
可以使conda意识到在当前虚拟环境内,包之间的版本依赖问题,敲入上述指令后,发现conda提出的解决方案中,将cudatoolkit降级为9.0,pytorch降级为0.4.1。
于是很欣慰的敲入上述指令并运行,发现tensorflow可以发现GPU了。
11)第10步中我们降级了pytorch,所以我们要重新安装pytorch为1.0.0版:
conda install -c pytorch pytorch
12)完整操作后,我们就有了tensorflow1.12.0和pytorch1.0.0了~
三、上述的环境配置全过程整理
1)首先,如果您的电脑之前利用pip命令曾经安装过tensorflow或者pytorch,请用
pip uninstall tensorflow
pip uninstall torch
在pip中卸载掉这两个包。
2)随后按照如下步骤操作:
创建虚拟环境
conda create --name mydev
进入虚拟环境
source activate mydev
安装tensorflow和pytorch
conda install -c pytorch pytorch
conda install tensorflow-gpu
让conda再次整理包间的依赖
conda update --all
重新安装pytorch
conda install -c pytorch pytorch
3)测试安装好的两个包是否均支持GPU,测试代码已在上面给出。
四、总结
1)安装tensorflow时,一定要写tensorflow-gpu而不是tensorflow,否则安装的是tensorflow的CPU版而不是GPU版。
2)理论上来说,pip和conda命令是冲突的。pip解决的是python内包之间的依赖问题,而conda的目标是管理任何编程语言之间的包的依赖问题。所以根据喜好,以后尽量使用二者中的一个。
3)当包的状态不对时,可以利用packageName.__version__和packageName.__file__可以查看包的版本和安装位置。
Ubuntu 18.04 nvidia driver 390.48 安装 TensorFlow 1.12.0 和 PyTorch 1.0.0 详细教程的更多相关文章
- Ubuntu 18.04 下 emscripten SDK 的安装
Ubuntu 18.04 下 emscripten SDK 的安装http://kripken.github.io/emscripten-site/docs/getting_started/downl ...
- 在 Ubuntu 18.04 LTS 无头服务器上安装 Oracle VirtualBox
作者: Sk 译者: LCTT qhwdw | 2018-10-12 01:59 本教程将指导你在 Ubuntu 18.04 LTS 无头服务器上,一步一步地安装 Oracle VirtualBox. ...
- Windows 10、Ubuntu 18.04 双系统 双硬盘 安装经验总结
首先说明,我假设读者懂得分区.安装系统,所以不再深入讨论具体操作. 如果需要手把手教程,建议先参考其它Windows中加装Linux的相关文章. 网上其它文章.教程的常见问题是,各家机器配置不一样,安 ...
- Ubuntu 14.04 Nvidia显卡驱动手动安装及设置
更换主板修复grub 引导后,无法从Nvidia进入系统(光标闪烁), 可能是显卡驱动出了问题. 1. 进入BIOS设置, 从集成显卡进入系统 将显示器连接到集显的VGI口, 并在BIOS中设置用 ...
- Ubuntu 18.04 下用命令行安装Sublime
介绍: 添加来源: $ wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add - $ sud ...
- Ubuntu 18.04 下 PostgreSQL 10 的安装与基础配置
下载安装 在命令行执行如下语句: apt-get install postgresql-10 该指令会帮助你下载如下PostgreSQL组件: name |explain | ------------ ...
- Ubuntu 18.04 截图工具-flameshot(安装及使用)
安装flameshot:https://github.com/lupoDharkael/flameshot 安装命令: sudo apt-get install flameshot 设置>设备& ...
- Ubuntu 18.04 64位安装tensorflow-gpu
第一步(可直接跳到第二步):安装nvidia显卡驱动 linux用户可以通过官方ppa解决安装GPU驱动的问题.使用如下命令添加Graphic Drivers PPA: 1 sudo add-apt- ...
- 如何在Ubuntu 18.04上安装Pip
一.简介: Pip是一个软件包管理系统,它简化了用Python编写的软件包(如Python包索引(PyPI)中的软件包)的安装和管理. 在Ubuntu 18.04上缺省没有安装Pip,但安装非常简单. ...
随机推荐
- LeetCode 206. Reverse Linked List (倒转链表)
Reverse a singly linked list. 题目标签:Linked List 题目给了我们一个链表,要求我们倒转链表. 利用递归,新设一个newHead = null,每一轮 把下一个 ...
- 嵌入式C语言经常使用keyword
1.statickeyword 这个keyword前面也有提到.它的作用是强大的. 要对statickeyword深入了解.首先须要掌握标准C程序的组成. 标准C程序一直由下列部分组成: ...
- java多线程——线程通信
一.线程通信目标 1.线程通信的目标是使线程间能够互相发送信号 2.线程通信使线程能够等待其他线程的信号 二.几种方式 1.通过共享对象 2.忙等待 线程 B 运行在一个循环里,以等待信号 (不释放c ...
- Android 触摸提示音【转】
本文转载自:http://blog.csdn.net/Jin_HeZai/article/details/46791567 近期任务,涉及Android触摸提示音. 首先,定位源码目标.很显然的,在原 ...
- 在Java中实现UDP协议编程(DatagramSocket/DatagramPacket)
1.什么是UDP协议? UDP( User Datagram Protocol )协议是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层,处于IP协议的上一层. ...
- bzoj 2333 [SCOI2011]棘手的操作 —— 可并堆
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2333 稍微复杂,参考了博客:http://hzwer.com/5780.html 用 set ...
- Request returned failure status 401
Request returned failure status 401.Invalid OpenStack Identity credentials.
- PCB genesis Slot槽转钻孔(不用G85命令)实现方法
PCB钻Slot槽一般都采用G85命令钻槽孔,而采用G85命令工程CAM无法准确的知道Slot槽钻多少个孔,并不能决定钻槽孔的顺序,因为采用G85命令钻孔密度与钻槽顺序由钻机本身决定的.在这里介绍一种 ...
- E20170623-hm
verbose adj. 冗长的,啰唆的,累赘的; reverse vt. (使) 反转; (使) 颠倒; 掉换,交换; [法] 撤消,推翻; adj. 反面的; ...
- [Swift通天遁地]四、网络和线程-(14)创建一个Socket服务端
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...