☰
WSL2+Ollama:Windows本地部署大模型完整指南
2026/10/1 19:59:05 网站建设 项目流程

在 Windows 上玩本地大模型,绕不开 WSL 和 Ollama 这对组合。WSL 给 Windows 套上了完整的 Linux 运行环境,Ollama 则把 Qwen、Llama 这些开源模型的下载、运行、API 暴露全都承包了。我折腾这套环境花了不少时间,踩过的坑包括 WSL 迁移到 D 盘、Ollama 下载慢到怀疑人生、CUDA 驱动对不上、模型 pull 下来一运行就报 500 错误等等。这篇文章就是把这些配置过程完整记录下来,从零开始教你在 WSL 里把 Ollama 跑起来,最后能让本地大模型正常响应,并且能被 VS Code、AnythingLLM 这类工具调用。适合想在 Windows 上本地部署私有大模型的开发者,也适合准备搭建 PyTorch 深度学习环境的同学参考。

1. 为什么是“WSL 里的 Ollama”而不是原生 Windows 方案

1.1 WSL 2 比 WSL 1 强在哪

很多人第一次接触 WSL 时,不清楚 WSL 1 和 WSL 2 的区别,这两者在 Ollama 场景下差别非常大。WSL 1 用的是系统调用翻译层,说白了就是把 Linux 的系统调用翻译成 Windows 内核能识别的操作,兼容性一般,很多依赖 Docker、GPU 直通、完整网络协议栈的软件跑不起来。WSL 2 则完全不同,它基于 Hyper-V 虚拟化平台,运行一个完整的轻量级 Linux 虚拟机,内核是原生的,systemd、Docker、CUDA 这些都能顺利工作。

Ollama 在运行模型时,底层会启动一个 llama-server 进程,负责加载模型权重、执行推理,并且要跟 GPU 驱动打交道。这个过程对操作系统的完整性要求很高,WSL 1 那种翻译层根本扛不住,所以必须用 WSL 2。判断自己当前是 WSL 1 还是 2,在 PowerShell 里执行wsl --list --verbose就能看到版本号,如果不是 2,用wsl --set-version Ubuntu 2升级,这一步建议先做,不然后面所有操作都会出问题。

1.2 直接用 Windows 版 Ollama 不香吗

Ollama 官方确实提供了 Windows 原生安装包,双击就能装,也能跑模型。但实际用下来,我强烈建议走 WSL 这条路,原因有几点。第一,Ollama 的 Linux 版本更新最快,很多新功能、新模型格式的支持会先在 Linux 版落地,Windows 版偶尔会慢半拍。第二,本地部署大模型往往不止 Ollama 单独跑,你还要配合 Python 脚本、Docker 容器、LangChain 之类的工具链,这些生态在 Linux 下几乎零成本兼容,在 Windows 原生环境下反而各种别扭。第三,WSL 2 的 GPU 直通能力很成熟,NVIDIA 驱动在 Windows 侧装好之后,WSL 里直接就能用 nvidia-smi 看到显卡,推理速度跟原生 Linux 几乎没有差别。

举一个实际例子,我在 Windows 原生版 Ollama 里跑 Qwen 系列模型时,想用 shell 脚本批量拉模型、做模型间的对比测试,Windows 的命令行体验实在一言难尽。切到 WSL 之后,一个循环就能搞定整个测试流程。对于经常写代码、跑实验的人来说,WSL 等于在 Windows 里送了一个免费 Linux,不接受反驳。

1.3 这套方案适合谁

如果你属于下面几类人,WSL 中配置 Ollama 这套流程特别适合参考。第一类是 AI 应用开发者,需要在本地起一个 OpenAI 兼容接口做测试,Ollama 的http://localhost:11434就是现成的。第二类是深度学习爱好者,想在本地跑 Qwen、Llama 或者微调小型模型,又不想装双系统。第三类是搞嵌入式或安全分析的,需要在 WSL 里用到 binwalk 之类的 Linux 工具,顺便也想玩玩本地模型。不管哪类,只要你的 Windows 版本在 Win10 2004 以上,硬件有个 8G 内存起步、最好有 NVIDIA 显卡,这套配置就能顺利走通。

