一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Python:Foundry Local 如何在 Windows PC 上使用 CPU、GPU 和 NPU 运行 AnythingLLM?

时间:2026-09-17 12:14:01 编辑:袖梨 来源:一聚教程网

从 AnythingLLM Desktop v1.16.1 开始,Windows 版已经直接内置 Microsoft Foundry Local。要让 AnythingLLM 使用 CPU、GPU 或 NPU,不需要编写 Python 集成代码,也不需要单独安装 Foundry Local CLI、SDK 或后台服务。更新 AnythingLLM Desktop 后,在设置中把 LLM Provider 选择为 Foundry Local,再从目录选择模型,应用会根据当前 Windows 设备自动取得合适变体并运行。

Foundry Local 会通过 Windows ML 识别 NVIDIA、Intel、AMD 和 Qualcomm 等硬件,并在 NPU、GPU 与 CPU 候选之间匹配模型。设备有兼容 NPU 时可能使用 NPU 变体,有兼容 GPU 时可能使用 GPU 变体,其余情况回退 CPU。选择取决于执行提供程序、驱动和模型目录,不是所有模型都保证使用机器上最快的设备。

需要满足哪些前提

AnythingLLM 官方集成要求 Windows 11 24H2 或更新版本,AnythingLLM Desktop 至少为 v1.16.1。x64 Windows PC 与 Snapdragon ARM64 Windows PC 都在该集成范围内。首次获取模型和执行提供程序需要网络,完成下载后推理在本机进行。

硬件加速仍受设备与驱动支持范围限制。电脑具有 GPU 或 NPU 只说明硬件存在,Windows ML 还要能发现并注册对应执行提供程序,Foundry Local 目录也要有匹配变体。条件不满足时使用 CPU 是正常回退,不代表 AnythingLLM 安装失败。

不需要安装 Python SDK

“Python 如何运行 AnythingLLM”容易产生误解。AnythingLLM Desktop 是完整桌面应用,Foundry Local 被嵌入其 Windows 发行包。用户操作的是 AnythingLLM 设置界面,而不是在虚拟环境中调用 FoundryLocalManager

不要为了启用内置 provider 额外安装 foundry-local-sdkfoundry-local-sdk-winml 或多个 ONNX Runtime 包。它们不会自动接入 AnythingLLM 内部运行时,混装只会给独立 Python 项目增加依赖冲突。只有开发自己的 Python 应用时,才需要 Foundry Local Python SDK。

两分钟配置流程

第一步:安装或更新 AnythingLLM Desktop

确认下载的是 Windows Desktop 版本,并在关于页面核对版本至少为 1.16.1。旧版本不包含这项内置集成,设置中可能找不到 Foundry Local。

第二步:选择 Foundry Local

打开 Settings,进入 LLM Preference,把 provider 设置为 Foundry Local。这里不需要填写 Azure 订阅、云端 API key 或外部服务 URL。Foundry Local 作为桌面应用内部引擎工作。

第三步:选择模型

AnythingLLM 会显示适合当前机器的模型目录。选择一个模型后,Foundry Local 会解析硬件兼容变体、下载并缓存。初次运行耗时取决于模型大小、网络和执行提供程序准备过程;后续启动通常复用缓存。

第四步:开始聊天或处理文档

模型就绪后即可使用普通聊天、文档聊天、agent、工具调用和后台任务。所有推理在设备上执行,提示与回答不因 Foundry Local 而发送到 Azure。应用本身启用的其他联网功能仍应按对应隐私设置判断。

硬件是怎样自动选择的

AnythingLLM 把模型请求交给内置 Foundry Local。Foundry Local 查看 Windows ML 可用执行提供程序,再从模型别名对应的多个变体中选择兼容候选。它还负责下载模型、缓存文件、加载会话和卸载资源。

NVIDIA RTX 机器可能选择 CUDA 或 TensorRT RTX 变体;Intel GPU/NPU 可能使用 OpenVINO;AMD NPU 可能使用 VitisAI;Snapdragon NPU 可能使用 QNN;兼容 GPU 还可能走通用 GPU 路径。没有专用候选时,CPU 负责通用回退。具体支持随版本、驱动与目录更新。

用 Python 做只读系统预检

Python 不是运行 AnythingLLM 的必需组件,但管理员可以用标准库快速检查 Windows build、架构和物理内存:

from __future__ import annotations

import ctypes
import platform
import subprocess
import sys


class MemoryStatusEx(ctypes.Structure):
    _fields_ = [
        ("length", ctypes.c_ulong),
        ("memory_load", ctypes.c_ulong),
        ("total_phys", ctypes.c_ulonglong),
        ("avail_phys", ctypes.c_ulonglong),
        ("total_page_file", ctypes.c_ulonglong),
        ("avail_page_file", ctypes.c_ulonglong),
        ("total_virtual", ctypes.c_ulonglong),
        ("avail_virtual", ctypes.c_ulonglong),
        ("avail_extended_virtual", ctypes.c_ulonglong),
    ]


