在 Sagemaker 中使用 tf.distribute.cluster_resolver.TPUClusterResolver( tpu_name) 的替代方案?

问题描述

  1. 任务:object_detection

  2. 环境:AWS sagemaker

  3. 实例类型:'ml.p2.xlarge' | num_instances = 1

  4. 要运行的主文件original

  5. 来自主文件的有问题的代码段:

        resolver = tf.distribute.cluster_resolver.TPUClusterResolver(
        FLAGS.tpu_name)
        tf.config.experimental_connect_to_cluster(resolver)
        tf.tpu.experimental.initialize_tpu_system(resolver)
        strategy = tf.distribute.experimental.TPUStrategy(resolver)
        elif FLAGS.num_workers > 1:
            strategy = tf.distribute.experimental.MultiWorkerMirroredStrategy()
        else:
            strategy = tf.compat.v2.distribute.MirroredStrategy()
    
  6. 问题:找不到作为 tpu_name 参数给出的正确值。

  7. 我对这个问题的研究:

根据 tf.distribute.cluster_resolver.TPUClusterResolver 中的 tensorflow 文档,该解析器仅适用于 Google Cloud 平台。

这是 Google Cloud 的集群解析器的实现 TPU 服务。

TPUClusterResolver 支持以下不同的环境: 谷歌计算引擎谷歌Kubernetes引擎谷歌内部

可以传入tf.distribute.TPUStrategy来支持TF2 Cloud TPU 培训。

但从 this issue in github 中,我发现类似的代码也适用于 Azure。

  1. 我的问题:

有什么方法可以绕过这个解析器并在 sagemaker 中初始化我的 tpu 吗?

更好的是,如果我能找到一种方法将 sagemaker gpu 的名称或 url 插入解析器并从那里启动它?

解决方法

让我在这里澄清一些混淆。 TPU 仅在 Google Cloud 上提供,TPUClusterResolver 实现查询 GCP API 以获取 TPU 节点的集群配置。因此,不,您不能将 TPUClusterResolver 与 AWS sagemaker 一起使用,但您应该改为在 GCP 上使用 TPU 进行尝试,或者尝试在 Sagemaker 的一端找到一些其他文档,了解它们如何在其一端启用集群解析(如果他们这样做了) ).