2. 环境准备:把 WSL 这块地基打牢

2.1 一条命令安装 WSL 与 Ubuntu

新版本的 Windows 安装 WSL 非常简单,管理员身份打开 PowerShell,执行:

wsl --install

这条命令会一次性把 WSL 功能、虚拟机平台、默认的 Ubuntu 发行版全部装好,装完重启即可。如果你之前已经装过 WSL,但版本比较老,先执行wsl --update把内核更新到最新,再继续。想指定发行版可以用:

wsl --install -d Ubuntu-22.04

不指定版本默认装的可能是最新的 Ubuntu 24.04,也完全没问题。装完之后首次进入 WSL 会让你设置用户名和密码,设置好之后,你就拥有了一个跟服务器一模一样的 Linux 环境。需要注意,第一次启动可能会卡在 “Installing, this may take a few minutes...”,如果超过十分钟没反应,大概率是网络下载发行版包太慢,可以考虑后面提到的离线导入方案。

2.2 把 WSL 迁移到 D 盘,拯救 C 盘空间

这是必须提前做的一步,血泪教训。WSL 默认把整个 Linux 文件系统放在 C 盘的一个 VHDX 虚拟磁盘文件里,随着你安装各种软件、拉模型,这个文件会疯狂膨胀,C 盘分分钟爆红。Ollama 的模型动辄几个 GB,如果不控制好存放位置,C 盘很快就满了。

迁移操作在 PowerShell 里按顺序执行:

wsl --shutdown wsl --export Ubuntu D:\wsl\ubuntu-backup.tar wsl --unregister Ubuntu wsl --import Ubuntu D:\wsl\Ubuntu D:\wsl\ubuntu-backup.tar

--unregister会把现有的发行版整个删除,但不会删除刚导出的 tar 文件,所以不用担心数据丢。这一步做完之后 WSL 会以 root 用户进入,而且默认用户会丢失,需要自己设置回来。编辑 WSL 里的/etc/wsl.conf,加入:

[user] default=你的用户名

保存后在 PowerShell 里执行wsl --shutdown再重新进入,就能恢复到原来的用户。迁移之后,所有 Linux 内部的文件都存在于D:\wsl\Ubuntu目录下的虚拟磁盘里,C 盘压力瞬间消失。

2.3 用 .wslconfig 限制内存与 CPU 占用

WSL 2 是一个虚拟机,默认会占用宿主机很大一部分内存,有时候它会把 Windows 卡到怀疑人生。在C:\Users\你的用户名\.wslconfig里写一段配置,可以给虚拟机套上缰绳:

[wsl2] memory=8GB processors=4 swap=2GB

memory 限制 WSL 最大可用内存,processors 限制 CPU 核数,swap 是内存不够时的交换空间大小。保存之后wsl --shutdown再启动即可生效。如果你的电脑是 16G 内存,建议给 WSL 分 8G 左右,留 8G 给 Windows 本身,否则浏览器加开发工具再加大模型推理,整机直接卡死。这个配置我建议在装 Ollama 之前就写好,不然模型推理时突然 OOM,你都不知道是模型太大还是 WSL 内存配额不够。

3. Ollama 安装:三种姿势,总有一种能救你

3.1 官方脚本一键安装

等 WSL 环境就绪,进入 Ubuntu 终端,官方推荐安装方式是执行:

curl -fsSL https://ollama.com/install.sh | sh

这个脚本会自动下载对应架构的 Ollama 压缩包,解压到/usr/local,创建ollama用户,配置 systemd 服务,全程无脑。装完验证一下:

ollama --version

