DirectML is in maintenance mode
いつの間にかMicrosoft/DirectMLのリポジトリはメンテナンスモードとなっていたようで、今後の新たな機能追加や更新はされないようです。2025/7/19なので結構前ですね。
Windows11を利用している方はWindowsMLを利用してください、とのこと。
ただ、DirectMLは全くサポートしないというわけではなさそうで、セキュリティの更新などは引き続き行います、ということです。
確かに最近更新されていなかったDirectML
私もONNXRUNTIMEのExecution Providers(以降EP)としてNugetで入手したDirectMLを利用していますが、そのDirectML.dllのタイムスタンプは2024/10/26だったりします。もう一年以上前ですね。
DirectMLは十分に成熟して枯れた技術となった、ということなのかもしれません。
WindowsMLでは、標準のONNXRUNTIMEのEPとしてDirectMLをサポートしており、ベンダーEPのサポートが万全となるまでの過渡期をつなぐ役割を担っているのではないかと考えています。
DirectMLは現状どこまでサポートしていたか
サポートしているONNXはv1.15で、opsetは20まで。
DirectMLでは、画像分類・物体検出で利用される演算子はサポートしていますが、生成AI、LLMで利用される演算子は不十分な場合が多いようです。
またopset 21以降の演算子はサポートされないので、今後新たに開発されるAIには適用が難しくなるものと考えられます。
以下はWindows Copilotに調査してもらったDirectMLのサポート状況です。
| DirectMLの対応状況 | |
|---|---|
| 最大サポートopset | 20(ONNX v1.15) |
| 標準演算子 | 画像分類・物体検出系は広く対応 |
| contrib ops | 一部のみ対応、LLM/生成AI系は未対応多数 |
| 量子化演算子 | QLinearConv等は対応、最新量子化は未対応あり |
| 5dテンソル演算子 | 未対応(例:Gridsample 5d) |
| 動的形状・可変長 | 制限あり、動的バッチ等は要注意 |
| 新規追加演算子 | opset 21以降は非対応 |
DirectMLとWindowsMLとONNXRUNTIME
WindowsMLは、PCに備えてるハードウェアから適用可能な推論エンジンを自動選択できるような仕組みになっています(指定もできます)。
WindowsMLが最初から保有しているEPはDirectMLとCPUですが、Microsoftとしては今後WindowsでのONNXのローカルGPU推論を行う場合は、DirectMLではなく各PC環境に合わせてNVIDIA TensorRT-RTX、Intel openvino、AMD MIGraphXなどを適切に選択して使いますよ、ということなんでしょうね。
DirectML自体は、私の環境ではCUDAと同等かそれ以上のパフォーマンスが出ていると感じていましたが、例えばTensorRT-RTXなどベンダー推論ライブラリには当然及びません。WindowsMLでそれらベンダーEPを的確に適用できるのであればDirectMLは別になくてもいいんじゃないかな?というような判断もあったのかもしれません。(個人の想像です)
今は、DirectMLの終了とWindowsMLの開始のちょうど過渡期にあると思いますが、当面は「DirectMLでは動いてました!WindowsMLにしてベンダーEPにした途端動かなくなりました!」みたいなことが増えてくるんじゃないかと想像しています。
当面はDirectMLの代わりとなるように、WindowsMLではEPの差異を吸収するようなパッケージ化を進め、また各EPでは最低限DirectMLと同じ機能を供給できるようなDirectML化が進むのではないかなと想像しています。(個人の想像です)
ONNXRUNTIMEもMicrosoftが主にメンテナンスしていると思いますが、githubのissueにはEPに関するものも多数登録されていました。もちろんMicrosoftは初期の仕分けのみで、具体的には各ベンダーに依頼するのだとは思いますが、ONNXRUNTIMEのサポートを継続していくのはかなり大変なことだろうとも思います。
MicrosoftはONNXRUNTIMEでの総合サポートやWindowsMLによるEP差異を丸めて使いやすくする機能、Microsoft Foundry on Windowsなどに専念することにし、その代わりにDirectX12上に構築されているレガシーなDirectMLの開発をやめる、ということにしたのかもしれません。(個人の想像です)
DirectMLを利用した今後のアプリケーション開発について
- 既にDirectMLを利用しているWindowsアプリの開発について
DirectMLを利用している既存アプリケーションは、当面はDirectMLのまま開発を継続して問題ないと思います。新たに何か最新のAI機能を追加するということは難しいかもしれませんが、既存の動作範囲が変わるわけではなく、またセキュリティなどのアップデートは継続されるということなので、DirectMLのままサポートを継続するのもおかしくはないと思います。 - 今からDirectMLを利用するWindowsアプリを開発しようとしている場合
WindowsML経由でDirectMLを利用するようにした方が良いかもしれません。
DirectMLで機能的に事足りるのであれば安定しているDirectMLを選択するという手もあるかもしれませんが、機能追加や更新のないレガシーなAPIを直接利用するのではなく、WindowsMLを経由してEP DirectMLを選択する形にしておいた方が、他のEPへの乗り換えも含め安定したアプリのサポートができるのではないでしょうか
まとめ
- DirectMLは今後機能更新などのアップデートは行われないことになりました(セキュリティアップデートは行われる)。
- これまでDirectMLが担ってきたWindowsでのONNX推論は、WindowsMLを介して各ベンダーEPに委ねられることになります。
- アプリ開発者の視点では、DirectMLの現状で困っていなければそのままでもいいかもしれませんし、今後もアプリ機能更新していくのであれば、安定した頃にWindowsMLに移行するのがいいかもしれません。
- 個人的にはWindowsMLのEPとなっているAMD MIGraphXが安定的に動作するのがいつ頃になるか注目しています。どなたかMIGraphXが動きそうなRADEONください ←