Skip to content

1.10 在本地跑模型(Ollama)

云端 API 很方便,但有时候你会想在自己的电脑上跑模型:数据不出本地、零调用成本、断网也能用、随便折腾不心疼。这一节讲怎么用 Ollama 在本地跑模型,以及什么时候值得这么做。

本地 vs 云端:怎么选

维度本地(Ollama)云端 API
成本一次性硬件,调用免费按 Token 付费
隐私数据不出本机数据发给厂商
能力受你显存限制,通常是中小模型可用最强的大模型
速度取决于你的硬件通常更快、更稳
联网离线可用必须联网

💡 一句话判断敏感数据 / 想免费折腾 / 离线 → 本地;要最强能力 / 高并发 / 省心 → 云端。很多人是开发调试用本地,生产上线用云端(靠 OpenAI 兼容协议 无缝切换)。


装好 Ollama,几条命令就能跑

bash
# 1. 安装后,拉一个模型(首次会下载,几个 GB)
ollama pull qwen2.5:14b

# 2. 直接命令行对话,验证能跑
ollama run qwen2.5:14b "用一句话解释什么是闭包"

# 3. 它会在后台开一个 OpenAI 兼容服务(默认 11434 端口)
#    确认服务在跑:
ollama serve        # 多数情况安装后会自动常驻

跑起来后,就能用 OpenAI SDK 连它(注意 baseURL/v1):

javascript
import OpenAI from "openai"

const client = new OpenAI({
  baseURL: "http://localhost:11434/v1",
  apiKey: "ollama"   // 本地不校验,占位即可
})

const res = await client.chat.completions.create({
  model: "qwen2.5:14b",
  messages: [{ role: "user", content: "你好" }]
})
console.log(res.choices[0].message.content)

量化:为什么 14B 模型能塞进你的电脑

一个 14B(140 亿参数)的模型,如果每个参数用 16 位存,光权重就要 ~28GB 显存——普通电脑根本放不下。量化(Quantization) 就是用更少的比特存每个参数,把模型"压小"。

原始(FP16,16位)   14B 模型 ≈ 28 GB
Q8(8位量化)        ≈ 15 GB    几乎无损
Q4(4位量化)        ≈ 8 GB     轻微质量损失,最常用

Ollama 默认拉的就是量化版(通常 Q4),所以一个 14B 模型大概 8-9GB,消费级显卡甚至较新的 Mac 都跑得动。

⚠️ 量化是用"一点点质量"换"能跑起来 + 更快"。日常任务 Q4 体感几乎没差别;对精度极敏感的任务,可以拉 Q8 版本(ollama pull qwen2.5:14b-instruct-q8_0 这类标签)。

显存粗略估算:能跑的模型大小 ≈ 你的显存(GB)。8GB 显存跑 7B-8B,16GB 跑 14B,24GB 能跑到 32B 量化版。Mac 用统一内存,把内存当显存估。


选哪个本地模型

模型大小适合
qwen2.5:7b / qwen2.5:14b中小中文综合任务、支持工具调用
gemma2(如 gemma2:9b轻量问答、改写;工具调用支持有限
llama3.1:8b英文任务
deepseek-r1(蒸馏版)本地体验推理模型
nomic-embed-text极小做 Embedding(RAG 用,见 2.1 节

💡 你提到本地有 qwen2.5:14bgemma——做需要工具调用的练习(如 1.4 Tool Use)优先用 qwen,它对 function calling 支持更好;gemma 在这方面不一定可靠。


本地模型的现实预期

⚠️ 别期望本地中小模型能和云端旗舰(DeepSeek-V4、GPT、Claude)一个水平:

  • 复杂推理、长上下文、严谨代码:明显弱于云端大模型
  • 简单问答、改写、分类、本地 RAG、跑通流程做实验:完全够用
  • 速度取决于你的硬件,老机器上可能慢到影响体验

最佳实践:本地模型用来学习、调试、处理敏感数据、跑实验;真正要质量和并发的生产场景,用云端 API。两者代码靠 OpenAI 兼容协议共享,切换只改配置。


🛠️ 实战练习:本地 vs 云端同题对比

1.9 节 的多厂商配置,让同一个问题分别走本地 Ollama 和云端 DeepSeek:

javascript
const question = "写一个 JS 函数,判断一个字符串是不是合法的 IPv4 地址,并加注释。"

// 分别用 PROVIDERS.ollama 和 PROVIDERS.deepseek 跑同一个 question
// 对比:响应速度、代码质量、是否能直接用

观察要点:

  • 本地模型的速度和质量,和云端差多少?
  • 这个任务的难度,本地模型够用吗?
  • 换一个简单任务(如翻译一句话),差距是不是就不明显了?

进阶挑战:把 2.1 节的 RAG 例子 完全改成本地运行(对话用 qwen2.5:14b,Embedding 用 nomic-embed-text),实现一个完全离线、零成本的知识库问答。


📌 关键结论

  1. 本地跑模型靠 Ollama:几条命令搞定,对外提供 OpenAI 兼容服务(11434 端口)
  2. 量化用更少比特存参数,让大模型能塞进消费级硬件;Q4 最常用,体感损失很小
  3. 能跑多大模型主要看显存:粗估"模型大小(GB) ≈ 显存(GB)"
  4. 本地模型适合学习、调试、敏感数据、离线、实验;要质量和并发用云端
  5. 本地与云端代码靠 OpenAI 兼容协议共享,切换只改配置

第 1 章完成。下一步:第 2 章 · 构建 AI 产品

写给自己的 AI 学习地图