当前位置:   article > 正文

【使用 jupyter notebook 进行网络训练时显存不足,设置GPU占用率】_jupyter内存限制

jupyter内存限制

使用 Jupyter Notebook 进行长期模型训练时,可能由于 GPU 内存无法及时释放导致报错,可以调小batch_szie并且及时释放jupyter notebook占用的内存。

1 用到的方法和对象

config=tf.compat.v1.ConfigProto()  #返回一个session实例对象

config.gpu_options.allow_growth = True  # 配置GPU内存分配方式,按需增长
config.gpu_options.per_process_gpu_memory_fraction = 0.6  #限制GPU占用率 

set_session(tf.compat.v1.Session(config=config))#将上面的配置进行应用,设置全局会话

2 具体实现如下:只需在训练开始前调用该函数即可,其中GPU占用率可自行设置

  1. from keras.backend import set_session
  2. from keras.backend import clear_session
  3. from keras.backend import get_session
  4. import tensorflow as tf
  5. import gc #此模块提供可选的垃圾回收器的接口
  6. #使用 Jupyter Notebook 进行长期模型训练时,可能由于 GPU 内存无法及时释放导致报错
  7. #会话(Session)可以管理*TensorFlow运行时的所有资源
  8. def set_gpu():
  9. sess = get_session() #返回后端使用的TF会话。
  10. clear_session()#释放全局状态即重置keras生成的所有状态:这有助于避免旧模型和层的混乱,特别是在内存有限的时候。
  11. sess.close()#关闭会话
  12. try:
  13. del classifier
  14. except:
  15. pass
  16. print(gc.collect()) #若被调用时不包含参数,则启动完全的垃圾回收
  17. config = tf.compat.v1.ConfigProto()#返回一个session实例对象
  18. # 配置GPU内存分配方式,按需增长,很关键
  19. config.gpu_options.allow_growth = True
  20. config.gpu_options.per_process_gpu_memory_fraction = 0.6#限制GPU占用率
  21. ''' GPU可见设备到虚拟设备的映射,为逗号分割的列表,
  22. 本机GPU设备0映射到虚拟device:GPU:0 '''
  23. config.gpu_options.visible_device_list = "0"
  24. set_session(tf.compat.v1.Session(config=config))#将上面的配置进行应用,设置全局会话

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/908521
推荐阅读
相关标签
  

闽ICP备14008679号