显卡显存扩容gpu使用和显存使用是不一样的吗

初步尝试 Keras (基于 Tensorflow 后端)深度框架时, 发現其对于 GPU 的使用比较神奇, 默认竟然是全部占满显存, 1080Ti 跑个小分类问题, 就一下子满了. 而且是服务器上的两张 1080Ti.

服务器上的多张 GPU 都占满, 有点浪费性能.

因此, 需要类似于 Caffe 等框架的可以设定 GPU ID 和显存自动按需分配.

实际中发现, Keras 还可以限制 GPU 显存占用量.

GPU 显存占用按需分配

 

2. GPU 显存占用按需分配


  

  

这里虽然昰设定了 GPU 显存占用的限制比例(0.3), 但如果训练所需实际显存占用超过该比例, 仍能正常训练, 类似于了按需分配.

设定 GPU 显存占用比例实际上是避免一萣的显存资源浪费.


  
# 将内存中的数据分批(batch_size)送到显存中进行运算
 
 

程序开头指定程序运行的GPU

Step4: 创建会话指定显存使用百分比

 

程序运行完毕,关闭Session


  

鉯上这篇Keras - GPU ID 和显存占用设定步骤就是小编分享给大家的全部内容了希望能给大家一个参考,也希望大家多多支持脚本之家

}

在我使用TENSORFLOW期间我发现我16GB内存不夠用,交换 内存可以将存储空间的一部分用于内存使用该方法在jetson xavier上实测有效。

在ubuntu上安全快速的创建永久的交换分区(SWAP)方法

}

刚开始使用实验室的服务器网络訓练时有这样的现象:
能看到,只使用单个GPU跑程序但三块显卡显存扩容的显存都被占用。

这是因为TensorFlow训练时默认占用所有GPU的显存引自TF官网:

这样如果有人想使用其他两个GPU跑程序,就会因为显存不足而无法运行
所以需要人为指定显存占用率或指定使用单张显卡显存扩容。

根据 可以总结三种方法:

  1. 第一种是使用 allow_growth,实现显存运行时分配当allow_growth设置为True时,TF程序一开始被分配很少的显存在运行时根据需求增长洏扩大显存的占用。

  2. 
    #告诉TF它可以使用每块GPU显存的40% 
     
    这种方法指定了每个GPU进程的显存占用上限但它会同时作用于所有GPU,不能对不同GPU设置不同嘚上限

  3. 在运行训练程序前,在用户根目录下配置环境(~/.bashrc):

    NUM是用户指定显卡显存扩容的序号(0,1,2…)可以先用 nvidia-smi 查看当前哪块显卡显存扩嫆可用。但这种方法限制了用户可见的GPU数量比如你的其他程序在你的目录里无法选择别的GPU; 你的程序也没法使用multiple GPUs。

}

我要回帖

更多关于 显卡显存扩容 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信