
Ollama
用 Ollama 在本机下载、运行并定制大语言模型
从安装 Ollama、拉取并运行第一个模型,到掌握日常命令、用 Modelfile 定制专属助手,再到通过本地 API 在 Python 中调用模型,一步步搭建可离线运行的本机大模型环境。
Ollama 是一个开源的模型运行时,负责在本机下载、管理并对外提供大语言模型服务。它把模型权重、量化设置和推理参数打包成一个可以直接拉取运行的单元,并自动处理 GPU 加速与本地服务,使用方式接近容器工具:拉取、运行、列出、删除。对使用者的直接好处是:没有按 token 计费、没有调用次数上限、提示词不离开本机,模型下载完成后即使完全断网也能继续使用。它适合希望在自己的电脑上跑模型、做原型验证、处理敏感文本,或者想用本地接口驱动脚本与应用的开发者。Ollama 的定位是命令行加本地 REST API,不需要机器学习背景,只要能打开终端、复制命令,就能完成下面这条完整路径。
本文按顺序覆盖五件事:安装并验证运行时、运行第一个模型并对话、掌握日常真正会用到的命令、用 Modelfile 定制一个专属助手、通过本地 API 在 Python 中调用模型。每一步都建立在上一步之上,建议按顺序操作。
准备工作
开始之前,先确认下面几项条件。这些条件决定了你能跑多大的模型、跑得多快。
- 操作系统:macOS、Linux、Windows 均可。macOS 可以用 Homebrew 安装,Linux 用官方安装脚本,Windows 用安装包或 winget。
- 内存:模型必须能装进内存(若要全速运行则需装进显存),并给系统留出几 GB 余量。8 GB 内存适合 3B 级别的小模型,16 GB 可以上 8B 到 12B,32 GB 可以尝试 20B 级别,64 GB 以上才考虑 30B 级别。
- GPU:NVIDIA(CUDA)、AMD(ROCm)和 Apple Silicon(Metal)都开箱即用,Ollama 会自动识别硬件,并按可用显存尽量把更多层卸载到 GPU。
- 磁盘:每个模型通常有几个 GB,下载前留意剩余空间。
- 终端:安装完成后需要重新打开终端,否则可能读不到新加入 PATH 的命令。
不需要提前注册账号,也不需要 API 密钥——所有推理都在本机完成。若打算用容器方式部署,需要预先装好 Docker。
操作步骤
第一步:安装 Ollama 并验证
按平台选择一种安装方式。每种方式都会同时安装运行时和一个常驻后台服务,macOS 上表现为托盘应用,Linux 上表现为 systemd 单元。
# macOS
brew install ollama
# Linux
curl -fsSL https://ollama.com/install.sh | sh
# Windows
winget install Ollama.Ollama
# 验证安装
ollama --version
Linux 上可以用 systemctl 管理后台服务:
sudo systemctl start ollama
sudo systemctl stop ollama
sudo systemctl restart ollama
如果偏好容器,可以拉取官方镜像,暴露 11434 端口,并挂载一个命名卷让模型持久保存——这是服务器和隔离环境的常见做法。
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
安装完成后务必执行一次 ollama --version。如果提示找不到命令,先关闭并重新打开终端;Windows 上安装后建议重启一次。
第二步:运行第一个模型
最核心的命令是 ollama run。第一次执行时会自动下载模型,下载完成后直接进入交互式对话,你输入的提示词和模型返回的内容全部在本机生成。
# 拉取并进入对话
ollama run llama3.2
# 只发一条提示词,输出后退出
ollama run llama3.2 "用简单的话解释递归"
# 在对话中退出
/bye
在对话界面里直接输入内容并回车即可,输入 /bye 退出。写脚本时用带引号的一次性提示词形式更方便,它只打印一条回答然后退出。
除了内置模型库,还可以导入任意 GGUF 模型:下载模型文件后,在 Modelfile 里用 FROM 指向该文件,再用 ollama create 构建即可,这样就能接入更广泛的开放模型生态。
第三步:按内存选择首个模型
新手最常问的问题是先拉哪个模型。原则很简单:模型要能装进内存,并给系统留出余量。下面按内存档位给出起步选择,具体可用标签与体积请以模型库当前信息为准。
| 内存 | 适合起步的模型 | 命令 |
|---|---|---|
| 8 GB | Llama 3.2 3B、Gemma 4 E2B、Phi-4 mini | ollama run llama3.2 |
| 16 GB | Gemma 4 12B、Qwen3 8B | ollama run gemma4:12b |
| 32 GB | gpt-oss 20B、Gemma 4 26B | ollama run gpt-oss:20b |
| 64 GB 以上 | Gemma 4 31B、Qwen3 30B | ollama run gemma4:31b |
如果模型跑起来很慢,在它加载的状态下执行 ollama ps。输出里的 PROCESSOR 列会显示模型跑在 GPU 上还是溢出到了 CPU;只要 GPU 占比不到 100%,换更小的模型或更小的量化版本就会明显变快。
第四步:掌握日常命令
Ollama 是命令行工具,但日常操作基本被一小批动词覆盖。
| 命令 | 作用 |
|---|---|
ollama pull <model> | 只下载模型,不运行 |
ollama run <model> | 交互式运行模型,缺失时自动拉取 |
ollama list | 列出已下载的模型 |
ollama ps | 查看正在运行的模型及其加载位置 |
ollama stop <model> | 停止运行中的模型并释放内存 |
ollama rm <model> | 删除模型,回收磁盘空间 |
ollama show <model> | 打印模型的参数与模板 |
ollama cp <model> <new> | 复制或重命名模型 |
这八条命令覆盖了绝大多数实际使用场景。run 还有几个常用参数:--verbose 输出每秒 token 数等统计信息,--num-ctx 4096 设置上下文窗口长度,结构化 JSON 输出则方便程序化调用。
底层服务由 ollama serve 启动,通常后台服务已经代劳;需要观察日志时可以手动在前台启动它。
第五步:用 Modelfile 定制专属助手
Modelfile 是一个简短的文本文件,用来定义自定义模型变体,作用类似 Dockerfile。用 FROM 指定基础模型,用 PARAMETER 调整行为(例如 temperature 控制创造性、num_ctx 控制上下文长度),再用 SYSTEM 设定一个持续生效的系统提示词,塑造模型在每轮对话中的角色。
# Modelfile
FROM qwen3:8b
PARAMETER temperature 0.2
PARAMETER num_ctx 8192
SYSTEM "你是一名资深 Python 开发者,编写干净、带类型标注、有测试的代码。"
构建并运行:
ollama create python-coder -f Modelfile
ollama run python-coder
这样就得到一个可复用的专用助手,之后像普通模型一样运行它即可。在 Apple Silicon 上,加入 PARAMETER num_gpu 40 往往能明显提升推理速度。用这种方式,可以把通用模型改造成导师、代码审查员、写作助手等固定角色,而不需要改动底层权重。
第六步:通过本地 API 调用模型
终端对话只是起点,真正的能力在 API。Ollama 在 11434 端口提供本地 HTTP REST 接口,包含生成、对话、嵌入和流式输出等端点,可以把本地模型接入脚本、Web 应用、机器人和自动化流程。
该接口兼容 OpenAI 的调用格式,因此把现有 SDK 代码的 base URL 指向本地地址、去掉密钥,通常就能直接工作。Python 官方 SDK 只需几行即可发送一条对话消息并读取回复;用普通 HTTP 请求访问 /api/generate 则适用于任何语言,返回 JSON。
# 安装 Python SDK
pip install ollama
import ollama
response = ollama.chat(
model="llama3.2",
messages=[
{"role": "user", "content": "用三句话说明什么是量化。"}
],
)
print(response["message"]["content"])
用纯 HTTP 请求调用生成端点:
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"prompt": "用简单的话解释递归",
"stream": false
}'
/api/chat 端点会保留消息历史,适合多轮对话;嵌入端点则生成向量,可用于搜索和检索增强生成。如果推理感觉慢,同样先执行 ollama ps,确认模型跑在 GPU 上而不是回落到 CPU。
一个完整示例
下面把前面的步骤串成一个最小可跑通的流程:安装、拉取模型、定制一个专用助手、再用 Python 调用它。
# 1. 验证安装
ollama --version
# 2. 拉取基础模型(不立即进入对话)
ollama pull qwen3:8b
# 3. 确认已下载
ollama list
# 4. 编写 Modelfile
cat > Modelfile <<'EOF'
FROM qwen3:8b
PARAMETER temperature 0.2
PARAMETER num_ctx 8192
SYSTEM "你是一名资深 Python 开发者,编写干净、带类型标注、有测试的代码。"
EOF
# 5. 构建自定义模型
ollama create python-coder -f Modelfile
# 6. 运行并测试
ollama run python-coder "写一个带类型标注的函数,判断字符串是否为回文"
# 7. 查看运行状态与加载位置
ollama ps
接着在 Python 中调用同一个自定义模型:
import ollama
response = ollama.chat(
model="python-coder",
messages=[
{"role": "user", "content": "给上面的回文函数补一个 pytest 测试。"}
],
)
print(response["message"]["content"])
如果这一步能正常输出,说明运行时、模型、自定义配置和 API 四条链路都已打通。之后要换模型,只需改 Modelfile 里的 FROM 并重新 ollama create;要清理空间,用 ollama rm 删除不再使用的模型。
注意事项
常见报错与处理
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
ollama: command not found | 安装未把 Ollama 加入 PATH,或安装时终端一直开着 | 关闭并重新打开终端;Windows 上安装后重启 |
| 提示无法连接到 Ollama 应用 | 后台服务没有运行 | 打开 Ollama 应用,或在另一个终端执行 ollama serve |
| 11434 端口已被占用 | 已有另一份 Ollama 在运行 | 退出另一份实例,或设置 OLLAMA_HOST 换端口 |
| 回答非常慢 | 模型对显存来说太大,回落到 CPU | 用 ollama ps 确认,换更小的模型 |
| 内存不足或模型加载失败 | 内存或显存不够 | 选更小的尺寸标签,例如用 gemma4:e2b 代替 gemma4:12b |
| 磁盘被占满 | 每个模型都有数 GB | 用 ollama rm 删除不用的模型,或用 OLLAMA_MODELS 变量迁移存储位置 |
卸载与清理
macOS:退出应用,把它移到废纸篓,并删除 ~/.ollama 目录以清除已下载的模型。Windows:在「设置 > 应用」中卸载,并删除用户目录下的 .ollama 文件夹。Linux:停止并禁用 ollama 服务,删除 ollama 可执行文件和模型目录。
其他要点
- 模型标签、可用模型列表和体积会随时间变化,拉取前请以模型库当前信息为准。
- 模型能否全速运行取决于显存,而不只是内存;GPU 占比不到 100% 时,换小模型或小量化版本是最有效的提速手段。
- 自定义模型不会改动基础权重,删除自定义模型不影响基础模型,但两者各自占用磁盘空间。
- 本地 API 默认监听 11434 端口,若把服务暴露到网络,需要自行评估访问控制,不要默认认为它只对本机可见。