【笔记】tf中使用 tf.ConfigProto()配置Session运行参数 && GPU设备指定

       

tf.ConfigProto()函数用在创建session的时候,用来对session进行参数配置:

config=tf.ConfigProto(allow_soft_placement=True,allow_soft_placement=True)
config.gpu_options.per_process_gpu_memory_fraction=0.4   # 占用40%显存
sess=tf.Session(config=config)

1. 记录设备指派情况: tf.ConfigProto(log_device_placement=True)

        设置tf.ConfigProto()中参数log_device_placement=True,可以获取到operations和Tensor被指派到哪个设备(几号CPU或几号GPU)上运行,会在终端打印出各项操作是在那个设备上运行的。

2. 自动选择运行设备:tf.ConfigProto(allow_soft_placement=True)

        在tf中,通过命令 “with tf.device("/cpu:0"):”,允许手动设置操作运行的设备。如果手动设置不存在或者不可用,为了防止这种情况,可以设置tf.ConfigProto()中参数 allow_soft_placement=True,允许tf自动选择一个存在并且可用的设备来运行操作。

3. 限制GPU资源使用

        为了加快运行效率,tf 在初始化时会尝试分配所用可用的GPU显存资源给自己,这在多人使用的服务器上工作就会导致GPU占用,别人无法使用GPU工作的情况。

        tf提供了两种控制GPU资源使用的方法,一是让tf在运行过程中动态申请显存,需要多少就申请多少,第二种方法就是吸纳之GPU的使用率。

1)动态申请显存

config=tf.ConfigProto()
config.gpu_options.allow_growth=True
session=tf.Session(config=config)

2)限制GPU使用率

config=tf.ConfigProto()
config.gpu_options.per_process_gpu_momory_fraction=0.4   #占用40%显存
session=tf.Session(config=config)

或者

gpu_options=tf.GPUOptions(per_process_gpu_memory_fraction=0.4)
config=tf.ConfigProto(gpu_options=gpu_options)
session=tf.Session(config=config)

3)设置使用哪块GPU

1. 在python程序中设置

os.environ["CUDA_VISIBLE_DEVICES"]="0"   #使用GPU 0
os.environ["CUDA_VISIBLE_DEVICES"]="0,1"   # 使用GPU 0,1

2. 在执行python程序的时候

CUDA_VISIBLE_DEVICES=0,1 python yourcode.py

你可能感兴趣的:(小菜鸡加油,python,pytorch,人工智能)