AB
AiBoss
Tutorials

Ollama

Tutorials

用 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 GBLlama 3.2 3B、Gemma 4 E2B、Phi-4 miniollama run llama3.2
16 GBGemma 4 12B、Qwen3 8Bollama run gemma4:12b
32 GBgpt-oss 20B、Gemma 4 26Bollama run gpt-oss:20b
64 GB 以上Gemma 4 31B、Qwen3 30Bollama 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 端口,若把服务暴露到网络,需要自行评估访问控制,不要默认认为它只对本机可见。