能输出版本号说明安装成功。如果执行脚本时卡在下载阶段,别急,这是典型的网络问题,看下一节。装好之后 Ollama 服务默认会启动,如果你没开 systemd,需要手动跑一遍ollama serve,这个细节后面第四部分会详细说。

3.2 下载慢的破解方式:镜像加速

Ollama 的安装脚本默认从官方源下载压缩包,在国内网络环境下经常慢到令人窒息,甚至直接超时失败。我的处理思路是不依赖官方脚本,而是直接把 Ollama 的 Linux 压缩包换成一个能快速访问的下载源。国内很多开源镜像站和云厂商的镜像仓库都有 Ollama 的二进制包,比官方源快好几个数量级。

大致流程是先用浏览器或下载工具从可用的镜像源把ollama-linux-amd64.tgz这个压缩包拉下来,然后上传到 WSL 里,比如放在~/目录。接着执行:

sudo tar -C /usr -xzf ~/ollama-linux-amd64.tgz

这条命令会把二进制文件释放到/usr/local/bin等位置,跟官方脚本安装出来的效果完全一样。之后手动创建 systemd 服务,或者直接跑ollama serve后台挂着。我用这个方案安装的时候,下载速度从几十 KB/s 直接跳到满速,整个过程不到一分钟。实际上 Ollama 的官方安装脚本做的事也就是解压这个 tgz 包,我们可以手动复现,还能顺便绕开慢速网络,很值得一试。

3.3 离线安装包方案,适用于完全下不动的情况

还有一种更极端的情况,镜像源也连不上,或者机器本身没有外网访问条件。这时候你需要一台能上网的电脑,提前把 Ollama 安装包下载好,再用 U 盘或其他方式拷贝进 WSL。

离线安装包里除了 ollama 二进制文件,通常还需要一些依赖库,比如libcurl4、zlib1g等。如果有 apt 缓存或离线 deb 包仓库,那最好;如果没有,建议在相同的 Ubuntu 版本上先把依赖装齐,再把整个安装环境打包。一个比较省事的办法是,在有网的 Ubuntu 机器上执行apt download把需要的 deb 包都拉下来,一起拷贝过去,然后dpkg -i *.deb安装。Ollama 本身对依赖的要求不高,核心就那几个库,缺什么补什么。这条路线适合内网部署、离线办公场景,或者网络环境极其恶劣的情况。

3.4 安装后的三个必做检查

装完 Ollama 别急着拉模型,先做三件事。第一,确认服务在跑,执行:

curl http://localhost:11434/api/version

能返回 JSON 字符串就说明服务正常。第二,确认环境变量,看看模型存放目录:

echo $OLLAMA_MODELS

为空就默认在~/.ollama/models。第三,把模型目录改到一个不容易撑爆磁盘的地方,比如 D 盘的某个 Linux 原生路径下。这里有个关键的坑:如果你把 OLLAMA_MODELS 设置到/mnt/d/这种 Windows 挂载目录下,llama-server 在加载模型时可能因为文件系统权限或 mmap 机制问题直接崩溃,报各种奇怪错误。建议把模型放在 WSL 自己的虚拟盘里,比如/home/你的用户名/models,然后用软链接或者环境变量指过去,这样既能控制空间,又不会出兼容性问题。

4. GPU 加速:让 WSL 里的 NVIDIA 显卡真正干活

4.1 WSL 中安装 CUDA 的完整流程

Ollama 跑模型默认优先调用 GPU,没有 GPU 才回退 CPU。而要在 WSL 里使用 GPU,需要满足两个条件:Windows 侧安装 NVIDIA 驱动,WSL 侧安装 CUDA Toolkit。很多人在这里有个误解,以为 WSL 里要单独装 NVIDIA 驱动,其实不用。WSL 2 的 GPU 直通机制是 Windows 驱动直接把显存和计算能力透传给 Linux,所以只要 Windows 侧装了最新的 NVIDIA 驱动,WSL 里就能识别到显卡。

