Ollama 实战:在家用 Mac 跑起 GPT 级模型
目录
为什么要本地跑
用 OpenAI API 每个月账单飞起。GPT-4o 跑多了肉疼,而且数据要经过第三方。
本地跑 LLM 的动机:
- 成本:0 推理成本,只有电费
- 隐私:数据不离开本机
- 离线:没网也能用
- 可控:模型、参数完全自己控制
但以前本地跑 LLM 的问题是:配置复杂,CUDA 驱动、NVIDIA 驱动、量化工具,每一步都可能踩坑。
Ollama 解决的就是这个问题。
安装
Mac:
brew install ollamaLinux:
curl -fsSL https://ollama.com/install.sh | shWindows:官网下载安装包。
装完直接跑:
ollama run llama3.2
# 或者更小的模型
ollama run mistral
ollama run phi330 秒启动,不需要任何配置。
怎么选模型
Ollama library 有几百个模型。新手建议从这些开始:
| 模型 | 参数量 | 最低内存 | 适合场景 |
|---|---|---|---|
| llama3.2 | 3B | 8GB | 日常对话、快速任务 |
| mistral | 7B | 16GB | 编程主力、通用任务 |
| llama3.1 | 8B | 16GB | 比 Mistral 略强 |
| codellama | 7B | 16GB | 编程专用 |
| phi3 | 3.8B | 8GB | 极轻量、CPU 可跑 |
Mac Studio M2 Max(我用的配置):
# 可以跑这些
ollama run llama3.1:70b # 需要 64GB+ 内存,我没试过
ollama run mistral # 流畅
ollama run codellama # 流畅,编程推荐
ollama run llama3.2 # 极其流畅编程实测:Codellama vs GPT-4
我测了 Codellama 7B 写代码的能力。任务:给一个 FastAPI 项目加完整的 CRUD endpoints。
Codellama 表现
ollama run codellama
# 输入:
# 为这个 FastAPI 项目写完整的 user CRUD:
# - GET /users/{id}
# - POST /users
# - PUT /users/{id}
# - DELETE /users/{id}
# 使用 SQLAlchemy,异步风格,包含 Pydantic modelsCodellama 7B 输出了完整的代码:
# 正确生成了:
# 1. Pydantic models (UserCreate, UserUpdate, UserResponse)
# 2. SQLAlchemy model
# 3. CRUD functions (get_user, create_user, etc.)
# 4. Router with all endpoints
@router.get("/{user_id}", response_model=UserResponse)
async def read_user(user_id: int, db: Session = Depends(get_db)):
user = get_user(db, user_id=user_id)
if user is None:
raise HTTPException(status_code=404, detail="User not found")
return user质量比 GPT-4 差一些,但可用。对于简单到中等复杂度的任务,Codellama 完全能完成。
什么时候用本地
本地模型不是万能的。判断标准:
适合用本地:
- 简单到中等复杂度任务
- 需要快速迭代(省 API 成本)
- 代码库是公开的、不涉及敏感信息
- 离线环境
不适合用本地:
- 复杂架构决策(本地模型推理能力有限)
- 需要最新知识(本地模型知识截止日期固定)
- 长文本处理(context 窗口限制)
API 调用:接入现有代码
Ollama 跑起来后,可以当 API server 用:
ollama serve然后用任何 OpenAI 兼容的 client 调用:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama" # 不需要真实 key
)
response = client.chat.completions.create(
model="llama3.2",
messages=[
{"role": "user", "content": "解释什么是 FastAPI dependency injection"}
]
)
print(response.choices[0].message.content)这意味着 LangChain、Dify、任何 OpenAI 兼容的应用,都能无缝切换到本地模型。
高级:自定义 Model File
Ollama 支持自定义模型配置:
# Modelfile
FROM mistral
PARAMETER temperature 0.7
PARAMETER top_p 0.9
SYSTEM """
你是一个专业的 Python 程序员。
只输出代码,不要解释。
代码必须符合 PEP8。
"""# 构建自定义模型
ollama create my-coder -f Modelfile
# 使用
ollama run my-coder量化:降低内存占用
7B 模型通常需要 14GB+ 内存(fp16)。量化到 4-bit 可以降到 4GB 左右:
Ollama 默认已经做了量化(q4_0, q4_1, q5_0, q5_1, q8_0 等)。
手动指定量化级别:
OLLAMA_NUM_PARALLEL=1 ollama run mistral:7b-q4实测:q4 量化后模型大小从 14GB 降到 4.1GB,性能损失大约 5-10%,对大多数任务影响不大。
总结
Ollama 是目前最简单本地跑 LLM 的方案:
- 安装:一条命令
- 运行:一条命令
- API:OpenAI 兼容
- 成本:$0
我的实际用法:
- Codellama 7B 做日常编程主力(大部分任务够用)
- GPT-4 做复杂架构决策和 code review
- 数据敏感的项目用本地
Mac Studio + Ollama 足够跑一个私人编程助手了。
项目地址:ollama.com