wait_for_session张量流的逻辑

时间:2020-07-15 05:36:44

标签: tensorflow

我阅读了Supervisor :: prepare_or_wait_for_session的源代码,对于非首席工作人员,它应该调用wait_for_session以获取会话是否准备就绪:

   sess = self._session_manager.wait_for_session(
      master, config=config, max_wait_secs=max_wait_secs)

Superviser中有一个名为self._ready_op的成员,其初始化为USE_DEFAULT = 0。

在“ wait_for_session”内部,它将检查是否为model_ready

while True:
  sess = session.Session(self._target, graph=self._graph, config=config)
  not_ready_msg = None
  not_ready_local_msg = None
  local_init_success, not_ready_local_msg = self._try_run_local_init_op(
      sess)
  if local_init_success:
    # Successful if local_init_op is None, or ready_for_local_init_op passes
    is_ready, not_ready_msg = self._model_ready(sess)
    if is_ready:
      return sess

在“模型就绪”内部:

def _ready(op, sess, msg):
  if op is None:
    return True, None

  ....

我的问题是,因为model_ready将使用“ self._ready_op”进行检查,如果它为None,它将直接返回True,并且似乎没有等待时间。

我检查了两次,但是除了Supervisor构造函数外,没有找到self._ready_op的初始化位置,但是,正常情况下不会在Supervisor的构造中设置ready_op,因此我对“ wait_for_session”的分布式逻辑感到困惑,正如其功能所描述的那样,它应该等待首席工作人员准备好模型。

0 个答案:

没有答案