LLM 是怎么预测下一个 token 的 把推理的链路拆开讲过:tokenizer 把文字切成 token,查 embedding 表变成向量,几十层注意力算出一个概率分布,按概率抽签选出下一个 token,算过的 KK、VV 存进 KV cache 供后面复用。
那篇讲的是模型内部发生了什么,这篇讲谁来执行这些计算。
干这个活的程序叫推理引擎:它读取模型文件、把权重加载进内存、切 token、跑完上面那一整套计算、维护 KV cache,最后把生成的 token 拼成文本返回。我们平时用 ChatGPT 或者调 DeepSeek 的 API,推理引擎跑在厂商的服务器上,隔着网络够不着。
推理引擎有很多种。vLLM、SGLang 主要部署在服务器上扛高并发;个人电脑这边绕不开开源项目 llama.cpp,是它先啃下了「让大模型在普通 CPU 和消费级显卡上跑起来」这块硬骨头,Ollama、LM Studio 这类工具都建立在它的成果之上,把安装、模型管理和界面包得更省事。
本文拿 Ollama 举例,因为它终端、桌面 App 和 HTTP 接口都有,能把本地跑模型的几种用法一次演示完;换成别的工具,挑模型和调用的思路是相通的。
下面我们把开源小模型qwen3:0.6b下载到自己电脑上,走完挑模型、下载、对话、调用、管理的整个流程,再看看本地 API 和云端 API 是什么关系,以及怎样把本地模型接入 Claude Code 这类 Agent 工具。
1. 表面问题
你忘记了两款模型下载到哪里,以及应该通过 EchoBird 还是 Ollama 使用。
2. 实际结构
你的电脑上有两个运行入口:
- EchoBird:直接读取
S:\Models里的 GGUF 文件。 - Ollama:把模型放进自己的内容寻址存储目录,位置在
C:\Users\Administrator\.ollama\models。
因此,模型名称、模型文件、运行引擎和客户端是四个不同概念。
3. 已确认的两款模型
| 模型 | 实际文件 | 大小 |
|---|---|---|
| Qwen3.6 35B A3B UD-IQ2_M | S:\Models\Qwen3.6-35B-A3B\Qwen3.6-35B-A3B-UD-IQ2_M.gguf | 约 11.5 GB |
| Qwen3.5 9B Q8_0 | S:\Models\Qwen3.5-9B-Q8_0\Qwen3.5-9B-Q8_0.gguf | 约 9.5 GB |
EchoBird 的配置文件也明确记录了:
S:\Models\Qwen3.6-35B-A3B S:\Models\Qwen3.5-9B-Q8_0你的硬件配置是 RTX 4060 Ti、16GB 显存。
另外,Ollama 里已经有四个可运行名称:
qwen3.5-9b-q8 qwen3.5-9b-q8-16k qwen3.5-9b-q8-128k qwen3.5-9b-q8-256k它们共享同一个 9.5GB 左右的模型层,主要区别是上下文配置,不是四个完整模型。S:\Models中的文件和 Ollama 内部文件大小相同,但 SHA-256 不同,因此应当把它们看成两份独立存储。
4. 选择方案
我建议你先用 EchoBird:
- 两款模型已经在那里登记好了;
- 可以直接看到模型路径;
- 可以切换 GPU、上下文、端口和
llama.cpp; - Qwen3.5 9B Q8_0 在当前 16GB 显存下更适合作为第一款测试模型。
Qwen3.6 的“35B”是总参数规模,A3B表示 MoE 激活规模;它不一定比 Qwen3.5 9B 在所有任务上都更好,而且IQ2_M属于更激进的低比特量化,运行速度和回答质量需要实际比较。
5. EchoBird 使用教程
- 打开 EchoBird。
- 左侧进入“本地大模型”。
- 右侧选择“本地”。
- 先点选
Qwen3.5 9B。 - 初始配置建议:
- 算力:
GPU 自动 - 上下文:先用
32K - 运行时:
llama.cpp
- 算力:
- 点击“启动”。
- 等待“标准输出”区域出现服务器就绪信息,再发送测试问题:
请用三句话解释什么是大语言模型,并分别举一个适合小模型和大模型的任务。EchoBird 当前默认端口是11434。我检查到这个端口现在已经被 Ollama 占用,所以两种处理方式选一种:
- 保留 Ollama:把 EchoBird 端口改成
11435; - 使用 EchoBird:先从 Ollama 托盘菜单退出 Ollama,再启动 EchoBird。
不要让两个服务同时监听同一个端口。
6. Ollama 命令行教程
Ollama 中已经有 Qwen3.5,可以直接运行:
ollama list ollama run qwen3.5-9b-q8进入交互界面后:
/set nothink可以关闭思考输出;退出可以输入:
/bye查看实际运行占用:
ollama ps不同上下文版本可以这样运行:
ollama run qwen3.5-9b-q8-16k ollama run qwen3.5-9b-q8-128k ollama run qwen3.5-9b-q8-256k文章里的:
ollama pull qwen3:0.6b与你当前电脑状态无关,因为你并没有下载这个模型。
7. Qwen3.6 暂时不要直接用 Ollama
Qwen3.6 目前只在 EchoBird 的S:\Models目录中登记,ollama list里没有它。最简单的方式是直接用 EchoBird。
如果以后一定要用 Ollama,需要通过Modelfile导入;导入会在C:\Users\Administrator\.ollama\models中再占用约 11.5GB 空间,所以目前没有必要重复导入。
8. 两个类比
同一领域里,EchoBird 像直接打开一个.gguf文件,Ollama 像先把模型导入自己的镜像仓库再运行。
生活里的类比是:
S:\Models:仓库里的原始货物;- EchoBird:直接从仓库取货;
- Ollama:把货物复制进自己的仓库;
ollama run:从 Ollama 仓库发货;ollama ps:查看当前哪件货正在运输、占用了多少资源。
管理本机模型
模型跑起来之后,还有几个命令用来查看本机模型的状态和占用。
查看已经下载的模型:
ollama list我实测得到的 Qwen3 记录:
NAME ID SIZE MODIFIED qwen3:0.6b 7df6b6e09427 522 MB 2 minutes ago查看模型的结构和能力:
ollama show qwen3:0.6b核心输出是:
Model architecture qwen3 parameters 751.63M context length 40960 embedding length 1024 quantization Q4_K_M Capabilities completion tools thinking Parameters repeat_penalty 1 stop "<|im_start|>" stop "<|im_end|>" temperature 0.6 top_k 20 top_p 0.95这里能看到模型的架构、量化类型(Q4_K_M)和上下文容量(40960),Capabilities则说明它除了生成文本,还支持工具调用和思考模式。
最下面的Parameters是模型自带的默认运行参数,其中temperature、top_k、top_p决定了推理时怎么从概率分布里抽出下一个 token。
注意parameters那行的751.63M说的是参数个数,也就是模型里有 7.5 亿个数字,不是文件大小;文件大小是前面ollama list显示的 522MB。7.5 亿个参数能塞进 522MB,靠的就是Q4_K_M量化,平均每个参数只占 5.6 bit 左右。
查看当前真正加载在内存中的模型:
ollama ps我在发起一次请求后看到:
NAME ID SIZE PROCESSOR CONTEXT UNTIL qwen3:0.6b 7df6b6e09427 4.4 GB 100% GPU 32768 4 minutes from now这里的SIZE变成了 4.4GB,远大于磁盘上 522MB 的模型文件,因为它统计的是运行时占用,除了权重还有上下文缓存等开销。
这块缓存就是LLM 是怎么预测下一个 token 的 里讲的 KV cache,那篇文章算过:32768 的上下文要吃掉约 3.7GB 的 KV cache,加上 522MB 的权重,再算上一些临时计算的开销,就是这里 4.4GB 的来历。
CONTEXT是本次运行实际分配的上下文长度,跟ollama show显示的模型容量是两个数。所以选本地模型别只看下载大小,运行时的内存占用才是大头。
用完后可以主动卸载模型,释放运行内存:
ollama stop qwen3:0.6bollama stop只停止运行,不会删除下载到磁盘的模型,下次仍然可以直接运行,不需要重新下载。
如果你想了解checkpoint、BF16、Q4_K_M、Safetensors、GGUF,以及 Hugging Face 仓库里的每个文件分别做什么,可以继续阅