此页面由 Cloud Translation API 翻译。
Switch to English

tf.distribute.cluster_resolver.ClusterResolver

TensorFlow 1版 GitHub上查看源代码

抽象类ClusterResolvers的所有实现。

它定义了ClusterResolvers的所有实现的骨架。 ClusterResolvers是TensorFlow与各种集群管理系统进行通信的方式(如GCE,AWS,等...),并给出TensorFlow必要的信息来建立分布式训练。

通过让TensorFlow这些系统的沟通,我们将能够自动发现和解决IP地址不同TensorFlow工人。这将最终使我们能够自动从底层机器故障和规模TensorFlow工人集群上下恢复。

注意对方案的实现tf.distribute.cluster_resolver.ClusterResolver子类:除了这些抽象方法,当task_type,TASK_ID和rpc_layer属性适用,你也应该要么实现它们与getter方法或setter方法,或者直接属性设置的属性self._task_typeself._task_id ,或self._rpc_layer所以基类的getter和setter被使用。见tf.distribute.cluster resolver.SimpleClusterResolver. init _的一个例子。

在一般情况下,多客户端tf.distribute策略,如tf.distribute.experimental.MultiWorkerMirroredStrategy需要task_type和TASK_ID特性是在现有的ClusterResolver他们使用。在另一方面,这些概念并不适用于单一客户的策略,如tf.distribute.experimental.TPUStrategy ,因为程序只预计将在一个任务中运行,所以不应该是一个需要有代码分支根据任务类型和任务ID。

  • task_type是服务器的当前命名的作业的名称(如“工人”在一个分布式参数化培训工作,“PS”)。
  • TASK_ID是任务型内服务器的序号索引。
  • rpc_layer是使用TensorFlow在分布式环境中与其他TensorFlow服务器通信的协议。

environment 返回其TensorFlow在运行当前的环境。

有两个可能的返回值,“谷歌”(当TensorFlow在谷歌内部的环境中运行),或一个空字符串(当TensorFlow在其它地方运行)。

如果要实现的是,在谷歌的环境和开源世界都工作的ClusterResolver(例如,一个TPU ClusterResolver或类似的),你将不得不返回取决于环境,你将不得不检测适当的字符串。

否则,如果要实现,将只在开源TensorFlow工作,你并不需要实现该物业的ClusterResolver。

task_id 返回任务ID此ClusterResolver表示。

在TensorFlow分布式环境中,每个职业可以有一个适用的任务ID,这是它的任务类型中的实例的索引。当用户需要根据任务指标运行特定的代码,这非常有用。例如,

 cluster_spec = tf.train.ClusterSpec({
"ps": ["localhost:2222", "localhost:2223"],
"worker": ["localhost:2224", "localhost:2225", "localhost:2226"]
})

# SimpleClusterResolver is used here for illustration; other cluster
# resolvers may be used for other source of task type/id.
simple_resolver = SimpleClusterResolver(cluster_spec, task_type="worker",
task_id=0)

...

if cluster_resolver.task_type == 'worker' and cluster_resolver.task_id == 0:
# Perform something that's only applicable on 'worker' type, id 0. This
# block will run on this particular instance since we've specified this
# task to be a 'worker', id 0 in above cluster resolver.
else:
# Perform something that's only applicable on other ids. This block will
# not run on this particular instance.
 

返回None如果这样的信息不可用或不适用在目前的分布式环境中,如培训tf.distribute.cluster_resolver.TPUClusterResolver

欲了解更多信息,请参阅tf.distribute.cluster_resolver.ClusterResolver的类文档字符串。

task_type 任务返回类型此ClusterResolver表示。

在TensorFlow分布式环境中,每个职业可以有一个适用的任务类型。在TensorFlow有效的任务类型包括“首席”:被指定与更多职责的工作人员,“工人”:培训/评估一个普通的工人,“PS”:参数服务器,或“评估”:一个评估,评估检查站为指标。

多工人的配置有关“首席”和“工人”的任务类型,其中最常用的信息。

有机会获得这样的信息时,用户需要根据任务类型来运行特定的代码是非常有用的。例如,

 cluster_spec = tf.train.ClusterSpec({
"ps": ["localhost:2222", "localhost:2223"],
"worker": ["localhost:2224", "localhost:2225", "localhost:2226"]
})

# SimpleClusterResolver is used here for illustration; other cluster
# resolvers may be used for other source of task type/id.
simple_resolver = SimpleClusterResolver(cluster_spec, task_type="worker",
task_id=1)

...

if cluster_resolver.task_type == 'worker':
# Perform something that's only applicable on workers. This block
# will run on this particular instance since we've specified this task to
# be a worker in above cluster resolver.
elif cluster_resolver.task_type == 'ps':
# Perform something that's only applicable on parameter servers. This
# block will not run on this particular instance.
 

返回None如果这样的信息不可用或不适用在目前的分布式环境中,如培训tf.distribute.experimental.TPUStrategy

欲了解更多信息,请参阅tf.distribute.cluster_resolver.ClusterResolver的类文档。

方法

cluster_spec

查看源代码

检索集群的当前状态,并返回一个tf.train.ClusterSpec

返回
一个tf.train.ClusterSpec表示目前此功能的集群的状态被调用。

这一功能的实现者必须小心以确保ClusterSpec返回达最新在调用此函数的时间。这通常意味着从底层集群管理系统每次这个函数被调用时检索信息并重构cluster_spec,而不是试图缓存任何东西。

master

查看源代码

检索名称或主会话的URL。

ARGS
task_type (可选)型主的TensorFlow任务。
task_id (可选)主的TensorFlow任务的指标。
rpc_layer (可选的)用于给定群集RPC协议。

返回
的名称或主会话的URL。

这一功能的实现者必须小心,确保返回的主人是上最新的时间调用此函数。这通常意味着每到这个函数被调用时检索的主人。

num_accelerators

查看源代码

返回人均加速器内核的数量。

这将返回每个工人提供加速器核(如GPU和热塑性聚氨酯)的数量。

或者,我们允许呼叫者指定task_type和TASK_ID,如果他们要针对特定​​的TensorFlow任务查询加速器数量。这是为了支持异构环境中,加速器内核的每个主机的数量是不同的。

ARGS
task_type (可选)类型,我们要查询机器的TensorFlow任务。
task_id (可选),我们要查询机器的TensorFlow任务的指标。
config_proto (可选)配置启动一个新的会话来查询它有多少加速器内核。

返回
加速器类型的地图,核心数量。