本地跑 Hermes — Ollama + hermes3:70b
本地跑 Hermes — Ollama + hermes3:70b
看文档看一整天不如自己跑一次。
这章目标很直接:30 分钟内,让你的 Mac 或 Linux 机器上能跑 Hermes。用 Ollama 装,命令行对话和 OpenAI 兼容 API 两种方式都打通。不讲虚的,每一步都是你实际要敲的命令。
先说结论:8B 版本 16GB 内存的 MacBook Pro 能跑,70B 要 M3 Max 64GB 起,405B 直接放弃本地,跳第 7 章用 OpenRouter。
1. 先搞清楚你的机器能跑多大
这是第一天最容易踩的坑:兴冲冲 ollama pull hermes3:70b,40GB 下载完,跑起来直接报 "out of memory"。
不同大小的 Hermes 对 VRAM(显存)的需求大致这样:
| 模型 | 所需 VRAM | 能跑什么机器 |
|---|---|---|
hermes3:3b | ~3 GB | 随便什么 M 系列 Mac / 8GB 机器 |
hermes3:8b | ~6 GB | M2 Pro 16GB / RTX 3060 12GB |
hermes3:70b | ~42 GB | M3 Max 64GB / 双 RTX 4090 |
hermes3:405b | ~230 GB | 别本地跑,用 OpenRouter |
VRAM (Video RAM) —— GPU 的专属内存。Mac 上是"统一内存"(CPU 和 GPU 共享), 所以你看到的是总内存。16GB 的 Mac 能分给 GPU 用的大约是 12GB。
Quantization(量化) —— 把模型权重从 16 位浮点压到 4 位整数,存储和显存占用都降一大半。 类比:照片从 RAW(原片)压成 JPEG。省空间,略损精度,日常用看不出来。 Ollama 默认拉的就是 Q4 量化版,上面表格里的 VRAM 数字都是 Q4 基准。
规则:选模型大小 × 0.6 = 你需要的 VRAM(Q4 量化后)。想跑 70B 至少 42GB 显存,4090 (24GB) 不够,要双卡或者 M3 Max。
2. 装 Ollama
Ollama 是本地跑 LLM 最简单的工具,没有之一。
macOS:
brew install ollama
brew services start ollama
或者直接从 ollama.com/download 下载 dmg 装。装完会在状态栏有个 llama 图标,后台一直跑。
Linux:
curl -fsSL https://ollama.com/install.sh | sh
systemctl status ollama # 装完自动起 systemd service
Windows:装官方 exe,装完后台运行。
装完验证一下:
ollama --version
# ollama version is 0.1.48(或更新)
curl http://localhost:11434/api/tags
# {"models":[]} —— 表示服务起来了,还没拉任何模型
如果 curl 报错 "connection refused",Ollama 没起——macOS 上 brew services restart ollama 或者直接 ollama serve 手动拉起来。
3. 拉 Hermes 权重
# 第一次建议先拉 8B 试水(约 5GB 下载)
ollama pull hermes3:8b
# 网络好 + 磁盘够的话,直接 70B(约 40GB 下载)
ollama pull hermes3:70b
# 查看已拉模型
ollama list
这里有个坑:到 2026 年 4 月为止,Ollama 官方仓库只有 hermes3 tag,没有 hermes4。
想跑 Hermes 4 只有两条路:
- 从 Hugging Face 下 GGUF 文件,自己写 Modelfile 导入(有点折腾)
- 拉社区上传的 Hermes 4 GGUF,比如
huihui_ai/hermes-4-14b:q4_k_m
社区 GGUF 质量参差,学习阶段可以用,生产环境建议等 Ollama 官方放出 hermes4 tag 再切。我们自己的产品现在(2026-04)还在用 Hermes 3 70B,等官方上 Hermes 4 就切。
4. 第一次对话:验证它真的能跑
ollama run hermes3:8b
回车进交互模式,随便问点什么:
>>> 给我一段 Python 代码,用 requests 调用一个 REST API 并重试 3 次
你应该看到它吐出一段代码。留意它写的是不是带 requests.Session + HTTPAdapter + Retry——这种"带工程细节"的代码是 Hermes 的风格,它训练数据里工程代码占比高,不像有些模型只给最简单的 requests.get()。
几个好用的 slash 命令:
/set system "你是一个 Rust 专家,只用 Rust 回答"
/show info # 看模型信息(上下文长度、参数量等)
/save myproject # 存当前对话
/bye # 退出
顺便说,这个 CLI 模式是调试用的,不是生产。生产要用下面的 API 调用方式。
5. 用 OpenAI 兼容 API 调(重点)
这是 Ollama 最香的地方:它 11434 端口原生兼容 OpenAI SDK。
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama" # 随便填,Ollama 不校验
)
response = client.chat.completions.create(
model="hermes3:8b",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Write a haiku about TypeScript."}
]
)
print(response.choices[0].message.content)
base_url="http://localhost:11434/v1" 是灵魂。你现有所有用 OpenAI SDK 写的代码,把 base_url 换一下就能切到 Hermes——不用改一行业务代码。
我们生产里就用这招做 fallback:主链路走 OpenRouter,挂了自动降级到本地 Hermes 70B,业务代码完全不知道。
6. 用 curl 直接调(调试时非常有用)
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "hermes3:8b",
"messages": [{"role": "user", "content": "What is Nous Research?"}],
"stream": false
}'
想要流式响应加 "stream": true,返回就是 SSE 格式,每 token 一个 event。
排查问题的时候 curl 比 SDK 直观——你能看到最原始的请求和响应,避免 SDK 的抽象干扰判断。
7. 三个最常改的参数
跑起来之后,有三个参数几乎每个项目都要调:
| 参数 | 默认 | 建议 |
|---|---|---|
num_ctx | 2048 | 改到 8192 或 16384(Llama 3.1 能撑 128K) |
num_gpu | 自动 | 强制把多少层放 GPU。0 = 全 CPU(慢但稳) |
OLLAMA_NUM_PARALLEL | 1 | 并发请求数,服务场景改 4 |
第一个是最容易踩的坑:num_ctx 默认才 2K,你以为它能读 128K 长文档——结果早就被截断了。
改法:
ollama run hermes3:8b --ctxsize 16384
或者用环境变量全局设:
OLLAMA_NUM_PARALLEL=4 OLLAMA_MAX_LOADED_MODELS=2 ollama serve
8. 我们踩过的坑
本地跑一年多,印象最深的几个坑:
坑 1:MacBook 跑 70B 黑屏
2025 年初第一次试 hermes3:70b 在 M2 Pro 16GB 上——明知道 VRAM 不够还想试试。结果 Ollama 试图用 swap 跑,系统直接卡死黑屏 10 分钟。强制重启才回来。别在内存明显不够的机器上硬上大模型。
坑 2:num_ctx 默认 2K 导致 RAG 失败
做 RAG demo 时发现召回明显不对,查了半天是 num_ctx 没改——喂进去 8K 上下文,前面 6K 被截掉了。Ollama 不会报错,只会默默截断。第一件事永远是 --ctxsize 设成你要的长度。
坑 3:中文输出"乱"
Hermes 的 Llama 3.1 基座对中文 tokenizer 不友好,一个中文字往往占 2-3 个 token。偶尔还会出现简繁混排。中文场景还是 Qwen 2.5 稳,别硬要 Hermes 做中文主力。
坑 4:<tool_call> 格式没出来
期待 Hermes 输出 tool call JSON,但它就是不照格式出。多半是 system prompt 没写对。Hermes 有固定的 tool use prompt template,第 8 章专门讲。
9. 我们的日常用法
公司 MacBook 装 Hermes 3 8B 当本地 offline 开发助手。对比 GPT-4o:
- 响应速度:8B 本地 ~40 tok/s(M2 Pro),GPT-4o 云端 ~80 tok/s——本地慢一倍,但没网络延迟,短 prompt 体感差不多
- 输出质量:日常代码生成看不出差距;复杂架构讨论明显 GPT-4o 更好
- 隐私:本地是真 100% 不联网,敏感合同 / 客户数据可以放心喂
学习 Hermes 这个阶段用 8B 完全够。真要上产品直接跳第 7 章用 OpenRouter,别折腾自托管——那是等你规模上来之后再考虑的事。
10. 下一步
第 7 章【云端 OpenRouter】讲本地跑不动怎么办——OpenRouter 免费版能让你试 405B,实际用 70B 每月 $5 就能跑不少量。
第 8 章【结构化输出】讲本地 Hermes 怎么稳定出 <tool_call> JSON,这是拿它搭 Agent 的基础。
第 9 章【搭 Agent】直接用本地 Hermes 当 LangGraph 的后端,搭一个能跑的 research agent。
动手跑起来的话,这一章目标就达到了。
关键资源:
- Ollama 模型库 Hermes 3 —— 所有 Hermes 3 tag 和 size
- Ollama GitHub —— 源码和 issue tracker(遇到问题先搜 issue)
- GGUF 模型格式 —— 想自己转 Hermes 4 GGUF 的话