Ollama 本地部署大模型
Ollama 本地部署大模型实录
本文的核心命题:在一台消费级 PC 上,从零搭建一个可用的本地大模型 API。
最终产物是一个兼容 OpenAI 协议的服务端点:
http://localhost:11434/v1,任何标准 HTTP 客户端均可直接调用。云厂商的 API 服务(DeepSeek、OpenAI、Anthropic 等)开箱即用,付费即可。但亲手走完整条链路——选框架、装软件、配镜像、挑模型、填坑、调通代码——每一层的原理和边界,只有亲手做过一遍才能真正掌握。
目标:在本地 PC 部署 Ollama 推理服务,运行量化大模型,对外暴露标准 OpenAI API(http://localhost:11434/v1)。
逻辑流程图
Use Case:谁在做什么
核心流程
镜像加速逻辑(核心难点)
坑点排查树
硬件约束
- CPU:仅 CPU 可用
- GPU:GTX 1050(2GB 显存,无法训练,推理理论上可用但实际没驱动成功)
- 内存:8GB(其他软件占一部分,实际可用于模型的约 2-3GB)
完整流程
第一步:安装 Ollama
下载:GitHub Releases 页面文件很多,选错就白下。正确选择:
| 系统 | 下载哪个 |
|---|---|
| Windows + NVIDIA 显卡 | OllamaSetup.exe(带安装向导) |
| Windows 便携版 | ollama-windows-amd64.zip |
| Linux | ollama-linux-amd64.tar.zst |
| ❌ 有 rocm | AMD 显卡专用,不是你的 |
| ❌ 有 mlx | Apple Silicon 专用,不是你的 |
| ❌ 有 arm64 | ARM 设备(树莓派、Surface Pro X),不是你的 |
| ❌ 有 jetpack | NVIDIA Jetson 开发板,不是你的 |
国内下载慢 → 用 CNB 镜像:
Invoke-WebRequest -Uri "https://cnb.cool/hex/ollama/-/releases/latest/download/OllamaSetup.exe" -OutFile "OllamaSetup.exe"; Start-Process "OllamaSetup.exe"
第二步:配置国内镜像源
ollama pull 从官方源下载模型极慢,必须配镜像。
创建/编辑 %USERPROFILE%\.ollama\config.json:
{
"registry": {
"mirrors": {
"registry.ollama.ai": "https://registry.ollama.ai"
}
}
}
国内可用镜像:
| 提供方 | 镜像地址 |
|---|---|
| 阿里云 | https://registry.ollama.ai |
| ModelScope 魔搭 | https://ollama.modelscope.cn |
| 浙江大学 | https://ollama.zju.edu.cn |
| DeepSeek 官方 | https://ollama.deepseek.com |
注意:https://registry.ollama.ai 看起来像官方域名,但确实是阿里云提供的国内镜像。
配好后重启 Ollama(系统托盘右键 → Quit → 重新打开)。
第三步:选择适合的模型
8GB 内存约束下,不能跑 7B 以上的模型。可选:
| 模型 | 参数量 | 内存占用 | 特点 |
|---|---|---|---|
qwen2.5:1.5b |
1.5B | ~2 GB | 综合首选,中文好 |
gemma3:1b |
1B | ~0.8 GB | 极低内存 |
tinyllama:1.1b |
1.1B | ~2 GB | 轻量通用 |
phi3:mini |
3.8B | ~2.2 GB | 推理最强但内存紧张 |
deepseek-r1:1.5b |
1.5B | ~2.6 GB | 中文强但超预算 |
第四步:拉取并运行模型
# 拉取模型(配置好镜像后直接 pull,约 986 MB)
$ ollama pull qwen2.5:1.5b
pulling manifest
pulling 183715c43589: 100% ▕██████████████████▏ 986 MB
pulling 66b9ea09bd5b: 100% ▕██████████████████▏ 68 B
pulling eb4402837c78: 100% ▕██████████████████▏ 1.5 KB
pulling 832dd9e00a68: 100% ▕██████████████████▏ 11 KB
pulling 377ac4d7aeef: 100% ▕██████████████████▏ 487 B
verifying sha256 digest
writing manifest
success
下载完成后确认:
$ ollama list
NAME ID SIZE MODIFIED
qwen2.5:1.5b 65ec06548149 986 MB 15 minutes ago
看到这一行说明模型已经在本地了。
# 运行模型
ollama run qwen2.5:1.5b
第五步:验证运行状态
注意:ollama run 进入交互模式在 MinGW / Git Bash 终端下可能卡死(光标不动、无输出),这是终端兼容性问题,不是模型或服务的问题。
两种验证方式:
# 方式一:确保在 CMD 或 PowerShell 中,直接进入交互
ollama run qwen2.5:1.5b
# 会看到 >>> 提示符,正常对话
# 方式二:非交互模式,直接输出回复(所有终端都可用)
ollama run qwen2.5:1.5b "Hi"
# 实际成功输出:
PS> ollama run qwen2.5:1.5b "Hi"
Hello! How can I help you today? If you have any questions or need assistance
with anything, feel free to ask.
PS> ollama run qwen2.5:1.5b "Hi你是谁"
你好!我是通义千问,由阿里云开发的AI助手。很高兴为您服务!
# 交互模式:
PS> ollama run qwen2.5:1.5b
>>> Send a message (/? for help)
确认服务正在运行:
ollama ps
正常输出:
NAME ID SIZE PROCESSOR UNTIL
qwen2.5:1.5b 65b74b2e... 2.0 GB 100% CPU 4 minutes from now
第六步:Python API 调用
from openai import OpenAI
client = OpenAI(
api_key="ollama", # 本地无需真实 key
base_url="http://localhost:11434/v1" # Ollama 兼容 OpenAI API
)
response = client.chat.completions.create(
model="qwen2.5:1.5b",
messages=[
{"role": "system", "content": "You are a helpful assistant"},
{"role": "user", "content": "你好,你是谁?交个朋友吧"}
],
stream=False
)
print(response.choices[0].message.content)
实际运行输出:
$ python run_model.py
你好。
$ python run_model.py
我是来自阿里云的大规模语言模型——通义千问。
$ python run_model.py
你好!我是一个AI助手,没有具体的名字。很高兴能和你聊天!
三次输出不完全相同是正常的,原因:小参数量模型的身份认知不稳定 + 默认 temperature 不为 0 的随机性。如需每次回复一致,设 temperature=0。
中间踩的坑
坑1:GPU 用不了(GTX 1050 0%,CPU 100%)
现象:任务管理器 GPU 占用 0%,CPU 满载 100%。
排查步骤:
nvidia-smi— 检查驱动是否正常- 查看 Ollama 日志:
Get-Content "$env:LOCALAPPDATA\Ollama\server.log" -Tail 50,看有没有Detected GPU - 检查环境变量
OLLAMA_NUM_GPU是否为 0(是则清除) - Windows 图形设置里把
ollama.exe设为"高性能"
结果:没解决,但 CPU 也能跑,接受了。
坑2:ollama ps 为空
原因:模型根本没下载到本地。
解决:先 ollama pull qwen2.5:1.5b。
坑3:--registry-mirror 参数报错 unknown flag
原因:Ollama 版本不支持这个参数。
解决:用配置文件方式(config.json),不要用命令行参数。配置文件所有版本都支持。
坑4:配置文件可能不生效
检查清单:
- 路径是否正确:
%USERPROFILE%\.ollama\config.json - 文件后缀是否是
.json而不是.json.txt(在文件夹选项里开启"显示文件扩展名") - 改完配置后是否重启了 Ollama(Quit 再打开)
坑5:ollama run 卡住 5 分钟没反应
现象:模型已下载,但 ollama run qwen2.5:1.5b 在 MinGW(Git Bash)终端里执行后卡死。
排查过程:
# 1. 尝试重启服务,发现端口已被占用 → 说明服务其实一直在运行
$ ollama serve
Error: listen tcp 127.0.0.1:11434: bind: Only one usage of each socket address...
# 2. 换到 CMD 或 PowerShell 用非交互模式测试
PS> ollama run qwen2.5:1.5b "Hi"
Hello! How can I help you today? # ← 正常返回,说明模型没问题
# 3. 交互模式也正常了
PS> ollama run qwen2.5:1.5b
>>> Send a message (/? for help)
根因:Ollama 是原生 Win32 程序,在 MinGW/Git Bash 的 Mintty 终端里交互模式会出现输入输出缓冲问题导致假死。服务本身一直在后台正常运行。
解决:使用 Windows 原生终端(CMD / PowerShell / Windows Terminal)运行 ollama run。Ollama 服务默认开机自启,不需要手动 ollama serve。
坑6:Python API 每次返回不同
现象:同一段代码跑三次,模型回复不一样——一次说"通义千问",一次说"AI助手"。
原因:小模型身份认知不稳定 + 默认 temperature 不为 0 的生成随机性。
解决:如需一致性,设 temperature=0 并在 system prompt 中明确指定身份。
终极方案:手工下载 GGUF 并导入
如果镜像配置怎么都搞不定,就跳过 ollama pull:
- 去 ModelScope 搜
Qwen2.5-1.5B-Instruct-GGUF,下载qwen2.5-1.5b-instruct-q4_k_m.gguf - 把
.gguf文件放到一个文件夹 - 同目录创建
Modelfile,内容:FROM ./qwen2.5-1.5b-instruct-q4_k_m.gguf - 执行:
ollama create qwen2.5:1.5b -f ./Modelfile - 之后
ollama run qwen2.5:1.5b即可
关键要点
- Ollama 的 API 端口:
11434,OpenAI 兼容端点为/v1 - 模型名称必须和 pull/run 时一致:
qwen2.5:1.5b不能简写 - 小模型不支持 thinking:
extra_body={"thinking": {"type": "enabled"}}对大模型(DeepSeek R1)有效,对小模型无效 - 微调需要 GPU:CPU 微调极其缓慢,只有 3 条数据才能几分钟跑完。真想微调用 Google Colab 免费 GPU
更多推荐




所有评论(0)