Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Windows ML supports two ways to obtain execution providers (EPs) for hardware-accelerated inference. This page explains both options and helps you choose the right strategy for your app.
Comparison
| Windows ML EPs (recommended) | Bring your own (alternative) | |
|---|---|---|
| How | ExecutionProviderCatalog APIs |
NuGet packages or standalone EP binaries |
| Setup complexity | Low — one API call | Medium — manual NuGet reference per EP |
| Certification | Yes — Windows-certified, rigorous regression testing process | Depends on the EP |
| App size impact | Low — EPs downloaded to system, not bundled | High — EPs bundled with your app (~80 MB each) |
| EP updates | Automatic via Windows Update | Manual — you update when you choose |
| OS requirement | Win 11 24H2 (for EPs acquired by ExecutionProviderCatalog APIs)¹ | Depends on EP |
| Network required on first run | Yes (if EP not already installed) | Depends on your implementation |
| Managed device support | IT policy must permit Windows Update | Depends on your implementation |
¹ DirectML and the ORT CPU EP are always included in Windows ML and require no download on any supported OS version.
When to use the Windows ML EPs
Use the Windows ML EPs when:
- App download size matters — avoiding bundling 80-120 MB EP packages per vendor
- You want your app to automatically benefit from EP performance improvements without shipping a new release
- Your target users are on consumer or unmanaged Windows 11 24H2+ devices
- You want to use EPs that are certified by the Windows team for compatibility and stability
See Windows ML EPs for step-by-step instructions.
When to bring your own EP
Bring your own EPs when:
- Your users may be on managed (enterprise) devices where Windows Update is restricted or disabled
- You have strict control requirements over the exact EP version your app uses
- You are deploying to offline environments or devices without internet access
See Bring your own EPs for step-by-step instructions.
Mixing the two approaches
You can use the Windows ML EPs as the preferred path and fall back to a bundled EP for the same hardware target. For example, your app can attempt to get QNN via the Windows ML EP catalog and, if that fails (Windows Update restricted, device offline, etc.), fall back to a QNN NuGet package you bundled yourself — ensuring NPU acceleration on managed or offline devices without changing your inference code.
This hybrid approach gives you the best of both worlds:
- Windows ML EP path: smaller app, automatic updates, zero extra distribution work
- Bundled path: guaranteed availability on managed/offline devices