• Tensorflow检验GPU是否安装成功 及 使用GPU训练注意事项


    1. 已经安装cuda但是tensorflow仍然使用cpu加速的问题

    电脑上同时安装了GPU和CPU版本的TensorFlow,本来想用下面代码测试一下GPU程序,但无奈老是没有调用GPU。

    import tensorflow as tf
    
    with tf.device('/cpu:0'):
        a = tf.constant ([1.0, 2.0, 3.0], shape=[3], name='a')
        b = tf.constant ([1.0, 2.0, 3.0], shape=[3], name='b')
    with tf.device('/gpu:1'):
        c = a + b
    
    # 注意:allow_soft_placement=True表明:计算设备可自行选择,如果没有这个参数,会报错。
    # 因为不是所有的操作都可以被放在GPU上,如果强行将无法放在GPU上的操作指定到GPU上,将会报错。
    sess = tf.Session(config=tf.ConfigProto (allow_soft_placement=True, log_device_placement=True))
    # sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
    sess.run(tf.global_variables_initializer())
    print (sess.run(c))

    后来google了一下,发现gpu版本和cpu版本是不能同时安装的

    于是按照以下指令,卸载下面的安装包

    第0步:卸载protobuf
    pip uninstall protobuf
    
    第1步:卸载tensorflow
    pip uninstall tensorflow
    pip uninstall tensorflow-gpu
    
    第2步:强制重新安装Tensorflow并支持GPU
    pip install --upgrade --force-reinstall tensorflow-gpu
    
    第3步:如果还没有,请设置CUDA_VISIBLE_DEVICES,所以对我来说有2个GPU就可以了
    export CUDA_VISIBLE_DEVICES=0,1  

    一定要注意安装版本问题!!!!!!!!!!!!!!!!!!!!

     

    2. 使用TensorFlow的注意事项 

    (1)训练前要用nvidia-smi来查看一下当前GPU的使用情况,不要一下子就放上去跑把大家一起挤挂了。

    (2)如果机器上面的GPU之间不能够通信,那就先设定一块要用的GPU吧,在终端上面输入命令export CUDA_VISIBLE_DEVICES=0(数字是GPU的编号)。

      CUDA_VISIBLE_DEVICES 指定的设备号可能与nvidia-smi给出的设备号不一致,详见CUDA_DEVICE_ORDER 环境变量说明,这种不一致性就可能导致本打算分配一个空闲设备(根据nvidia-smi数据)给CUDA应用结果分配的却是正在使用中的设备的情况。

    注意:对于在代码内通过代码修改可见设备的情况,只有在代码访问GPU设备之前设置CUDA_VISIBLE_DEVICES变量才有效。 如果你模型保存之前没有转换到CPU上,那么模型重加载的时候会直接加载到GPU设备中,具体加载到哪个设备依赖于模型的device属性,一般默认为 cuda:0,即加载到系统的第一块显卡。如果我们在重加载模型前设置CUDA_VISIBLE_DEVICES,就能起到设备屏蔽的左右,而如果是模型重加载完后才设置 CUDA_VISIBLE_DEVICES, 设置无效,因为GPU设备已经被访问了。

    (3)用Tensorflow创建session的时候要注意设置内存使用情况,特别是内存资源不够而且要和别人共享一块GPU的时候(留一点给别人用):

    gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.9) 
    with tf.Session(config=tf.ConfigProto(gpu_options=gpu_options)) as sess: 
    fraction设置使用内存的百分比。

    (4)如果要用with tf.device(‘/gpu:0’):,只能够在所有运算都能在GPU上进行才可以,否则就会报错。如果一定要这样,则要指定哪些操作可以使用GPU,或者设置从GPU可以转移到CPU上运算。

    (5)Win10: ImportError: DLL load failed: The specified module could not be found

    版本装错了,之前是TensorFlow 1.13.0 + cuda 8.0 + cuDNN5.1,,改成TensorFlow 1.12.0就好了

    参考文献:

    【1】Tensorflow利用GPU训练注意事项

    【2】GPU上的张量流:没有已知设备,尽管cuda的deviceQuery返回“PASS”结果

    【3】tensorflow 使用CPU而不使用GPU的问题解决【暂时还没遇到】

    【4】Windows环境下安装TensorFlow(CPU和GPU版)

    【5】关于tensorflow gpu版和cpu版网上说的容易混淆的一点【有用】

    【6】Win10: ImportError: DLL load failed: The specified module could not be found #2

  • 相关阅读:
    力扣516题、72题、1312题(最长回文子序列,编辑距离,构造回文串)
    力扣53题、1143题(最大子数组问题、最长公共子序列)
    力扣704题、34题(二分查找)
    力扣300题、354题(最长递增子序列,信封嵌套)
    力扣509题、70题(斐波那契数列、爬楼梯)
    力扣206题、92题、25题(反转链表)
    力扣234题(回文链表)
    力扣239题(单调队列)
    力扣496题、503题(单调栈)
    面试题简答题
  • 原文地址:https://www.cnblogs.com/nxf-rabbit75/p/10639833.html
Copyright © 2020-2023  润新知