DirectML 是一個用於機器學習的高效能、硬體加速的 DirectX 12 函式庫。 DirectML 為廣泛支援的硬體和驅動程式中的常見機器學習任務提供 GPU 加速,包括來自 AMD、Intel、NVIDIA 和 Qualcomm 等供應商的所有支援 DirectX 12 的 GPU。
獨立使用時,DirectML API 是低階 DirectX 12 函式庫,適用於高效能、低延遲的應用程序,例如框架、遊戲和其他即時應用程式。 DirectML 與 Direct3D 12 的無縫互通性以及其低開銷和跨硬體的一致性,使得 DirectML 非常適合在需要高效能且跨硬體結果的可靠性和可預測性至關重要時加速機器學習。
有關 DirectML 的更多信息,請參閱 DirectML 簡介。
造訪 DirectX 登入頁面,以取得適用於 DirectX 開發人員的更多資源。
DirectML 作為 Windows 10 的系統元件進行分發,並作為 Windows 10 版本 1903(10.0;Build 18362)及更高版本中 Windows 10 作業系統 (OS) 的一部分提供。
從DirectML 版本1.4.0 開始,DirectML 也可以作為獨立的可再發行套件提供(請參閱Microsoft.AI.DirectML),這對於希望使用固定版本DirectML 的應用程式或在舊版本的Windows 10 上運行時非常有用。
DirectML 需要支援 DirectX 12 的裝置。過去幾年發布的幾乎所有商用顯示卡都支援 DirectX 12。
DirectML 公開本機 C++ DirectX 12 API。標頭和函式庫 (DirectML.h/DirectML.lib) 作為可再發行 NuGet 套件的一部分提供,並且也包含在 Windows 10 SDK 版本 10.0.18362 或更高版本中。
DirectML 內建為多個框架的後端,例如 Windows ML、ONNX Runtime 和 TensorFlow。
請參閱以下部分以了解更多資訊:
DirectML C++ 範例程式碼可在範例下找到。
DirectML Python 範例程式碼可在 Python/samples 下找到。這些範例需要 PyDirectML,這是一個用於 DirectML 的開源 Python 投影庫,可以從 Python/src 建置並安裝到 Python 執行環境。有關更多詳細信息,請參閱 Python/README.md 檔案。
DxDispatch 是簡單的命令列可執行文件,用於啟動 DirectX 12 計算程式(包括 DirectML 運算子),而無需編寫所有 C++ 樣板文件。
Windows ML (WinML) 是一種高效能、可靠的 API,用於在 Windows 裝置上部署硬體加速的 ML 推理。 DirectML 為 Windows ML 提供 GPU 後端。
可以使用具有任何一種 DirectX DeviceKinds 的 LearningModelDevice 在 Windows ML 中啟用 DirectML 加速。
有關詳細信息,請參閱 Windows ML 入門。
ONNX Runtime 是一款跨平台推理和訓練加速器,與許多流行的 ML/DNN 框架相容,包括 PyTorch、TensorFlow/Keras、scikit-learn 等。
DirectML 可作為 ONNX 執行時期的可選執行提供程序,在 Windows 10 上執行時提供硬體加速。
有關入門的更多信息,請參閱使用 DirectML 執行提供者。
具有 DirectML 的 PyTorch 可以在各種 DirectX 12 相容硬體上訓練和推理複雜的機器學習模型。這是透過 PyTorch 的插件torch-directml
完成的。
最新版本的 Windows 和適用於 Linux 的 Windows 子系統都支援具有 DirectML 的 PyTorch,並且可以作為 PyPI 套件下載。有關torch-directml
入門的更多信息,請參閱 Microsoft Learn 上的 Windows 或 WSL 2 指南。
TensorFlow 是一個受歡迎的機器學習開源平台,也是機器學習模型訓練的領先框架。
TensorFlow 1.15 的 DirectML 加速目前可用於公開預覽版。 DirectML 上的 TensorFlow 支援在各種 DirectX 12 相容硬體上訓練和推理複雜的機器學習模型。
DirectML 上的 TensorFlow 在最新版本的 Windows 10 和適用於 Linux 的 Windows 子系統上均受支持,並且可以作為 PyPI 套件下載。有關入門的更多信息,請參閱 GPU 加速 ML 訓練 (docs.microsoft.com)
我們期待您的來信!
對於具有 DirectML 問題、錯誤和回饋的 TensorFlow;或對於一般 DirectML 問題和回饋,請提出問題或直接透過[email protected] 與我們聯絡。
對於具有 DirectML 問題、錯誤和回饋的 PyTorch;或對於一般 DirectML 問題和回饋,請提出問題或直接透過[email protected] 與我們聯絡。
對於 Windows ML 問題,請在 microsoft/Windows-Machine-Learning 上提交 GitHub 問題,或直接透過 [email protected] 與我們聯絡。
對於 ONNX 執行時間問題,請在 microsoft/onnxruntime 提交問題。
DirectML 程式設計指南
DirectML API 參考
DirectML 簡介(遊戲開發者大會 '19)
使用 DirectML 和 DirectX 12 加速 GPU 推理 (SIGGRAPH '18)
Windows AI:Windows 裝置上的硬體加速機器學習 (Microsoft Build '20)
使用 Windows ML 進行遊戲(DirectX 開發人員部落格)
GDC 2019 上的 DirectML(DirectX 開發人員部落格)
DirectX ❤ Linux(DirectX 開發人員部落格)
該項目歡迎貢獻和建議。大多數貢獻都要求您同意貢獻者授權協議 (CLA),聲明您有權並且實際上授予我們使用您的貢獻的權利。有關詳細信息,請訪問 https://cla.microsoft.com。
當您提交拉取請求時,CLA-bot 將自動確定您是否需要提供 CLA 並適當地裝飾 PR(例如標籤、評論)。只需按照機器人提供的說明進行操作即可。您只需使用我們的 CLA 在所有儲存庫中執行一次此操作。
該專案採用了微軟開源行為準則。有關詳細信息,請參閱行為準則常見問題解答或聯繫 [email protected] 提出任何其他問題或意見。