microsoft / microsoft/foundry-local

[Tracking] NPU/GPU models missing or silently falling back to CPU — EP download failing on Windows

Open
#792 15 comments 20 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

documentation Windows WinML
Dominant language
C++
Stars
2.6k
Forks
369
Avg merge
2d 17h
Merged PRs (30d)
39

Description

👋 If you're hitting this on a Windows device that has an NPU (Snapdragon X / X2 Elite, Intel Core Ultra, AMD Ryzen AI) or GPU (Nvidia TRT-RTX), please **react with 👍 on this issue** so we can gauge impact. Only add a comment if the fixes below don't resolve it for you.

## Symptoms

Any of the following on a device with a working NPU:

- **CLI** — `foundry model list` shows only CPU variants; `foundry model run <…-npu…>` fails with *"Model … was not found in the catalog or local cache"*.
- **SDK** (Python / C# / JS / Rust) — `list_catalog_models()` / equivalent returns no NPU variants. The CLI now consumes the SDK, so the CLI and SDK results are always consistent.
- **Silent CPU fallback** — running a model by alias (e.g. `phi-3.5-mini`) without explicitly listing first appears to "work", but inference runs on **CPU** because the NPU variant was filtered out of the catalog. Look for the chosen variant ending in `-cpu` / `-generic-cpu` rather than `-qnn-npu` / `-vitis-npu` / `-openvino-npu`.
- Logs may include *"Failed to download or register the following EPs: QNNExecutionProvider / VitisAIExecutionProvider / OpenVINOExecutionProvider"*.

## Root cause

Foundry Local relies on **Windows ML** to download and register the per-vendor Execution Provider (QNN for Qualcomm, VitisAI for AMD, OpenVINO for Intel, TensorRT-RTX on Nvidia). EP download uses the **Windows Update** delivery channel, so anything blocking Windows Update blocks the EP. When the EP isn't registered, Foundry Local filters NPU variants out of the catalog — so both CLI and SDK stop listing them, and `model run` resolves to the next-best (usually CPU) variant.

The three most common causes (per the official Windows ML troubleshooting guide):

1. **Pending Windows Update reboot** — Restart the device and retry.
2. **Windows Updates paused** — Settings → Windows Update → **Resume updates**.
3. **Managed device / enterprise policy** blocking Windows Update or component downloads — Contact your IT admin; the EP cannot be sideloaded.

Full guidance:

## Quick verification

```powershell
foundry cache ls # do EPs appear?
foundry model ls --device npu # filter to NPU only
```

To confirm a silent CPU fallback, check which variant got resolved — the variant ID in the run output will end in `-cpu` rather than `-npu`.

## If none of the above helps — file a Feedback Hub report

This is important: a Feedback Hub report automatically captures the WinML EP-download logs the team needs. Please **route it to the WinML team** by selecting the correct category:

1. **Launch Feedback Hub** — Select **Start**, type *Feedback Hub* in the search bar, and open the Feedback Hub app.
2. Select **Report a problem**.
3. Describe your issue (e.g. *"NPU execution provider failed to download / register; NPU models missing from Foundry Local catalog"*).
4. For the category, select **Developer Platform → Windows Machine Learning**.
5. Follow the prompts to reproduce the problem and submit.

Then comment on this issue with:
- the **Feedback Hub link** to your report,
- NPU **vendor + driver version**,
- **Foundry Local version** (`foundry --version`),
- whether `foundry cache ls` shows any EP entries.

Related closed issues: #510, #393, #558, #584, #659.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the Windows ML execution-provider troubleshooting guide and run `foundry cache ls` plus `foundry model ls --device npu` to compare EP registration with catalog results. Confirm the resolved variant and collect the requested Foundry Local version, driver details, and Feedback Hub report; the issue does not identify a repository file or code change as the definition of done.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
ai, cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.