Enable TensorFlow with DirectML on Windows

This preview provides students and beginners a way to start building their knowledge in the ML space on their existing hardware by using the the TensorFlow with DirectML package. Once set up, users can start with the TensorFlow tutorial models or our DirectML samples.

Note

The following feature is in preview, and are subject to change.

Check your version of Windows

The TensorFlow with DirectML package on native Windows works starting with Windows 10 Version 1709 (Build 16299 or higher). You can check your build version number by running winver via the Run command (Windows logo key + R).

Check for GPU driver updates

Ensure you have the latest GPU driver installed. Select Check for updates in the Windows Update section of the Settings app.

Set up the TensorFlow with DirectML preview

We recommend setting up a virtual Python environment inside Windows. There are many tools you can use to setup a virtual Python environment — for these instructions, we'll use Anaconda’s Miniconda. The rest of this setup assumes you use a miniconda environment.

Set up Python environment

Download and install the Miniconda Windows installer on your system. There is additional guidance for setup on Anaconda’s site. Once Miniconda is installed, create an environment using Python named directml and activate it through the following commands.

Note

In the commands below, we use Python 3.6. However, the tensorflow-directml package works in a Python 3.5, 3.6 or 3.7 environment.

conda create --name directml python=3.6 

conda activate directml 

Install the Tensorflow with DirectML package

Install the package of TensorFlow with a DirectML backend through pip by running the following command.

Note

The tensorflow-directml package only supports TensorFlow 1.15.

pip install tensorflow-directml

Once you’ve installed the tensorflow-directml package, you can verify that it runs correctly by adding two tensors. Copy the following lines into an interactive Python session.

import tensorflow.compat.v1 as tf 

tf.enable_eager_execution(tf.ConfigProto(log_device_placement=True)) 

print(tf.add([1.0, 2.0], [3.0, 4.0])) 

You should see output similar to the following, with the add operator placed on the DML device.

2020-06-15 11:27:18.235973: I tensorflow/core/common_runtime/dml/dml_device_factory.cc:45] DirectML device enumeration: found 1 compatible adapters. 

2020-06-15 11:27:18.240065: I tensorflow/core/common_runtime/dml/dml_device_factory.cc:32] DirectML: creating device on adapter 0 (AMD Radeon VII) 

2020-06-15 11:27:18.323949: I tensorflow/stream_executor/platform/default/dso_loader.cc:60] Successfully opened dynamic library DirectMLba106a7c621ea741d2159d8708ee581c11918380.dll 

2020-06-15 11:27:18.337830: I tensorflow/core/common_runtime/eager/execute.cc:571] Executing op Add in device /job:localhost/replica:0/task:0/device:DML:0 

tf.Tensor([4. 6.], shape=(2,), dtype=float32) 

Tensorflow with DirectML samples and feedback

Now you’re ready to start learning more about ML training. Check out the TensorFlow tutorials or our samples. We used this content as validation for this initial preview package of TensorFlow with a DirectML backend.

If you run into issues or have feedback on the TensorFlow with DirectML package, please connect with our team here.