跑Tensorflow模型设置用GPU的一些总结

    技术2022-07-11  84

    目录

    一、查看是否用了GPU跑代码

    二、用GPU跑代码,观察GPU情况

    三、设置用GPU跑代码的方法

    四、查看/安装cuda、cudnn版本

    五、代码一些问题

    错误1:No module named 'tensorflow.contrib'

    错误2:AttributeError: module 'scipy.misc' has no attribute 'imresize'

    错误3:


    一、查看是否用了GPU跑代码

    用如下代码可以看用tensorflow框架跑深度学习模型时用CPU还是GPU:

    from tensorflow.python.client import device_lib print(device_lib.list_local_devices())

    结果显示情况:

    可以看出在用一个CPU设备跑代码,接下来查看tensorflow版本

    conda list

    如果tensorflow版本高于tensorflow-gpu版本,则需要更新tensorflow-gpu版本,说明默认选择版本高的CPU版本来计算了,升级tensorflow-gpu版本命令为:

    pip install --index-url http://pypi.douban.com/simple --trusted-host pypi.douban.com --upgrade tensorflow-gpu

    二、用GPU跑代码,观察GPU情况

    查看机器上GPU情况 

    nvidia-smi

    定时更新显示机器上gpu的情况 

    nvidia-smi -l

    设定刷新时间(秒)显示GPU使用情况

    watch -n 3 nvidia-sm

    其中左上侧有0、1、2、3的编号,表示GPU的编号,在后面指定GPU时需要使用这个编号。

    在终端执行程序时指定GPU    CUDA_VISIBLE_DEVICES=0 python main.py

     #CUDA_VISIBLE_DEVICES=0,1,2,3  (任意几块)  python  your_file.py CUDA_VISIBLE_DEVICES=0  python main.py

    在Python代码中指定GPU  

    import os os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" os.environ["CUDA_VISIBLE_DEVICES"] = "0"

    设置定量的GPU使用量

    config = tf.ConfigProto()  config.gpu_options.per_process_gpu_memory_fraction = 0.9 # 占用GPU90%的显存  session = tf.Session(config=config)

    设置最小的GPU使用量

     config = tf.ConfigProto()   config.gpu_options.allow_growth = True   session = tf.Session(config=config)

    三、设置用GPU跑代码的方法

    pycharm运行代码指定GPU的方式大概有两种:

    1.在源代码中添加(我没有成功)

    import os # 指定使用0,1,2三块卡 os.environ["CUDA_VISIBLE_DEVICES"] = "0,1,2" 

    2.使用命令行启动程序时加上CUDA_VISIBLE_DEVICES=0,1,2 比如, CUDA_VISIBLE_DEVICES=0,1,2 python FasterRCNN.py

    CUDA_VISIBLE_DEVICES=0 python main.py

    运行结果:

    四、查看/安装cuda、cudnn版本

    1.查看显卡gpu情况

    nvidia-smi

    2.查看cuda版本

    cat /usr/local/cuda/version.txt

    3.查看cudnn版本

    cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

    4.不同版本的tensorflow-gpu与CUDA对应关系如下表所示:

    网址:https://tensorflow.google.cn/install/source

        对于版本号大于1.13的tensorflow-gpu版本,如1.14、1.15和2.0,要安装CUDA10.0,不要安装最新的CUDA10.1,安装后会提示缺少很多库文件,而导致GPU版本的tensorflow无法使用

    注意:

    (1)确定自己要安装哪个版本的tensorflow-gpu;

    (1)根据自己要装的tensorflow-gpu版本确定要下载的CUDA版本;

    (2)根据要安装的CUDA版本确定要下载的Cudnn版本。

    5.安装tensorflow-gpu

    pip install tensorflow-gpu==1.14.0

    6.有用的博客

    https://blog.csdn.net/aaon22357/article/details/82733218?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

    五、代码一些问题

    错误1:No module named 'tensorflow.contrib'

    原因:tensorflow 2.0以后没有 tensorflow.contrib,需要降低tensorflow版本问题解决

    source activate 环境

    conda list

    pip install tensorflow==1.14.0

    错误2:AttributeError: module 'scipy.misc' has no attribute 'imresize'

    解决方法:降低scipy的版本

    scipy原来版本1.4.1

    执行命令pip install scipy==1.2.1

                  pip3 install Pillow

    解决

    错误3:

    原因:conda list终端命令     查看tensorflow版本太高为2.2.0

    解决方法:降低tensorflow版本

    pip install  tensorflow==1.14.0

    重新安装keras

    pip install keras==2.2.0

    错误4:ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory  (跑yolo3-keras)

    我的环境:cuda9.0.176  、   cudnn7.3.0 、   tensorflow-gpu1.6.0 、  没有装tensorflow  、Keras2.1.5 、  python3.5.6 (版本都对应好了还是出错)  

    原因:因为cuda环境变量配置有误

    解决方法:    执行:

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/【CUDA版本】/lib64 #例如 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64

    之后执行:

    # Python import tensorflow as tf hello = tf.constant('Hello, TensorFlow!') sess = tf.Session() print(sess.run(hello))

    没有问题了 

    Processed: 0.021, SQL: 9