gpt4 book ai didi

tensorflow - 分布式 Tensorflow 保存失败无设备

转载 作者:行者123 更新时间:2023-12-05 03:09:38 25 4
gpt4 key购买 nike

我正在按照示例 here创建一个带有参数服务器和 n 个 worker 的分布式 tensorflow 模型。我没有任何 GPU,所有工作都分布在 CPU 上

在 chief worker 中,我想每隔一些步骤保存我的变量,但是调用保存程序会导致以下异常:

Cannot assign a device to node 'save_1/RestoreV2_21': 
Could not satisfy explicit device specification
'/job:ps/task:0/device:CPU:0' because no devices matching that
specification are registered in this process; available devices:
/job:localhost/replica:0/task:0/cpu:0

[[Node: save_1/RestoreV2_21 = RestoreV2[dtypes=[DT_INT32],
_device="/job:ps/task:0/device:CPU:0"](save_1/Const,
save_1/RestoreV2_21/tensor_names, save_1/RestoreV2_21/shape_and_slices)]]

我试过了:

server = tf.train.Server(cluster,
job_name=self.calib.params['job_name'],
task_index=self.calib.params['task_index'],
config=tf.ConfigProto(allow_soft_placement=True)

我正在使用主管:

sv = tf.train.Supervisor(
is_chief=is_chief,
...)

并按如下方式创建我的 session :

sess = sv.prepare_or_wait_for_session(server.target)

但我仍然有完全相同的错误

最佳答案

错误信息中的这一行:

available devices: /job:localhost/replica:0/task:0/cpu:0

...表明您的 tf.Session 未连接到您创建的 tf.train.Server。特别是,它似乎是一个只能访问本地进程中的设备的本地(或“直接”) session 。

要解决此问题,请在创建 session 时将 server.target 传递给初始化程序。例如,根据您用来创建 session 的 API,您可能希望使用以下之一:

# Creating a session explicitly.
with tf.Session(server.target) as sess:
# ...

# Using a `tf.train.Supervisor` called `sv`.
with sv.managed_session(server.target):
# ...

# Using a `tf.train.MonitoredTrainingSession`.
with tf.train.MonitoredTrainingSession(server.target):
# ...

关于tensorflow - 分布式 Tensorflow 保存失败无设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42397370/

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