ClusterResolver 用于具有 Slurm 工作负载管理器的系统。
继承自:ClusterResolver
用法
tf.distribute.cluster_resolver.SlurmClusterResolver(
jobs=None, port_base=8888, gpus_per_node=None, gpus_per_task=None,
tasks_per_node=None, auto_set_gpu=True, rpc_layer='grpc'
)
参数
-
jobs
以作业名称为键,作业中的任务数为值的字典。默认为与 (Slurm) 任务一样多的 'worker's。 -
port_base
节点上进程的第一个端口号。 -
gpus_per_node
每个节点上可用的 GPU 数量。默认为 nvidia-smi 报告的 GPU 数量 -
gpus_per_task
用于每个任务的 GPU 数量。默认为将gpus_per_node 平均分配到tasks_per_node。 -
tasks_per_node
每个节点上运行的任务数。如果每个节点的任务数是常量,或者将主机名映射到该节点上的任务数的字典,则可以是整数。如果未设置,则查询 Slurm 环境以获取正确的映射。 -
auto_set_gpu
通过设置 CUDA_VISIBLE_DEVICES 环境变量,在解析集群时自动设置可见的 CUDA 设备。默认为真。 -
rpc_layer
TensorFlow 用于在节点之间进行通信的协议。默认为'grpc'。
抛出
-
RuntimeError
如果每个节点请求更多 GPU 然后可用或请求更多任务,则分配任务或解决环境中的缺失值失败。
属性
-
environment
返回 TensorFlow 运行的当前环境。有两个可能的返回值,"google"(当 TensorFlow 在 Google-internal 环境中运行时)或空字符串(当 TensorFlow 在其他地方运行时)。
如果您正在实现一个在 Google 环境和开源世界中都可以工作的 ClusterResolver(例如,TPU ClusterResolver 或类似的),您将必须根据环境返回适当的字符串,您必须检测到该字符串。
否则,如果您正在实现仅在开源 TensorFlow 中工作的 ClusterResolver,则无需实现此属性。
-
task_id
返回此任务 IDClusterResolver
表示。在 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.
如果此类信息不可用或不适用于当前分布式环境(例如使用
tf.distribute.cluster_resolver.TPUClusterResolver
进行训练),则返回None
。有关详细信息,请参阅
tf.distribute.cluster_resolver.ClusterResolver
的类文档字符串。 -
task_type
返回此任务类型ClusterResolver
表示。在 TensorFlow 分布式环境中,每个作业都可能有一个适用的任务类型。 TensorFlow 中的有效任务类型包括 'chief':被指定承担更多责任的工作人员、'worker':用于训练/评估的常规工作人员、'ps':参数服务器或 'evaluator':评估检查点的评估程序用于指标。
有关最常用的'chief' 和'worker' 任务类型的更多信息,请参阅Multi-worker 配置。
当用户需要根据任务类型运行特定代码时,访问此类信息非常有用。例如,
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.
如果此类信息不可用或不适用于当前分布式环境(例如使用
tf.distribute.experimental.TPUStrategy
进行训练),则返回None
。有关详细信息,请参阅
tf.distribute.cluster_resolver.ClusterResolver
的课程文档。
这是用于 Slurm 集群的 ClusterResolver 的实现。这允许指定作业和任务计数、每个节点的任务数量、每个节点上的 GPU 数量以及每个任务的 GPU 数量。它通过 Slurm 环境变量检索系统属性,解析分配的计算节点名称,构建集群并返回可用于分布式 TensorFlow 的 ClusterResolver 对象。
相关用法
- Python tf.distribute.cluster_resolver.SimpleClusterResolver用法及代码示例
- Python tf.distribute.cluster_resolver.TFConfigClusterResolver用法及代码示例
- Python tf.distribute.cluster_resolver.GCEClusterResolver用法及代码示例
- Python tf.distribute.cluster_resolver.TPUClusterResolver.get_tpu_system_metadata用法及代码示例
- Python tf.distribute.cluster_resolver.UnionResolver用法及代码示例
- Python tf.distribute.cluster_resolver.TPUClusterResolver用法及代码示例
- Python tf.distribute.cluster_resolver.TPUClusterResolver.connect用法及代码示例
- Python tf.distribute.cluster_resolver.KubernetesClusterResolver用法及代码示例
- Python tf.distribute.OneDeviceStrategy.experimental_distribute_values_from_function用法及代码示例
- Python tf.distribute.TPUStrategy用法及代码示例
- Python tf.distribute.experimental_set_strategy用法及代码示例
- Python tf.distribute.experimental.MultiWorkerMirroredStrategy.gather用法及代码示例
- Python tf.distribute.experimental.MultiWorkerMirroredStrategy用法及代码示例
- Python tf.distribute.TPUStrategy.experimental_assign_to_logical_device用法及代码示例
- Python tf.distribute.NcclAllReduce用法及代码示例
- Python tf.distribute.OneDeviceStrategy.experimental_distribute_dataset用法及代码示例
- Python tf.distribute.experimental.rpc.Server.create用法及代码示例
- Python tf.distribute.experimental.MultiWorkerMirroredStrategy.experimental_distribute_dataset用法及代码示例
- Python tf.distribute.OneDeviceStrategy.gather用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.distribute.cluster_resolver.SlurmClusterResolver。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。