开始之前
Windows 10 22H2 或更新版本,加一个较新的显卡驱动。Ollama 文档给出的 NVIDIA 最低驱动版本是 551.61。不只是 NVIDIA,AMD Radeon 也能用:RX 7600、7600 XT、7700 XT、7800 XT 和 7900 系列走 ROCm,需要 AMD 支持 ROCm 7 的驱动;其他 Radeon(包括 RX 6000 系列)走 Vulkan —— Ollama 默认启用它,而它本来就包含在 AMD 的常规驱动里。安装包自带 GPU 运行时,不用装 CUDA Toolkit 或 ROCm SDK,不用编译,也不需要管理员权限。
# Download and run OllamaSetup.exe from ollama.com, then:
ollama --version
# NVIDIA: driver version and VRAM
nvidia-smi
# AMD: Task Manager → Performance → GPU shows "Dedicated GPU memory"拉取模型并运行
先从 Q4_K_M 的 8B 开始。按本站的数字,Llama 3.1 8B 的 Q4_K_M 在 4K 上下文下约需 5.6 GB,而 4K 正是 Ollama 默认的上下文窗口,所以 8GB 显卡能宽裕放下。Ollama 会自己选用 GPU,没有需要打开的开关。更长的窗口要占更多显存:用 OLLAMA_CONTEXT_LENGTH 对所有模型生效,或用 num_ctx 只改当前会话,改之前先在计算器里算一下大小。
ollama pull llama3.1:8b
ollama run llama3.1:8b
# Inside the chat, for this session only:
/set parameter num_ctx 8192模型到底存在哪里
模型默认放在用户目录下的 .ollama\models,通常就在 C 盘,几个模型就能悄无声息地占满一块小固态硬盘。要在下载之前改存放位置,而不是下载之后。OLLAMA_MODELS 是 Ollama 启动时读取的用户环境变量:设置它(设置 → 搜索“环境变量” → 编辑你账户的环境变量,或用下面的 setx),然后从托盘退出 Ollama,再从开始菜单重新打开。已经打开的终端也读不到新值。日志在另一个地方:%LOCALAPPDATA%\Ollama,出问题时先看里面的 server.log。
# Default store: %HOMEPATH%\.ollama\models
setx OLLAMA_MODELS "D:\ollama\models"
# Quit Ollama from the tray, then start it again from the Start menu.
# Logs (server.log names the GPU it found):
explorer $env:LOCALAPPDATA\Ollama确认它真的跑在 GPU 上
模型放不下时,Ollama 会悄悄把一部分放到 CPU 上,唯一的症状就是变慢。ollama ps 会显示它对每个已加载模型的决定。PROCESSOR 这一列就是答案:一个本该放得下的模型显示的不是 100% GPU,就值得查一查。NVIDIA 上用 nvidia-smi 看显存占用;AMD 上,任务管理器的 GPU 页面会显示模型加载时“专用 GPU 内存”上涨,而 server.log 会写明 Ollama 选用的设备和后端(ROCm 还是 Vulkan)。
ollama ps
# NAME ID SIZE PROCESSOR UNTIL
# llama3.1:8b <model id> 6.1 GB 100% GPU 4 minutes from now
# NVIDIA only:
nvidia-smi --query-gpu=memory.used,utilization.gpu --format=csv -l 1让其他程序调用它
编辑器插件和桌面客户端调用的是 Ollama 在 11434 端口提供的 HTTP API,不管你有没有打开过终端,它都在运行。在 Windows PowerShell 5.1 里,curl 是 Invoke-WebRequest 的别名,所以从 Linux 教程里复制来的 curl -d 例子会报参数错误。请用 Invoke-RestMethod,或者输入 curl.exe 调用真正的 curl。Ollama 默认只监听 127.0.0.1。OLLAMA_HOST 可以改变这一点,但把它开放到局域网就等于让网络里任何人都能用你的 GPU,这应该是一个想清楚的决定,而不是复制来的一行命令。
Invoke-RestMethod -Method Post -Uri http://localhost:11434/api/generate `
-Body '{"model":"llama3.1:8b","prompt":"hello","stream":false}'
# Keep a model loaded for an hour instead of the 5-minute default:
Invoke-RestMethod -Method Post -Uri http://localhost:11434/api/generate `
-Body '{"model":"llama3.1:8b","keep_alive":"1h"}'跑不起来的时候
ollama ps 显示本该放得下的模型有一部分在 CPU 上:要么是别的程序占着显存(最常见的是开了硬件加速的浏览器),要么在 NVIDIA 上,控制面板里的“系统内存回退”(System Memory Fallback)把显存溢出到了系统内存,把“放不下”变成了“莫名其妙地慢”。AMD 显卡跑在 CPU 上:RX 6000 一类的显卡,在当前的 Windows 驱动上可能拿不到 ROCm 7,Ollama 文档给出的后备方案是默认开启的 Vulkan。如果带集成显卡的笔记本或台式机选中了核显,把 GGML_VK_VISIBLE_DEVICES 设为独立显卡的编号。C 盘被占满:那是模型存放目录,OLLAMA_MODELS 必须在下载之前设好。插件连不上 API:服务默认只绑定本机,这是正确的。让插件指向 127.0.0.1:11434,或者想清楚之后再改绑定地址。昨天能跑的模型今天加载不了:通常是另一个模型还留在显存里。模型空闲五分钟后自动卸载,或者用 ollama stop 立刻卸载。
常见问题
在 Windows 上跑 Ollama 需要 WSL 吗?
不需要。原生 Windows 版直接使用 NVIDIA 和 AMD Radeon 显卡。它自带 GPU 运行时,不用装 CUDA Toolkit 或 ROCm SDK,也不用编译。如果你出于别的原因需要 Linux 环境,WSL 仍然是合理的选择,但它是多加了一层,而不是少了一层。
Windows 上的 Ollama 能用 AMD Radeon 显卡吗?
能。Ollama 文档列出在 Windows 上走 ROCm 的型号是 RX 7600、7600 XT、7700 XT、7800 XT 和 7900 系列(XTX、XT、GRE),需要支持 ROCm 7 的 AMD 驱动。其他 Radeon(包括 RX 6000 系列)走 Vulkan —— 它默认启用,且包含在 AMD 的常规驱动里。用 ollama ps 确认:模型在显卡上时,PROCESSOR 一列显示 100% GPU。
怎么把 Ollama 的模型移出 C 盘?
把用户环境变量 OLLAMA_MODELS 设为你想要的文件夹,然后从系统托盘退出 Ollama,再从开始菜单重新启动它,因为它只在启动时读取这个变量。要在下载之前设置,而不是之后。默认存放位置在用户目录下,几个模型就能悄无声息地占满一块小系统盘。
怎么知道 Ollama 有没有在用我的 GPU?
在模型加载时运行 ollama ps。整个模型都在显卡上时,PROCESSOR 一列显示 100% GPU,否则会写出 CPU 占的比例。如果本该放得下的模型显示有 CPU 份额,先查还有什么占着显存。NVIDIA 上,再看控制面板里是否开了“系统内存回退”;AMD 上,看 %LOCALAPPDATA%\Ollama 里的 server.log 写的是独立显卡而不是集成显卡。
这篇指南用到了什么
- 格式
- GGUF
接下来
本文涉及的模型
它真的跑起来了吗?
复制命令并不等于它能用,所以站内只在这里问一次。除了你的这个回答之外,不收集任何东西。