在 WSL 里安装 CUDA Toolkit 分两步。第一步加 NVIDIA 官方源的仓库:

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb sudo dpkg -i cuda-keyring_1.1-1_all.deb sudo apt-get update

第二步安装 Toolkit:

sudo apt-get install -y cuda-toolkit-12-6

安装过程比较长,几百 MB 起步,需要耐心等待。装完验证:

nvidia-smi nvcc --version

nvidia-smi能看到显卡型号和驱动版本,nvcc能看到 CUDA 编译器版本。这两条命令都能跑通,说明 GPU 环境已经就绪。这个环境不光给 Ollama 用,后续你在 WSL 里搭 PyTorch 环境,执行pip install torch之后也能直接调用显卡,一条链路全部打通。

4.2 确认 Ollama 真的用上了 GPU

很多人装完 CUDA 之后,发现 Ollama 跑模型还是没有 GPU 加速,模型加载慢、推理慢,整一个 CPU 硬扛的状态。排查方法很简单,让模型跑起来之后,开另一个终端窗口执行:

nvidia-smi

看进程列表里有没有 ollama 或 llama-server 进程占用显存。没有的话,多半是 Ollama 没找到 GPU 运行时。检查一下:

sudo ldconfig -p | grep cuda

确认 CUDA 动态库被系统正确识别。有时候装完 CUDA Toolkit 不会自动刷新动态库缓存,手动执行sudo ldconfig就能解决。还有一个常见原因:你用的 Ollama 版本太老,对最新版 CUDA 的支持不完善,直接curl -fsSL https://ollama.com/install.sh | sh重装一遍通常能解决。

4.3 没有独显的兜底方案

如果你的机器是核显或者 AMD 显卡在 WSL 下没配好,也不是不能玩。Ollama 会自动回退到 CPU 推理,只是速度慢很多。可以选小参数量模型,比如 2B、4B 级别的量化模型,CPU 跑起来还算流畅。在ollama run时也可以通过设置环境变量强制 CPU:

OLLAMA_NUM_PARALLEL=1 ollama run qwen3:4b

或者直接在运行前把 CUDA 可见设备屏蔽掉:

CUDA_VISIBLE_DEVICES=-1 ollama run qwen3:4b

CPU 推理的内存需求比 GPU 更夸张,加载模型时要把整个权重读进内存,所以 8G 内存跑 7B 以上模型会很吃力,建议小模型起步。先跑通,再考虑硬件升级。

5. 模型下载与本地部署:核心环节实操

5.1 解决模型下载慢的三个实用技巧

Ollama 拉取模型默认走官方模型平台,在国内网络下经常出现下载龟速甚至中断。热词里反复出现“ollama 下载模型”下载慢,这个问题我用下面几个方法解决过。

第一个技巧是挂机等待加断点续传。ollama pull qwen3:4b如果中断,重新执行一次同一命令,Ollama 的下载机制本身支持断点续传,多试几次总能拉完。但体验太差,不推荐大模型这么干。

第二个技巧是直接从 Hugging Face 镜像站下载 GGUF 格式模型,然后导入 Ollama。这是我认为最干净利落的方式。首先用现成的下载工具把模型文件拉下来,比如:

pip install -U huggingface_hub export HF_ENDPOINT=https://hf-mirror.com huggingface-cli download Qwen/Qwen2.5-1.5B-Instruct-GGUF qwen2.5-1.5b-instruct-q4_k_m.gguf --local-dir /home/你的用户名/models/qwen

这条命令会把模型下载到指定目录,HF 镜像站的速度比官方模型平台快非常多。拿到 GGUF 文件后,创建一个 Modelfile 文本文件,内容只有一行:

FROM /home/你的用户名/models/qwen/qwen2.5-1.5b-instruct-q4_k_m.gguf

然后执行:

ollama create qwen2.5-1.5b -f Modelfile

