TensorFlow 显存使用机制详解
默认情况下,TensorFlow会映射进程可见的所有GPU的几乎所有GPU内存(取决于CUDA_VISIBLE_DEVICES)。通过减少内存碎片,可以更有效地使用设备上相对宝贵的GPU内存资源。
在某些情况下,最理想的是进程只分配可用内存的一个子集,或者仅根据进程需要增加内存使用量。TensorFlow在Session上提供两个Config选项来进行控制。
(1):自主申请所用的内存空间
第一个是allow_growth选项,它试图根据运行时的需要来分配GPU内存:它刚开始分配很少的内存,随着Session开始运行并需要更多GPU内存,我们会扩展TensorFlow进程所需的GPU内存区域。请注意,我们不会释放内存,因为这可能导致出现更严重的内存碎片情况。要开启此选项,请通过以下方式在ConfigProto中设置选项:
config=tf.ConfigProto() config.gpu_options.allow_growth=True session=tf.Session(config=config,...)
(2)规定可用最大内存占单个GPU的总内存比例
第二个是per_process_gpu_memory_fraction选项,它可以决定每个可见GPU应分配到的内存占总内存量的比例。例如,您可以通过以下方式指定TensorFlow仅分配每个GPU总内存的40%:
config=tf.ConfigProto() config.gpu_options.per_process_gpu_memory_fraction=0.4 session=tf.Session(config=config,...)
如要真正限制TensorFlow进程可使用的GPU内存量,这非常实用。
以上这篇TensorFlow显存使用机制详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。