def memory_gib() -> float:
    status = MemoryStatusEx()
    status.length = ctypes.sizeof(status)
    if not ctypes.windll.kernel32.GlobalMemoryStatusEx(
        ctypes.byref(status)
    ):
        raise ctypes.WinError()
    return status.total_phys / (1024 ** 3)


if sys.platform != "win32":
    raise SystemExit("AnythingLLM Foundry Local integration requires Windows")

windows = sys.getwindowsversion()
print("Windows build:", windows.build)
print("Architecture:", platform.machine())
print("RAM GiB:", round(memory_gib(), 1))

if windows.build < 26100:
    print("Update to Windows 11 24H2 or later")

devices = subprocess.run(
    [
        "powershell",
        "-NoProfile",
        "-Command",
        "Get-CimInstance Win32_VideoController | Select Name,DriverVersion",
    ],
    capture_output=True,
    text=True,
    encoding="utf-8",
    errors="replace",
)
print(devices.stdout)

这段脚本只能提供系统线索,不能证明 AnythingLLM 最终用了哪一个 EP。Win32_VideoController 也不负责可靠枚举所有 NPU。最终判断应以 AnythingLLM 的模型兼容列表、运行日志和硬件负载为准。

如何确认实际使用 GPU 或 NPU

先记录 AnythingLLM 选择的精确模型或变体信息,再在生成响应时观察任务管理器 Performance 页面。GPU 应查看 Compute 引擎而不是只看显存;NPU 应观察 NPU 利用率。CPU 有少量负载不一定表示完全回退,因为分词、调度和不受支持算子仍可能使用 CPU。

如果应用日志可用,搜索 execution provider、model variant、CUDA、OpenVINO、QNN 或 VitisAI 等字段。硬件曲线与日志一致时,才有较强证据证明后端选择。仅凭回答速度主观判断不可靠。

为什么只显示 CPU 模型

常见原因包括 Windows 版本低于 24H2、GPU/NPU 驱动不满足要求、Windows ML EP 下载被暂停更新或企业策略阻止、当前模型没有目标硬件变体,或设备本身不在 provider 支持范围。先更新 Windows 与驱动并重启,再重新打开 AnythingLLM。

企业电脑可能由 SCCM、WSUS 或组策略管理 Windows Update。Windows ML 的厂商 EP 无法交付时,Foundry Local 只能显示 CPU 或通用 GPU 候选。此时需要 IT 调整组件分发策略,而不是在 AnythingLLM 中反复切换模型。

为什么下载后仍未使用目标硬件

模型下载与执行提供程序安装是两个阶段。模型文件已经缓存,不代表专用 EP 已注册;反过来,EP 可用也不代表目录有该模型的 NPU/GPU 变体。删除并重复下载模型通常不能修复驱动或 EP 问题。

还要检查是否选择了精确 CPU 变体。如果界面以模型别名展示,Foundry Local 可以自动适配;若某个高级设置固定了后端变体,就会限制自动选择。

当前限制

AnythingLLM 官方说明,Foundry Local 集成目前尚未提供视觉模型。模型目录仍在扩展,因此其他运行时里存在的模型不一定会出现在 AnythingLLM 的 Foundry Local列表中。不能把任意 ONNX、GGUF 或 Hugging Face 模型直接视为可用目录项。

“每台 Windows PC”指内置体验覆盖广泛 Windows 硬件,并有 CPU 回退,不表示每台电脑都能使用 NPU,也不表示所有模型在所有设备上性能相同。设备能力、内存、驱动和模型大小仍决定实际体验。

何时使用独立 Python SDK

如果目标是开发自己的 Python 应用、控制模型生命周期、直接调用会话 API或提供本地服务,才需要单独安装 Foundry Local SDK。那条路径与 AnythingLLM Desktop 内置集成相互独立,应使用单独虚拟环境并按 SDK 版本文档配置。

如果目标只是使用 AnythingLLM 的聊天、RAG 和 agent 功能,桌面内置 provider 已经完成运行时集成。自行启动另一个 Foundry Local 服务并不会让内置模式更快,反而可能占用重复模型缓存和设备内存。

稳定使用的建议

保持 Windows、设备驱动和 AnythingLLM Desktop 更新;首次下载时预留稳定网络和足够磁盘;为大模型保留系统内存或显存余量;每次切换模型后确认实际变体;企业环境提前验证 Windows ML 组件分发;对性能敏感的工作流用固定提示测量延迟,而不是只比较模型参数量。

正确流程很简单:Windows 11 24H2 上安装或更新 AnythingLLM Desktop v1.16.1,在 LLM Preference 选择 Foundry Local,选择目录模型并等待初始化,然后用日志与硬件监控验证实际后端。Python可以帮助批量预检设备,但运行 AnythingLLM 本身不需要 Python 代码。

热门栏目