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__可以查看包的版本和安装位置。

  • 相关阅读:
    Shared Memory in Windows NT
    Layered Memory Management in Win32
    软件项目管理的75条建议
    Load pdbs when you need it
    Stray pointer 野指针
    About the Rebase and Bind operation in the production of software
    About "Serious Error: No RTTI Data"
    Realizing 4 GB of Address Space[MSDN]
    [bbk4397] 第1集 第一章 AMS介绍
    [bbk3204] 第67集 Chapter 17Monitoring and Detecting Lock Contention(00)
  • 原文地址:https://www.cnblogs.com/time-flow1024/p/10308266.html
Copyright © 2011-2022 走看看