DirectML は、機械学習用の高性能、ハードウェア アクセラレータの DirectX 12 ライブラリです。 DirectML は、AMD、Intel、NVIDIA、Qualcomm などのベンダーのすべての DirectX 12 対応 GPU を含む、サポートされている幅広いハードウェアとドライバーにわたる一般的な機械学習タスクの 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 ランタイム、TensorFlow などのいくつかのフレームワークのバックエンドとして組み込まれています。
詳細については、次のセクションを参照してください。
DirectML C++ のサンプル コードは、「サンプル」から入手できます。
DirectML Python サンプル コードは、Python/samples で入手できます。サンプルには、DirectML 用のオープン ソース Python プロジェクション ライブラリである PyDirectML が必要です。これは、Python/src から Python 実行環境に構築してインストールできます。詳細については、Python/README.md ファイルを参照してください。
DxDispatch は、C++ ボイラープレートをすべて記述することなく、DirectX 12 計算プログラム (DirectML オペレーターを含む) を起動するためのシンプルなコマンド ライン実行可能ファイルです。
Windows ML (WinML) は、ハードウェア アクセラレーションによる ML 推論を Windows デバイスに展開するための高性能で信頼性の高い API です。 DirectML は、Windows ML の GPU バックエンドを提供します。
DirectML アクセラレーションは、LearningModelDevice と DirectX DeviceKind のいずれかを使用して、Windows ML で有効にすることができます。
詳細については、「Windows ML の概要」を参照してください。
ONNX ランタイムは、PyTorch、TensorFlow/Keras、scikit-learn など、多くの一般的な ML/DNN フレームワークと互換性のあるクロスプラットフォームの推論およびトレーニング アクセラレータです。
DirectML は、Windows 10 での実行時にハードウェア アクセラレーションを提供する ONNX ランタイムのオプションの実行プロバイダーとして利用できます。
開始方法の詳細については、「DirectML 実行プロバイダーの使用」を参照してください。
PyTorch と DirectML を使用すると、さまざまな DirectX 12 互換ハードウェア上で複雑な機械学習モデルのトレーニングと推論が可能になります。これは、PyTorch のプラグインであるtorch-directml
を通じて行われます。
DirectML を使用した PyTorch は、最新バージョンの Windows と Linux 用 Windows サブシステムの両方でサポートされており、PyPI パッケージとしてダウンロードできます。 torch-directml
の使用を開始する方法の詳細については、Microsoft Learn の Windows または WSL 2 ガイダンスを参照してください。
TensorFlow は、機械学習用の人気のあるオープンソース プラットフォームであり、機械学習モデルのトレーニングのための主要なフレームワークです。
TensorFlow 1.15 の DirectML アクセラレーションは現在パブリック プレビューで利用できます。 DirectML 上の TensorFlow を使用すると、さまざまな DirectX 12 互換ハードウェア上で複雑な機械学習モデルのトレーニングと推論が可能になります。
DirectML 上の TensorFlow は、最新バージョンの Windows 10 と Windows Subsystem for Linux の両方でサポートされており、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 デバイス上のハードウェア アクセラレーションによる ML (Microsoft Build '20)
Windows ML を使用したゲーム (DirectX 開発者ブログ)
GDC 2019 での DirectML (DirectX 開発者ブログ)
DirectX ❤ Linux (DirectX 開発者ブログ)
このプロジェクトは貢献と提案を歓迎します。ほとんどの投稿では、投稿を使用する権利をお客様が有しており、実際に当社に付与することを宣言する投稿者ライセンス契約 (CLA) に同意する必要があります。詳細については、https://cla.microsoft.com をご覧ください。
プル リクエストを送信すると、CLA ボットが CLA を提供する必要があるかどうかを自動的に判断し、PR を適切に装飾します (ラベル、コメントなど)。ボットが提供する指示に従ってください。 CLA を使用するすべてのリポジトリでこれを 1 回行うだけで済みます。
このプロジェクトはマイクロソフトのオープンソース行動規範を採用しています。詳細については、「行動規範に関するよくある質問」を参照するか、追加の質問やコメントがあれば [email protected] までお問い合わせください。