tf.ConfigProto()主要是用来配置session运行的一些参数
比如:
1 | config = tf.ConfigProto(device_count={'GPU': GPU_NUM}, allow_soft_placement=True) |
1 | config = tf.ConfigProto(allow_soft_placement=True, allow_soft_placement=True) |
log_device_placement=True:记录设备指派情况
- 设置log_device_placement=True,可以获取到op和tensor被指派到哪个设备(几号CPU或者几号GPU),会在终端打印出各项操作是在哪个设备上运行
allow_soft_placement=True:自动选择运行设备
- 在tf中通过命令 with tf.device(‘/cpu:0’) 允许手动设置操作运行的设备,如果手动设置的设备不存在或者不可用,就会导致tf程序等候或者异常,为了防止这种情况,可以设置tf.ConfigPro()中参数allow_soft_placement=True,允许tf自动选择一个存在并且可用的设备来运行操作
还可以限制CPU资源使用
为了加快运行效率,tf在初始化时会尝试分配所有可用的GPU显存资源给自己,这在多人使用的服务器上工作就会导致GPU占用,别人无法使用GPU工作的情况。
tf提供了两种控制GPU资源使用的方法,一种是让tf在运行过程中动态申请显存,需要多少就申请多少;另一种就是限制GPU的使用率。
1、动态申请显存
1 | config = tf.ConfigProto() |
2、限制GPU使用率
1 | config = tf.ConfigProto() |
或者
1 | gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.4) |
参考: