Windows Machine LearningWindows Machine Learning

Windows ML を使用して Windows アプリに Machine Learning を実装します。Windows ML は、Windows デバイスにハードウェア アクセラレータ対応の ML 推論をデプロイするための信頼性の高い高パフォーマンス API です。Implement Machine Learning in your Windows apps using Windows ML — a high-performance, reliable API for deploying hardware-accelerated ML inferences on Windows devices.

Windows ML のグラフィックス

概要Overview

Windows ML は、最新バージョンの Windows 10 および Windows Server 2019 に組み込まれており、また Windows 8.1 までのダウンレベルに対応するために NuGet パッケージ としても提供されています。Windows ML is built into the latest versions of Windows 10 and Windows Server 2019, and is also available as a NuGet package for down-level reach to Windows 8.1. Windows ML は、開発者に次の利点をもたらします。Windows ML provides developers with the following advantages:

  • 開発の容易さ: Windows ML を最新バージョンの Windows 10 および Windows Server 2019 に組み込んだら、あと必要なのは Visual Studio とトレーニング済みの ONNX モデルだけで、これらは Windows アプリケーションと一緒に配布できます。Ease of development: With Windows ML built into the latest versions of Windows 10 and Windows Server 2019, all you need is Visual Studio and a trained ONNX model, which can be distributed along with the Windows application. また、AI ベースの機能を以前のバージョンの Windows (8.1 まで) に配信する必要がある場合は、アプリケーションと共に配布できる NuGet パッケージとして Windows ML を使用することもできます。Also, if you need to deliver your AI-based features to older versions of Windows (down to 8.1), Windows ML is also available as a NuGet package that you can distribute with your application.

  • 幅広いハードウェア サポート: Windows ML を使用することによって、ML ワークロードを 1 回記述すれば、さまざまなハードウェア ベンダーやシリコンの種類 (CPU、GPU、AI アクセラレータなど) にわたって高度に最適化されたパフォーマンスを自動的に得ることができます。Broad hardware support: Windows ML allows you to write your ML workload once and automatically get highly optimized performance across different hardware vendors and silicon types, such as CPUs, GPUs, and AI accelerators. さらに、Windows ML では、サポートされているすべてのハードウェアで一貫した動作が保証されます。In addition, Windows ML guarantees consistent behavior across the range of supported hardware.

  • 待ち時間が短く結果をリアルタイムで利用可能: Windows デバイスの処理機能を使用して ML モデルを評価でき、画像やビデオなどの大きなデータ ボリュームをローカルでリアルタイムに分析できます。Low latency, real-time results: ML models can be evaluated using the processing capabilities of the Windows device, enabling local, real-time analysis of large data volumes, such as images and video. 分析結果は、ゲーム エンジンなどのパフォーマンスが集中するワークロードや、検索のインデックス作成などのバックグラウンド タスクですぐに効率的に使用できます。Results are available quickly and efficiently for use in performance-intensive workloads like game engines, or background tasks such as indexing for search.

  • 柔軟性の向上: Windows デバイス上で ML モデルをローカルに評価するオプションを使用すると、幅広いシナリオに対処できます。Increased flexibility: The option to evaluate ML models locally on Windows devices lets you address a broader range of scenarios. たとえば ML モデルの評価を、デバイスがオフラインになっているときや、接続が断続的になったときに実行できます。For example, evaluation of ML models can run while the device is offline, or when faced with intermittent connectivity. また、プライバシーやデータの主権の問題により、すべてのデータをクラウドに送信できないシナリオに対処することもできます。This also lets you address scenarios where not all data can be sent to the cloud due to privacy or data sovereignty issues.

  • 運用コストの削減: ML モデルは継続的な改善が必要な場合もあるため、ML モデルをクラウドでトレーニングし、Windows デバイスでローカルに評価すれば、最小限のデータのみがクラウドに送信されるため帯域幅コストが大幅に節約できます。Reduced operational costs: Training ML models in the cloud and then evaluating them locally on Windows devices can deliver significant savings in bandwidth costs, with only minimal data sent to the cloud—as might be needed for continual improvement of your ML model. さらに、サーバー内に ML モデルを展開するシナリオでは、開発者は Windows ML ハードウェア アクセラレータを利用してモデル サービスを高速化することで、ワークロードを処理するために必要なマシンの数を減らすことができます。Moreover, when deploying the ML model in a server scenario, developers can leverage Windows ML hardware acceleration to speed-up model serving, reducing the number of machines needed in order to handle the workload.

開始Get Started

トレーニング済みの ML モデルをアプリケーション コードに組み込むプロセスはシンプルで、次に示すいくつかの単純な手順のみが必要です。The process of incorporating trained ML models into your application code is simple, requiring just a few straightforward steps:

  1. トレーニング済みの Open Neural Network Exchange (ONNX) モデルを取得するか、別の ML フレームワークでトレーニングされたモデルを WinMLTools で ONNX に変換します。Get a trained Open Neural Network Exchange (ONNX) model, or convert models trained in other ML frameworks into ONNX with WinMLTools.

  2. ONNX モデル ファイルをアプリケーションに追加します。または他の何らかの方法でターゲット デバイス上で使用できるようにします。Add the ONNX model file to your application, or make it available in some other way on the target device.

  3. モデルをアプリケーション コードに統合し、アプリケーションをビルドして展開します。Integrate the model into your application code, then build and deploy the application.

トレーニング環境, モデル参照の追加, アプリケーション, Windows ML

