1.在运行之前先查看GPU的使用情况:
指令:nvidia-smi 备注:查看GPU此时的使用情况
或者
指令:watch nvidia-smi 备注:实时返回GPU使用情况

2.指定GPU训练:
方法一、在python程序中设置:
代码:os.environ[‘CUDA_VISIBLE_DEVICES’] = ‘0’ 备注:使用 GPU 0
代码:os.environ[‘CUDA_VISIBLE_DEVICES’] = ‘0,1’ 备注:使用 GPU 0,1
方法二、在执行python程序时候:
指令:CUDA_VISIBLE_DEVICES=2 python yourcode.py
指令:CUDA_VISIBLE_DEVICES=0,1 python yourcode.py
备注:‘=’的左右不允许有空格

**注:**TensorFlow会默认直接占满我们模型部署的GPU的存储资源,只允许一个小内存的程序也会占用所有GPU资源。因此有的时候我们通过nvidia-smi查看GPU状态的时候,会发现有些GPU的计算利用率很低或者计算利用率为0,但是存储被占满了,而这个时候其他人也不能使用这块GPU。但是现在公司的问题是模型多,卡不够用,所有只能“文明”使用GPU,如果设置为允许动态增长的话,这样这个GPU没有被占的存储还可以被其他人使用。

3.两种限定GPU占用量的方法:
方法一、设置定量的GPU显存使用量:
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4 # 占用GPU40%的显存
session = tf.Session(config=config)
方法二、设置最小的GPU显存使用量,动态申请显存:(建议)
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config)

注:还有一个问题就是计算资源闲置,发现计算资源闲置的一个很简单的方法就是使用命令nvidia-smi查看GPU的使用状态,只要GPU的计算时间使用率没有达到80%-100%,,都是对GPU的极大浪费。

4.将数据的处理使用多线程的queue在CPU上进行,使得GPU随时都有充足的数据使用,更专注于训练,这样可以大幅度提升模型的训练速度。
with tf.device(‘/cpu:0’):
# function to get and process images or data.
distorted_inputs = load_and_distort_images()

5.程序中跟训练无关的尽量不要sess.run()操作

6.训练代码的优化等,可参考:
http://d0evi1.com/tensorflow/performance/

---------------------
作者:Peanut_范
来源:CSDN
原文:https://blog.csdn.net/u013841196/article/details/82468884

最新文章

  1. Deep learning:四十六(DropConnect简单理解)
  2. ASP.NET MVC 请求流程:Route
  3. Leetcode 132. Palindrome Partitioning II
  4. CSS_css sprite原理优缺点及使用
  5. [BS-10] 统一设置app所有页面的“返回”按钮样式
  6. Hadoop no.1
  7. Caching Best Practices--reference
  8. Activity透明/半透明效果的设置transparent(两种实现方法)
  9. sql server 2008 中的架构(schame)理解
  10. 通过扩展改善ASP.NET MVC的验证机制[使用篇]
  11. flex 布局实现固定头部和底部,中间滚动布局
  12. 深入理解iostat
  13. Linux安装gcc时碰到的有关问题解决(解决gcc依赖有关问题)
  14. vscode 开发 Java web 急速教程
  15. python-day81--Ajax
  16. 【CentOS】安装部署jenkins从git获取代码[转]
  17. 持续集成之路 —— Mock对象引起的测试失败
  18. Android Animation动画效果简介
  19. MySQL -- 性能优化的最佳20+条经验
  20. python之Queue

热门文章

  1. oracle 提取文本中的数字
  2. 以 CheatEngine 为例的六个质量属性
  3. 记录我对'我们有成熟的时间复杂度为O(n)的算法得到数组中任意第k大的数'的误解
  4. Vacuum Pump Manufacturer - Vacuum Pump: Prevents Reactive Compound Decomposition Products
  5. Centos5.5更新源
  6. Cisco无线mDNS
  7. 洛谷P1991 无线通讯网(最小生成树性质+连通块)
  8. 浅谈CVE-2018-12613文件包含/buuojHCTF2018签到题Writeup
  9. Go文档:go命令
  10. ThinkPHP5 动态生成图片缩略图