tf.DeviceSpec in Tensorflow with example

Hi guys, This tutorial is to briefly understand about tf.DeviceSpec in Tensorflow. The “tf.DeviceSpec” is one of the Tensorflow’s API that describes where the state/object is located and where the computations happen.

The DeviceSpec consists of FIVE optional parameters that we can specify:

  1. Job: Job name.
  2. Replica: Replica index.
  3. Task: Task index.
  4. Device type: Device type string. It can either be CPU or GPU.
  5. Device index: Device index.

If a DeviceSpec is partially specified, it will merge with other DeviceSpec available.

DeviceSpec Example

# Importing the libraries
import tensorflow as tf
from tensorflow import DeviceSpec

# Creating a DeviceSpec object 
device1 = DeviceSpec(job ="add", device_type ="GPU", device_index = 0) 
# Print the result

First, we have imported the libraries that we will be using. At line 6, we are specifying the optional parameters in the DeviceSpec and storing it in a variable and then it is printed.


<tensorflow.python.framework.device_spec.DeviceSpecV2 object at 0x000001D13E3E0FA8>

As we can see, The address of the DeviceSpec object is printed in the output.

To get a string format of the specified DeviceSpec, we can use the “to_string()” method.




The above output shows the string format of the DeviceSpec. We can see the specified job, device_type, and device_index in the output.

Creating a DeviceSpec object by using the “from_string” method

A DeviceSpec can also be created by using a string. We will use the ‘from_string‘ method to create a new DeviceSpec.

new_dev = DeviceSpec.from_string('job:all/device:GPU:0')
print('address :' ,new_dev)
print('device_spec :' ,new_dev.to_string())

In the first line, we have used a from_string method and a string is specified into it. The string consists of the job, device_type, and device_index.


address : <tensorflow.python.framework.device_spec.DeviceSpecV2 object at 0x000001D13E447D68>
device_spec : /job:all/device:GPU:0

In the above output, we have printed the address of the DeviceSpec object and its specification.

Merging of partially specified DeviceSpec.

We can merge two partially specified DeviceSpec and make a new DeviceSpec by using the method “make_merged_spec“.

# Specifying First DeviceSpec
device_spec1 = tf.DeviceSpec(job='amd')
# Specifying Second DeviceSpec
device_spec2 = tf.DeviceSpec(device_type='GPU')
# Combining both first and second DeviceSpec
combined_spec = device_spec1.make_merged_spec(device_spec2)
# Printing all Devicespec
print('device_Spec1 :',device_spec1.to_string())
print('device_Spec2 :',device_spec2.to_string())
print('combined_spec :',combined_spec.to_string())

Here, we have created two partially specified DeviceSpec and created a new one by combining them.


device_Spec1 : /job:amd
device_Spec2 : /device:GPU:*
combined_spec : /job:amd/device:GPU:*

In the above output, it is clear that the two partially specified DeviceSpec have been successfully combined.

I hope that you will find this article helpful in understanding TensorFlow DeviceSpec. Thank You.

Leave a Reply

Your email address will not be published. Required fields are marked *