问题描述
-
任务:object_detection
-
环境:AWS sagemaker
-
实例类型:'ml.p2.xlarge' | num_instances = 1
-
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()
-
问题:找不到作为
tpu_name
参数给出的正确值。 -
我对这个问题的研究:
根据 tf.distribute.cluster_resolver.TPUClusterResolver 中的 tensorflow 文档,该解析器仅适用于 Google Cloud 平台。
这是 Google Cloud 的集群解析器的实现 TPU 服务。
TPUClusterResolver 支持以下不同的环境: 谷歌计算引擎谷歌Kubernetes引擎谷歌内部
可以传入tf.distribute.TPUStrategy来支持TF2 Cloud TPU 培训。
但从 this issue in github 中,我发现类似的代码也适用于 Azure。
- 我的问题:
有什么方法可以绕过这个解析器并在 sagemaker 中初始化我的 tpu 吗?
更好的是,如果我能找到一种方法将 sagemaker gpu 的名称或 url 插入解析器并从那里启动它?
解决方法
让我在这里澄清一些混淆。 TPU 仅在 Google Cloud 上提供,TPUClusterResolver
实现查询 GCP API 以获取 TPU 节点的集群配置。因此,不,您不能将 TPUClusterResolver
与 AWS sagemaker 一起使用,但您应该改为在 GCP 上使用 TPU 进行尝试,或者尝试在 Sagemaker 的一端找到一些其他文档,了解它们如何在其一端启用集群解析(如果他们这样做了) ).