gpt4 book ai didi

gpu - tensorflow 2 : how to switch execution from GPU to CPU and back?

转载 作者:行者123 更新时间:2023-12-03 15:33:22 29 4
gpt4 key购买 nike

tensorflow 1.X 独立 keras 2.X,我曾经使用以下代码段在 GPU 上训练和在 CPU 上运行推理之间切换(由于某些原因,我的 RNN 模型要快得多):

keras.backend.clear_session()

def set_session(gpus: int = 0):
num_cores = cpu_count()

config = tf.ConfigProto(
intra_op_parallelism_threads=num_cores,
inter_op_parallelism_threads=num_cores,
allow_soft_placement=True,
device_count={"CPU": 1, "GPU": gpus},
)

session = tf.Session(config=config)
k.set_session(session)

ConfigProto tensorflow 中的功能不再可用2.0(我正在使用集成的 tensorflow.keras )。一开始,可以运行 tf.config.experimental.set_visible_devices()为了例如禁用 GPU,但对 set_visible_devices 的任何后续调用结果 RuntimeError: Visible devices cannot be modified after being initialized .有没有办法重新初始化可见设备,或者有没有另一种切换可用设备的方法?

最佳答案

您可以使用 tf.device 明确设置要使用的设备。例如:

import tensorflow as tf    

model = tf.keras.Model(...)

# Run training on GPU
with tf.device('/gpu:0'):
model.fit(...)

# Run inference on CPU
with tf.device('/cpu:0'):
model.predict(...)

如果您只有一个 CPU 和一个 GPU,则上面使用的名称应该有效。否则, device_lib.list_local_devices() 可以为您提供设备列表。 This post提供了一个很好的函数来只列出名称,我在此处对其进行了调整以显示 CPU:
from tensorflow.python.client import device_lib

def get_available_devices():
local_device_protos = device_lib.list_local_devices()
return [x.name for x in local_device_protos if x.device_type == 'GPU' or x.device_type == 'CPU']

关于gpu - tensorflow 2 : how to switch execution from GPU to CPU and back?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59411681/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com