zoukankan      html  css  js  c++  java
  • 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__可以查看包的版本和安装位置。

  • 相关阅读:
    硬件的效率与一致性
    深入理解SPI机制-服务发现机制
    spring 之7种重要设计模式
    list里放map list 放list
    jvm 三种编译
    几种不同格式的json解析
    Java知识点梳理——集合
    判断2个list中是否有相同的数据(相交)Collections.disjoint
    键相同,比较两个map中的值是否相同
    Map类型数据导出Excel--poi
  • 原文地址:https://www.cnblogs.com/time-flow1024/p/10308266.html
Copyright © 2011-2022 走看看