这会在 Ollama 里注册一个叫qwen2.5-1.5b的新模型,之后就能直接用ollama run qwen2.5-1.5b跑起来。这个方法绕开了 Ollama 官方平台的下载瓶颈,而且可选模型范围比官方库更大,强烈推荐。

第三个技巧是检查磁盘空间。模型下载慢的另一个隐性原因是磁盘满了,下载一个 4G 的模型需要至少 8G 空闲空间用来存储分片和临时文件。提前df -h看一眼,别等拉到 99% 突然报错才慌张。

5.2 实操示例:跑起 Qwen 小模型并验证回复

环境装好、模型就位之后,最让人兴奋的就是第一次对话。用刚才导入的模型试一下:

ollama run qwen2.5-1.5b

进入交互模式后输入“你好”,模型会开始流式返回结果。这个过程能看到 token 一个接一个蹦出来,体验很直观。如果想通过 API 方式调用,另开一个终端:

curl http://localhost:11434/api/generate -d '{"model": "qwen2.5-1.5b", "prompt": "介绍一下你自己", "stream": false}'

返回的 JSON 里有response字段就是模型生成的文本。事实上 Ollama 默认监听0.0.0.0:11434,所以不只是本机,局域网内其他机器也能访问这个接口,用路由器 IP 加端口即可。注意这是把能力暴露到局域网,有安全风险,后续如果不需要,可以通过环境变量OLLAMA_HOST=127.0.0.1限制绑定到本机。

5.3 模型管理命令速查

玩本地模型免不了反复拉模型、删模型,常用命令整理一下:

命令作用
ollama list列出本地已有模型
ollama pull <模型名>拉取模型
ollama run <模型名>交互式运行模型
ollama create <模型名> -f Modelfile从 GGUF 或已有模型创建新模型
ollama rm <模型名>删除模型释放空间
ollama show <模型名>查看模型信息,如参数、量化方式
ollama cp <模型名> <新名称>复制模型,可用于后续定制

我个人的习惯是定期ollama list看看有哪些模型占用磁盘,不用的直接ollama rm。本地部署大模型最不缺的就是“这个模型好像有用先留着”,结果磁盘爆炸之后才开始清理,就很被动。

6. 高频报错排查实录,踩坑经验全记录

6.1 WSL 安装阶段的典型报错

很多人在安装 WSL 本身时就遇到了错误代码wsl/installdistro/service/registerdistro/createvm/hcs/error_file_n。这个错误的信息量很大,拆开看就是 HCS(Host Compute System)创建虚拟机失败,常见原因有四种。第一,BIOS 里虚拟化没开启,到主板设置里找 Intel VT-x 或 AMD SVM 开关,打开后重启。第二,Windows 的虚拟机平台功能没启用,在管理员 PowerShell 里执行:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重启后继续。第三,第三方安全软件拦截了 Hyper-V 组件的运行,临时退出再试。第四,Windows 版本过旧,WSL 的 HCS 服务对系统版本有要求,更新到最新版本再装。

排查这类问题有个通用思路:先wsl --status看 WSL 整体状态,再wsl --update --web-install强制更新内核,最后把发行版删了重导入。我遇到过一次怎么都修不好的情况,最后的解决方案是wsl --shutdown之后,重启电脑再wsl --update,问题就消失了,很玄学但确实有效。

6.2 ollama run 报 500 错误和 llama-server process 崩溃怎么办

这是热词里出现频率非常高的问题:ollama run qwen3.5:2b error: 500 internal server error: llama-server process。第一次看到这个报错我整个人都懵了,模型明明拉取成功,一运行就挂。把排查思路整理成一条链路,由浅入深排查。

第一步查内存。free -h看可用内存,如果系统总内存只有 8G,WSL 又分了 4G,跑大模型时内存耗尽,llama-server 直接被系统杀掉,就会报 500。解决方式是关掉一些 Windows 占内存的软件,或者调大 .wslconfig 里的 memory 配额。