インボックス Windows ML から始めるには、「Windows ML でモデルをアプリに統合する」に進んでください。To start with the in-box Windows ML, go to Integrate a model into your app with Windows ML. GitHub の Windows-Machine-Learning リポジトリにあるサンプル アプリを試すこともできます。You can also try out the sample apps in the Windows-Machine-Learning repo on GitHub.

NuGet パッケージを使用する場合は、「チュートリアル:既存の WinML アプリを NuGet パッケージに移植する」を参照してください。If you want to use the NuGet package, please see Tutorial: Port an Existing WinML App to NuGet Package.

Windows ML の最新の機能と修正プログラムについては、「リリース ノート」を参照してください。For the latest Windows ML features and fixes, see our release notes.

インボックスと NuGet WinML ソリューションの比較In-box vs NuGet WinML solutions

次の表は、Windows ML のインボックスおよび NuGet パッケージの可用性、配布、言語サポート、サービス、および上位互換性の側面を示しています。The table below highlights the availability, distribution, language support, servicing, and forward compatibility aspects of the In-Box and NuGet package for Windows ML.

インボックスIn-Box NuGetNuGet
可用性Availability Windows 10 バージョン 1809 以降Windows 10 version 1809 or higher Windows 8.1 以上Windows 8.1 or higher
配布Distribution Windows SDK に組み込みBuilt into the Windows SDK アプリケーションの一部としてパッケージ化して配布Package and distribute as part of your application
サービスServicing Microsoft 主導 (お客様は自動的にメリットを享受)Microsoft-driven (customers benefit automatically) 開発者主導Developer-driven
上位互換性Forward compatibility 新機能により自動的にロール フォワードAutomatically rolls forward with new features 開発者がパッケージを手動で更新する必要があるDeveloper needs to update package manually

アプリケーションがインボックス ソリューションを使用して実行されている場合、Windows ML ランタイム (ONNX モデル推論エンジンを含む) は Windows 10 デバイス (またはサーバー展開を対象とする場合は Windows Server 2019) 上のトレーニング済みモデルを評価します。When your application runs with the in-box solution, the Windows ML runtime (which contains the ONNX Model Inference Engine) evaluates the trained model on the Windows 10 device (or Windows Server 2019 if targeting a server deployment). Windows ML がハードウェア アブストラクションを処理するため、開発者は CPU や GPU、さらに将来は AI アクセラレータなどを含む広い範囲のシリコンを対象にすることができます。Windows ML handles the hardware abstraction, allowing developers to target a broad range of silicon—including CPUs, GPUs, and, in the future, AI accelerators. Windows ML ハードウェア アクセラレータは DirectML 上に構築されます。これは ML 推論を実行するための高パフォーマンスで低レベルの API で、DirectX ファミリの一部です。Windows ML hardware acceleration is built on top of DirectML, a high-performance, low-level API for running ML inferences that is part of the DirectX family.

Windows ML のレイヤー

windows ml nuget パッケージ

NuGet パッケージでは、次の図に示すように、これらのレイヤーはバイナリとして現れます。For the NuGet package, these layers appear as binaries shown in the diagram below. Windows ML は、Microsoft.ai.machinelearning.dll に組み込まれています。Windows ML is built into the Microsoft.ai.machinelearning.dll. これには埋め込みの ONNX ランタイムが含まれていません。代わりに、ONNX ランタイムが onnxruntime.dll ファイルに組み込まれています。It does not contain an embedded ONNX runtime, instead the ONNX runtime is built into the file: onnxruntime.dll. WindowsAI NuGet パッケージに含まれるバージョンには、DirectML EP が埋め込まれています。The version included in the WindowsAI NuGet packages contains a DirectML EP embedded inside of it. 最後のバイナリである DirectML.dll は、DirectML としての実際のプラットフォーム コードであり、Windows に組み込まれている Direct 3D およびコンピューティングのドライバーの上に構築されています。The final binary, DirectML.dll, is the actual platform code as DirectML and is built on top of the Direct 3D and compute drivers that are built into Windows. これら 3 つのバイナリはすべて NuGet リリースに含まれており、アプリケーションと共に配布することができます。All three of these binaries are included in the NuGet releases for you to distribute along with your applications.

また、onnxruntime.dll に直接アクセスすると、クロスプラットフォームのシナリオを対象にすることができ、すべての Windows デバイスでスケーリングされるハードウェアに依存しないアクセラレータを一律に利用できます。Direct access to the onnxruntime.dll also allows you to target cross-platform scenarios while getting the same hardware agnostic acceleration that scales across all Windows devices.

Microsoft の他の機械学習ソリューションOther machine learning solutions from Microsoft

Microsoft では、お客様のニーズに応じてさまざまな機械学習ソリューションを提供しています。Microsoft offers a variety of machine learning solutions to suit your needs. ソリューションはクラウド内で運用するものもあれば、オンプレミスやローカル デバイスで運用するものもあります。These solutions run in the cloud, on-premises, and locally on the device. 詳細については、「Microsoft の機械学習製品とは」を参照してください。See What are the machine learning product options from Microsoft? for more information.

注意

Windows ML に関するヘルプについては、次のリソースを参照してください。Use the following resources for help with Windows ML:

  • Windows ML に関する技術的な質問をしたり、質問に回答したりするには、Stack Overflowwindows-machine-learning タグを使用してください。To ask or answer technical questions about Windows ML, please use the windows-machine-learning tag on Stack Overflow.
  • バグを報告するには、GitHub で問題を提出してください。To report a bug, please file an issue on our GitHub.
  • 機能をリクエストするには、Windows Developer Feedback に進んでください。To request a feature, please head over to Windows Developer Feedback.