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

An alternative to tf.distribute.cluster_resolver.TPUClusterResolver( tpu_name) to be used in Sagemaker?

  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 云平台。

This is an implementation of cluster resolvers for the Google Cloud TPU service.

TPUClusterResolver supports the following distinct environments: Google Compute Engine Google Kubernetes Engine Google internal

It can be passed into tf.distribute.TPUStrategy to support TF2 training on Cloud TPUs.

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

  1. 我的问题:

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

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

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