Enable GPU Acceleration for TensorFlow 2 with tensorflow-directml-plugin

This release provides students, beginners, and professionals a way to run machine learning (ML) training on their existing DirectX 12-enabled hardware by using the DirectML Plugin for TensorFlow 2.

Learn how to configure your device to run and train models with the GPU using tensorflow-directml-plugin.


Some information relates to pre-released product, which may be substantially modified before it's commercially released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

STEP 1: Minimum system requirements

Before installing the TensorFlow-DirectML-Plugin, ensure your version of Windows or WSL supports TensorFlow-DirectML-Plugin.

Windows native

  • Windows 10 Version 1709, 64-bit (Build 16299 or higher) or Windows 11 Version 21H2, 64-bit (Build 22000 or higher)
  • Python x86-64 3.7, 3.8, 3.9 or 3.10
  • One of the following supported GPUs:
    • AMD Radeon R5/R7/R9 2xx series or newer
    • Intel HD Graphics 5xx or newer
    • NVIDIA GeForce GTX 9xx series GPU or newer

Windows Subsystem for Linux

  • Windows 10 Version 21H2, 64-bit (Build 20150 or higher) or Windows 11 Version 21H2, 64-bit (Build 22000 or higher)
  • Python x86-64 3.7, 3.8, 3.9 or 3.10
  • One of the following supported GPUs:

Install the latest GPU driver

Ensure that you have the latest GPU driver installed for your hardware. Select Check for updates in the Windows Update section of the Settings app. If needed, pick up an install from your hardware vendor using the above links.

STEP 2: Configure your Windows environment

Windows native

The TensorFlow-DirectML-Plugin 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).

Windows Subsystem for Linux

Once you've installed the above driver, ensure you enable WSL and install a glibc-based distribution (such as Ubuntu or Debian). For our testing, we used Ubuntu. Ensure you have the latest kernel by selecting Check for updates in the Windows Update section of the Settings app.


Ensure you have the Receive updates for other Microsoft products when you update Windows option enabled. You can find it in Advanced options within the Windows Update section of the Settings app.

For these features, you need a kernel version of or higher. You can check the version number by running the following command in PowerShell.

wsl cat /proc/version

STEP 3: Set up your environment

We recommend setting up a virtual Python environment inside Windows. There are many tools that you can use to set up a virtual Python environment—for these instructions, we'll use Anaconda's Miniconda. The rest of this setup assumes that you use a Miniconda environment. Learn more about using python environments

Create an environment in Miniconda

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 tfdml_plugin, and activate it through the following commands.

conda create --name tfdml_plugin python=3.9 

conda activate tfdml_plugin 


tensorflow version >= 2.9 and python version >= 3.7 supported

STEP 4: Install base TensorFlow

Download the base TensorFlow package. Currently the directml-plugin only works with tensorflow–cpu and not tensorflow.

pip install tensorflow-cpu

STEP 5: Install tensorflow-directml-plugin

Installing this package automatically enables the DirectML backend for existing scripts without any code changes.

pip install tensorflow-directml-plugin


If your training scripts hardcode the device string to something other than "GPU", that might throw errors.

Alternatively, the package can be built from the source. Instructions for building tensorflow-directml-plugin from source.

TensorFlow with DirectML samples and feedback

Check out our samples or use your exisiting model scripts. If you run into issues, or have feedback on the TensorFlow-DirectML-Plugin package, then please connect with our team.