Class TPUClusterResolver

Inherits From: ClusterResolver

Defined in tensorflow/contrib/cluster_resolver/python/training/

Cluster Resolver for Google Cloud TPUs.

This is an implementation of cluster resolvers for the Google Cloud TPU service. As Cloud TPUs are in alpha, you will need to specify a API definition file for this to consume, in addition to a list of Cloud TPUs in your Google Cloud Platform project.



Creates a new TPUClusterResolver object.

The ClusterResolver will then use the parameters to query the Cloud TPU APIs for the IP addresses and ports of each Cloud TPU listed.


  • tpu: Either a string, or a list of strings corresponding to the TPUs to use. If the single string is the empty string, the string 'local', or a string that begins with 'grpc://' or '/bns', then it is assumed to not correspond with a Cloud TPU and will instead be passed as the session master and no ClusterSpec propagation will be done.
  • zone: Zone where the TPUs are located. If omitted or empty, we will assume that the zone of the TPU is the same as the zone of the GCE VM, which we will try to discover from the GCE metadata service.
  • project: Name of the GCP project containing Cloud TPUs. If omitted or empty, we will try to discover the project name of the GCE VM from the GCE metadata service.
  • job_name: Name of the TensorFlow job the TPUs belong to.
  • coordinator_name: The name to use for the coordinator. Set to None if the coordinator should not be included in the computed ClusterSpec.
  • coordinator_address: The address of the coordinator (typically an ip:port pair). If set to None, a TF server will be started. If coordinator_name is None, a TF server will not be started even if coordinator_address is None.
  • credentials: GCE Credentials. If None, then we use default credentials from the oauth2client
  • service: The GCE API object returned by the googleapiclient.discovery function. If you specify a custom service object, then the credentials parameter will be ignored.
  • discovery_url: A URL template that points to the location of the discovery service. It should have two parameters {api} and {apiVersion} that when filled in produce an absolute URL to the discovery document for that service. The environment variable 'TPU_API_DISCOVERY_URL' will override this.


  • ImportError: If the googleapiclient is not installed.
  • ValueError: If no TPUs are specified.






Returns a ClusterSpec object based on the latest TPU information.

We retrieve the information from the GCE APIs every time this method is called.


A ClusterSpec containing host information returned from Cloud TPUs.


  • RuntimeError: If the provided TPU is not healthy.





Get the Master string to be used for the session.

In the normal case, this returns the grpc path (grpc:// of first instance in the ClusterSpec returned by the cluster_spec function.

If a non-TPU name is used when constructing a TPUClusterResolver, that will be returned instead (e.g. If the tpus argument's value when constructing this TPUClusterResolver was 'grpc://', 'grpc://' will be returned).


string, the connection string to use when creating a session.


  • ValueError: If none of the TPUs specified exists.