第二步查闪存。nvidia-smi看显存占用,如果你的显卡显存只有 4G 却非要跑 7B 模型,Ollama 会把模型拆成多个 chunk 加载到显存和内存混合推理,一旦显存不够,进程就会崩。

第三步查模型文件完整性。有时候下载断断续续,模型文件损坏,运行时报错。ollama rm删掉再重新 pull,问题概率消失。

第四步查日志。这是最有效的排查手段:

journalctl -u ollama -f

或者看 Ollama 的日志目录~/.ollama/logs里的 server.log。日志里会明确告诉你 llama-server 崩溃前最后做了什么,比如加载到第几层、在初始化 CUDA 的哪个环节失败。我看到过最典型的日志是CUDA error: out of memory,那就是显存不足,换小模型或者量化级别更低的模型就能解决。

第五步查模型目录文件系统。前面提过,如果 OLLAMA_MODELS 放在/mnt/d这类 Windows 挂载盘,llama-server 在读取模型时可能无法正确执行 mmap 内存映射,直接段错误崩溃。我踩过这个坑,最后把模型目录挪回 Linux 原生路径,500 错误彻底消失。

6.3 VS Code 与 AnythingLLM 的联动配置

本地模型跑通之后,光在终端里对话太不过瘾,把它接入日常开发环境才是正事。VS Code 里装一个 “Remote - WSL” 扩展,然后在 Windows 的 VS Code 里按Ctrl+Shift+P,输入 “WSL: Connect to WSL”,就能直接打开 WSL 里的项目文件夹。此时终端就是 Ubuntu 终端,Python 环境、Ollama 命令随手可跑,体验跟原生 Linux 开发完全一致。

AnythingLLM 是另一个很值得推荐的搭配。它是本地知识库工具,可以在设置里把 LLM 提供方选成 “Ollama”,填入 Ollama 的 API 地址http://localhost:11434,再选择一个本地模型,比如qwen2.5-1.5b。之后你就可以把自己的文档扔进 AnythingLLM,让本地模型基于文档内容回答问题,数据全程不出电脑,隐私性拉满。这个组合非常适合处理敏感资料的个人知识库场景。

6.4 环境变量与性能调优的要点

Ollama 的行为很多都可以通过环境变量控制,关键的有这几个。OLLAMA_MODELS指定模型存放目录,OLLAMA_HOST指定监听地址,OLLAMA_NUM_PARALLEL指定同时处理的请求数,OLLAMA_KEEP_ALIVE控制模型在内存中驻留的时间。我常用的配置是在~/.bashrc里加一段:

export OLLAMA_HOST=127.0.0.1 export OLLAMA_NUM_PARALLEL=1 export OLLAMA_KEEP_ALIVE=5m

OLLAMA_KEEP_ALIVE设为 5 分钟,可以让模型在第一次加载后保留在内存里,短时间内再次请求就不再重新加载,响应速度快很多。但注意它也会一直占着内存,如果电脑内存小,这个值设小一点或者设为 0。性能调优这件事没有银弹,核心原则就是:模型大小和量化级别必须匹配硬件,宁可用 4-bit 量化的小模型流畅跑,也不要硬上大模型卡成 PPT。

我在实际操作中还有一个体会:WSL 里配置 Ollama,本质上是在 Windows 上搭一个接近生产环境的 Linux 推理服务。所以思路要放开,不只是跑个对话模型,还可以把它接入 Python 脚本、Docker 容器、自动化测试流程。最后再分享一个小技巧,如果你经常切换模型做对比测试,写一个简单的 shell 脚本,循环调用ollama run对同一批问题做测试,把输出结果重定向到文件里,对比起来非常方便。这套环境调顺了,后续不管是玩模型微调、跑 RAG 知识库,还是做 AI 应用开发,都有一个稳定的本地底座可以用。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询