logo
06

本地跑 Hermes — Ollama + hermes3:70b

⏱️ 30分钟

本地跑 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 GBM2 Pro 16GB / RTX 3060 12GB
hermes3:70b~42 GBM3 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 只有两条路:

  1. 从 Hugging Face 下 GGUF 文件,自己写 Modelfile 导入(有点折腾)
  2. 拉社区上传的 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_ctx2048改到 8192 或 16384(Llama 3.1 能撑 128K)
num_gpu自动强制把多少层放 GPU。0 = 全 CPU(慢但稳)
OLLAMA_NUM_PARALLEL1并发请求数,服务场景改 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。

动手跑起来的话,这一章目标就达到了。


关键资源