tensorflow 服务器使用必看



  • 概述

    tensorflow有一个非常恼火的默认设置,几乎占满所有可见的显卡显存。个人PC并不用在意,反正资源都是独占,但是在服务器上,占着茅坑不**就非常的让人愤慨了。

    nvidia-smi简介

    nvidia-smi提供了一些查看显卡信息的界面,截图如下
    0_1522662063408_0bc6700f-d728-4c50-a387-ade8222790d5-image.png

    GPU Fan:风扇指标,0-1,越大风扇吹的越厉害吧。
    index: GPU Fan下面是GPU的一个编号。
    Name : GPU型号,这里是1080。
    Perf: 性能指标,这个很少看。
    Pwe: 功率。
    Memory-Usage:显存使用率。
    Volatile GPU-Util :GPU利用率。

    PS:
    一般关注两个指标:利用率和显存占有率。

    错误示范

    图中,PID=31415的进程占满了显存,但是该GPU利用率为0。推测首先,这个应用没有限制显存;第二,这个代码可能写崩了。

    使用服务器GPU资源注意

    为了文明礼貌的使用服务器,暂且先注意两条:

    • 设定可见的gpu,虽然这个对性能影响多大我还没测过。
    • 设置自适应的显存占用
    1.仅0号设备可见,这样就只会占用一块GPU的显存了。
    import os
    os.environ["CUDA_VISIBLE_DEVICES"] = "0"
    
    2.当allow_growth设置为True时,分配器将不会指定所有的GPU内存,而是根据需求增长
    config = tf.ConfigProto()  
    config.gpu_options.allow_growth=True  
    sess = tf.Session(config=config)  
    


  • 可以在运行py的时候指定显卡id
    如:

    CUDA_VISIBLE_DEVICES=0 python train.py
    

    也可以指定多个GPU:

    CUDA_VISIBLE_DEVICES=0,1,2 python train.py
    

    当然,直接在shell里export也是可以的

    export CUDA_VISIBLE_DEVICES=0,1,2
    


  • 这个操作更优雅一些👍



  • @continuetensorflow 服务器使用必看 中说:

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

    请问如果遇到GPU现存占满但是GPU利用率为0的情况,应该怎么改代码呢?


 

Copyright © 2018 bbs.dian.org.cn All rights reserved.

Looks like your connection to Dian was lost, please wait while we try to reconnect.