适用于谁
一台带 NVIDIA 显卡的 Windows 机器,你想用 Linux 那套工具(Ollama、llama.cpp、Python)又不想装双系统。如果你只是想聊天、完全不碰终端,Windows 原生的 Ollama 应用更简单 —— 这篇是写给同时还想要 Linux 环境的情况。
前置条件
Windows 11(或 Windows 10 21H2+)、一张 NVIDIA 显卡,以及 Windows 侧装好的较新 NVIDIA 驱动。唯一要紧的规则:不要在 WSL 里装任何 NVIDIA 驱动。NVIDIA 的 CUDA on WSL 指南写得很明确 —— Windows 驱动会以 libcuda.so 的形式映射进 WSL(/usr/lib/wsl/lib),在它上面再装 Linux 驱动就会把它覆盖掉。最容易误踩的是 apt install cuda(或 cuda-drivers):这两个元包会顺带装上 Linux 驱动。如果你确实需要在 WSL 里编译东西用的 CUDA 工具包,NVIDIA 的说法是只装 cuda-toolkit-12-x 这个包。
# PowerShell (Administrator)
wsl --install
wsl --update
wsl --status # want: default version 2
# The check that matters — GPU visible from inside the WSL VM
wsl nvidia-smi给 WSL 虚拟机足够内存
WSL2 跑在一个轻量虚拟机里,内存上限默认是主机内存的 50%(微软文档里 memory 设置的默认值)。这个上限平时看不见,直到模型需要 CPU 卸载时,虚拟机会比 Windows 先耗尽内存。在 %UserProfile%\.wslconfig 里显式设置,然后 wsl --shutdown 让它生效。给 Windows 自己留几 GB。
# %UserProfile%\.wslconfig (example for a 32GB machine)
[wsl2]
memory=20GB
swap=8GB
# then, in PowerShell:
# wsl --shutdown在 WSL 中安装 Ollama
在 Ubuntu 里装 Linux 版,而不是 Windows 应用 —— 两个都装会有两个服务同时抢 11434 端口和 GPU。在 WSL2 上安装脚本完全不装 GPU 驱动,只检查透传是否可用,nvidia-smi 正常时会打印 "Nvidia GPU detected.";如果没看到这一行,先修好透传再往下走。脚本还会把 Ollama 注册成 systemd 服务。WSL 文档里 systemd 默认是关闭的,没开的话脚本会警告 "systemd is not running",此时没有任何服务在运行 —— 在 /etc/wsl.conf 里开启它,或者在另一个终端里运行 ollama serve。模型放在 WSL 文件系统里(~/.ollama);放在 /mnt/c 下,每次读取都要跨到 Windows 文件系统,加载会慢得多。
curl -fsSL https://ollama.com/install.sh | sh
# look for: "Nvidia GPU detected."
# If it warned "systemd is not running":
# printf '[boot]\nsystemd=true\n' | sudo tee -a /etc/wsl.conf
# then in PowerShell: wsl --shutdown
# Most library tags default to Q4_K_M
ollama pull qwen3:8b
ollama run qwen3:8b确认真的用上了 GPU
Ollama 装不下或找不到 GPU 时会退回 CPU 而不是报错,所以"回答很慢"通常是透传坏了,而不是显卡慢。两个检查点:ollama ps 的 PROCESSOR 一列,整个模型都在显卡上时显示 100% GPU;WSL 里的 nvidia-smi 应该能看到 ollama 进程占着大约模型大小的显存。Qwen3 8B 在 Q4_K_M、Ollama 默认 4096 token 上下文下,本站计算器给出的是约 5.8 GB。如果一个本该装得下的模型 PROCESSOR 里出现了 CPU 占比,问题在透传,不在模型。
ollama ps
# NAME ID SIZE PROCESSOR UNTIL
# qwen3:8b <id> ... 100% GPU 4 minutes from now
nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv从 Windows 访问 API
WSL2 默认会转发 localhost,所以在 Windows 浏览器或 PowerShell 里访问 http://localhost:11434 就能连到 WSL 内的服务,不需要额外配置。在 WSL 默认的 NAT 网络模式下,局域网里的其他机器访问不到这个服务 —— 微软文档写明局域网访问需要配一条 netsh portproxy 规则。换成镜像网络模式(networkingMode=mirrored,Windows 11 22H2+)就不一样了:WSL 直接接入局域网,绑定在 0.0.0.0 上的 Ollama 对网络里每台机器都可见,而且前面没有任何鉴权。除非你确实想这样,否则 OLLAMA_HOST 保持默认。
# From Windows PowerShell (curl.exe — plain curl is an alias there)
curl.exe http://localhost:11434/api/tags常见问题
wsl nvidia-smi 失败:更新 Windows 驱动,然后 wsl --update 与 wsl --shutdown;不要在 WSL 里装驱动。原本好好的,一次 apt upgrade 之后不行了:检查是不是装进了 cuda 或 cuda-drivers 包 —— 那是 Linux 驱动把映射进来的驱动覆盖了。"could not connect to ollama app":服务没在运行,几乎都是因为 systemd 没开(见安装一节)。nvidia-smi 正常但 Ollama 走 CPU:通常是另一份 Ollama(Windows 应用)占着端口,或者模型对这张卡太大 —— 用 ollama ps 看。磁盘被占满:WSL 虚拟磁盘会为拉取的模型扩容,但不会自己缩回去;ollama rm 能删模型,要真正回收空间得压缩 vhdx(.wslconfig 里的 sparseVhd=true 只对新建的磁盘生效)。首次加载极慢:模型多半放在 /mnt/c 下。
下一步
拉取更大的模型之前,先把你的显卡放进显存计算器,看看在你实际使用的上下文长度下还能装下什么 —— 在 Windows 上,记得减去桌面已经占用的 0.5–1.5GB。
常见问题
在 WSL 里跑 Ollama 需要装 CUDA 工具包吗?
不需要。Ollama 自带 CUDA 运行库,用的是 Windows 映射进 WSL 的驱动。工具包只在你要自己编译 CUDA 代码时才需要 —— 真要装的话只装 cuda-toolkit-12-x,千万别装 cuda 或 cuda-drivers 元包,它们会带上 Linux 驱动,把透传弄坏。
WSL2 会比在 Windows 上原生跑 Ollama 慢吗?
本站没有实测过两者的差距,所以不给数字。能说的是:模型进了 GPU 之后,两种方式都是同一张卡、同一个驱动在生成。WSL2 真正的代价在边缘 —— 模型溢出到 CPU 时才会碰到的 50% 内存上限,以及模型放在 /mnt/c 下时的慢加载,上文都讲了。
局域网里的其他机器能用这个 Ollama 服务吗?
在 WSL 默认的 NAT 模式下不能 —— 需要在 Windows 上配 netsh portproxy 规则。在镜像网络模式下,只要 Ollama 监听 0.0.0.0 就能访问,而这个 API 没有任何鉴权。如果需要局域网访问,在前面加一层带鉴权的反向代理,不要直接暴露 11434 端口。
这篇指南用到了什么
- 格式
- GGUF
- 对应推荐
- 16GB 能跑的最好的本地大模型
接下来
看看 🟢 RTX 4060 Ti 16G 还能跑哪些模型反向查询 —— 16GB、4096 上下文,按质量排序本文涉及的模型
它真的跑起来了吗?
复制命令并不等于它能用,所以站内只在这里问一次。除了你的这个回答之外,不收集任何东西。
相关指南
Windows 原生 Ollama(不用 WSL)
安装 Windows 版 Ollama 最简单 —— NVIDIA 和 AMD Radeon 显卡都能用 GPU,不用 WSL,也不用装工具包。
Windows + CUDA 运行 llama.cpp
Windows 11 上编译带 NVIDIA GPU 支持的 llama.cpp — PC 玩家的最简路径。
本地运行 GPT-OSS 20B(及 120B)——不要重新量化
GPT-OSS 原生就是 MXFP4,习惯性去下 Q4_K_M 反而更大更差。本文讲清显存怎么算、该用哪些参数,以及如何用 MoE 专家卸载在 24GB 卡上跑 120B。