experimental-torch-directml 0.1.13.dev2012023133843
A DirectML backend for hardware acceleration in PyTorch.
License: MIT
Requires Python: >=3.7
Keywords: pytorch,plugin,machine learning,directml,directx,d3d12

# PyTorch with DirectML
DirectML acceleration for PyTorch is currently available for Public Preview. PyTorch with DirectML enables training and inference of complex machine learning models on a wide range of DirectX 12-compatible hardware.

DirectML is a high-performance, hardware-accelerated DirectX 12 library for machine learning. DirectML provides GPU acceleration for common machine learning tasks across a broad range of supported hardware and drivers, including all DirectX 12-capable GPUs from vendors such as AMD, Intel, NVIDIA, and Qualcomm.

More information about DirectML can be found in [Introduction to DirectML](https://docs.microsoft.com/windows/win32/direct3d12/dml-intro).

PyTorch on DirectML is supported on both the latest versions of Windows 10 and the [Windows Subsystem for Linux](https://docs.microsoft.com/windows/wsl/about), and is available for download as a PyPI package. For more information about getting started, see [GPU accelerated ML training (docs.microsoft.com)](http://aka.ms/gpuinwsldocs)


## Samples
Refer to the [Pytorch with DirectML Samples Repo](https://github.com/microsoft/DirectML/tree/master/PyTorch) for samples. 

## Feedback

We look forward to hearing from you!

* For TensorFlow with DirectML issues, bugs, and feedback; or for general DirectML issues and feedback, please [file an issue](https://github.com/microsoft/DirectML-Samples/issues) or contact us directly at askdirectml@microsoft.com.

* For PyTorch with DirectML issues, bugs, and feedback; or for general DirectML issues and feedback, please [file an issue](https://github.com/microsoft/DirectML-Samples/issues) or contact us directly at askdirectml@microsoft.com.

* For Windows ML issues, please file a GitHub issue at [microsoft/Windows-Machine-Learning](https://github.com/Microsoft/Windows-Machine-Learning/issues) or contact us directly at askwindowsml@microsoft.com.

* For ONNX Runtime issues, please file an issue at [microsoft/onnxruntime](https://github.com/microsoft/onnxruntime/issues).

## Contributing

This project welcomes contributions and suggestions.  Most contributions require you to agree to a
Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide
a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions
provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.

## Workflow
Developers will work on release branches daily and RI to main branch as needed.

- [main branch](https://microsoft.visualstudio.com/WindowsAI/_git/pytorch-directml-plugin?path=%2F&version=GBmain&_a=contents) builds with the [**nightly-built** pytorch](https://pytorch.org/get-started/locally/)
  `
  conda install pytorch torchvision cpuonly -c pytorch-nightly
  `
- release branches build with the **corresponding published** pytorch
  - both [release/1.13](https://microsoft.visualstudio.com/WindowsAI/_git/pytorch-directml-plugin?path=/&version=GBrelease/1.13) and [release/1.13+](https://microsoft.visualstudio.com/WindowsAI/_git/pytorch-directml-plugin?path=/&version=GBrelease/1.13) build with [pytorch 1.13](https://pypi.org/project/torch/1.13.0/).
  - coming **release/1.13.1** should build with [pytorch 1.13.1](https://pypi.org/project/torch/1.13.1/)

Motivations why in this pattern.
1. Avoid pushing identical changes twice into release and main.
2. Avoid to be blocked by broken changes from pytorch master.

Examples of cutting branches:
1. A new branch for pytorch-1.13 (e.g. [release/1.13+2]) will be cut from the last released branch [release/1.13+](https://microsoft.visualstudio.com/WindowsAI/_git/pytorch-directml-plugin?path=/&version=GBrelease/1.13) for new releases, and developers will stay on the new branch daily until that release is published.

2. For new pytorch version **1.13.1**, release/1.13.1 should be cut from main **after** all release  workloads are RIed.

![workflow](/docs/workflow.png)

## External Links

[PyTorch homepage](https://pytorch.org/)