为什么 Ollama 在 Windows 上“装睡”?

最近入手了搭载 AMD Strix Halo 架构(比如 Ryzen AI Max+ 395)的新本,本想用 Ollama 跑个大模型爽一把,结果发现情况有点尴尬:明明硬件参数亮眼,拥有巨大的统一内存和强劲的 Radeon 核显,但 Ollama 启动后,GPU 利用率却常年挂零,生成速度慢得像是在用 CPU 硬算 PPT。

这不是个例。很多从 Linux 服务器或者 NVIDIA 阵营转过来的朋友,下意识觉得 AMD 的官方异构计算平台 ROCm 才是正统,但在 Windows 这个特定战场下,现实往往很骨感。Ollama 在 Windows 下对 Strix Halo 的适配目前还处于“摸黑过河”的阶段,默认情况下经常无法正确识别全部显存,导致那颗强大的 Radeon 8060S 核显就在旁边“围观”,所有计算压力全压在 CPU 上。

如果你也是习惯命令行操作、不想被图形界面束缚的高级用户,那么这篇实战记录就是为你准备的。我们不调用任何第三方 GUI 工具,直接通过 PowerShell 环境变量和 Modelfile 配置,强制唤醒沉睡的 GPU,让 Ollama 在 Windows 上也能跑出应有的速度。

核心症结:驱动识别与架构版本

要解决问题,先得知道病根在哪。Strix Halo 采用的是最新的 RDNA3 架构,而在 Windows 环境下,Ollama 底层的 llama.cpp 引擎有时无法自动匹配到正确的 GPU 架构 ID。

这就好比你去图书馆借书,图书管理员(驱动程序)知道书在哪里,但借阅系统(Ollama)因为版本库没更新,查不到这本书的编号,最后只能告诉你“没书”,让你自己去仓库(CPU 内存)里翻。在日志里,你经常会看到 HIP initialization failed 或者设备未找到的提示,即便勉强启动,推理引擎也会因为无法正确握手而回退到 CPU 模式。

这时候,显存带宽再大也没用,因为根本没调用起来。解决这个问题的关键,在于手动告诉 Ollama:“别猜了,直接用这个架构版本。”

第一招:PowerShell 强制指定架构

对于大多数 Strix Halo 设备,最直接有效的方案是通过设置环境变量 HSA_OVERRIDE_GFX_VERSION 来强制指定架构版本。RDNA3 架构对应的版本号通常是 11.0.3

不要直接在系统属性里改全局环境变量,那样可能会影响其他软件。我们推荐在每次启动 Ollama 服务时,通过 PowerShell 临时注入这个变量。这样既安全又灵活。

打开 PowerShell(建议以管理员身份运行),输入以下命令:

$env:HSA_OVERRIDE_GFX_VERSION="11.0.3"
ollama serve

这条命令做了两件事:首先设定当前会话的环境变量,告诉底层计算库使用 GFX 11.0.3 架构;然后启动 Ollama 服务。

执行后,观察终端输出。如果配置成功,你应该能看到类似 offloading 99 layers to GPU 的日志信息,而不是之前的 CPU 回退警告。这时候,再去任务管理器或者性能监控工具里看,Radeon GPU 的计算单元利用率应该会瞬间飙升,不再是一条直线。

第二招:定制 Modelfile 固化配置

解决了“认不认得”的问题,接下来要解决“记不记得住”的问题。Ollama 默认的上下文窗口(Context Window)通常较小(如 4k 或 8k),这对于 Strix Halo 这种拥有 32GB 甚至 64GB 统一内存的设备来说,简直是浪费。而且每次运行都要手动传参也很麻烦。

我们可以创建一个优化的 Modelfile,把上下文大小、GPU 卸载层数等参数固化下来,打造一个专属的“满血版”模型。

新建一个文本文件,命名为 Modelfile(无后缀),写入以下内容:

FROM qwen2.5:14b-instruct-q4_k_m

# 将上下文窗口拉大到 32k,充分利用大内存优势
PARAMETER num_ctx 32768

# 强制将所有层卸载到 GPU,避免部分层落在 CPU 上导致瓶颈
PARAMETER num_gpu 99

# 设定系统提示词,明确运行环境
SYSTEM "你是一个运行在本地 AMD Strix Halo 平台上的高效助手,专注于代码辅助与逻辑推理。"

这里的 qwen2.5:14b-instruct-q4_k_m 只是一个示例,你可以替换成任何你喜欢的 GGUF 模型。关键在于 PARAMETER 部分的设置。num_gpu 99 是一个足够大的数字,意在告诉引擎:“能卸多少卸多少,别客气”。

保存文件后,在 PowerShell 中执行以下命令构建新模型:

ollama create my-strix-ai -f Modelfile

构建完成后,你就可以通过这个自定义名称来运行模型了:

ollama run my-strix-ai

这样,每次启动都不需要重复输入复杂的参数,而且模型会默认以最优配置运行,直接吃满 GPU 资源。

效果对比:从"PPT"到“丝滑”

配置前后,体验的差异是断崖式的。

在未调整之前,使用默认设置运行 14B 模型,生成速度往往只有 3-5 tokens/s,首字延迟高达 2 秒以上,打字机的感觉变成了“翻页器”,完全无法进行流畅对话。此时 GPU 显存占用极低,大部分时间都在空转。

而在应用了上述两招之后,同样的模型,生成速度稳定在了 28-32 tokens/s,首字延迟降低到 0.5 秒以内。这个速度已经完全满足了日常对话、代码生成和文档分析的需求。更重要的是,LM Studio 或 Ollama 的状态栏会清晰显示 GPU Offload: 99/99,意味着整个模型的推理计算层全部交给了 GPU,充分利用了 Strix Halo 高带宽的统一内存。

这种提升不仅仅是数字的变化,更是可用性的质变。以前跑大模型像是在等待加载,现在则是真正的实时交互。

给高级用户的几点建议

虽然 Vulkan 方案在 Windows 上已经相当稳定,但为了确保持续的最佳体验,还有几个细节需要注意:

  • 驱动是生命线:务必前往 AMD 官网下载并安装最新的 Adrenalin Edition 驱动程序。旧版驱动对 Vulkan 计算队列的支持可能存在缺陷,导致性能发挥不出来。
  • BIOS 设置检查:进入 BIOS,确保开启了 Resizable BAR 功能,并将 iGPU 内存分配调至最大(如 96GB 或更高)。这是发挥统一内存优势的前提,否则系统可能会限制 GPU 可寻址的内存空间。
  • 量化格式选择:尽量使用 GGUF 格式 的量化模型(如 Q4_K_M 或 Q5_K_M)。它们在保持高精度的同时,能显著降低显存占用,让 Strix Halo 在运行大模型时依然有余力处理其他任务。

硬件的强大只是基础,软件栈的匹配才是关键。Strix Halo 架构带来的统一内存红利,只有在正确的配置加持下才能转化为实实在在的生产力。别再为默认的兼容性问题抓狂了,动动手指,让你的本地 AI 真正跑起来。

200小时GPU算力已就位,快来领取:https://marketing.csdn.net/questions/Q2604140858304426315?utm_source=AIpaper
在这里插入图片描述

更多推荐