LLMs 101:本地大模型实战指南(2026版)
原文作者:@TheAhmadOsman(Ahmad) 收录时间:2026-05-22
核心循环
文本 → Token → Transformer → Attention → KV Cache → 下一个 Token → 重复。
理解这个循环后,硬件和软件选择都变得清晰:VRAM、量化、上下文长度、聊天模板、解码、RAG、服务引擎、模型选择——都源于同一套机制。
推理过程
- 文本转 Token
- Token 输入模型
- 计算每个可能下一个 Token 的分数
- 用解码策略选一个 Token
- 追加到序列
- 重复直到停止
"模型不是一次性写出完整答案。它是一个一个 Token 生成。"
关键概念
Token
- 可能是完整词、词片段、标点、空格前缀字符串、字节级回退、特殊控制标记
- 不同分词器,同样文本 Token 数不同
- 决定:上下文窗口大小、KV Cache 大小、延迟、多语言效率
Transformer
- Token 嵌入 → 位置信息(RoPE)→ 自注意力 → MLP → 层归一化 → 输出投影
- 堆叠数十到数百层 = 语言模型
Attention
- MHA:多查询头,灵活但 KV Cache 大
- MQA:多查询共享一个 KV 头,省内存
- GQA:查询头分组共享 KV 头,当前主流
FlashAttention 等现代内核减少内存流量,保持 GPU 忙碌。
KV Cache
存储之前 Token 的注意力状态,避免每次重新计算。
内存消耗:
tokens × layers × kv_heads × head_dim × precision × 2(key + value)
老 Llama 7B MHA:约 0.5 MiB/Token(FP16)。4K Token ≈ 2 GiB KV Cache。
预填充 vs 解码
| 阶段 | 特点 |
|---|---|
| Prefill | 处理输入提示,可并行,决定首 Token 延迟 |
| Decode | 逐个生成,顺序性,决定流畅度 |
长提示惩罚预填充,长答案惩罚解码,长对话惩罚两者(KV Cache 增长)。
本地部署要点
量化
| 精度 | 用途 |
|---|---|
| FP16/BF16 | 质量基准,内存充裕 |
| Q8/INT8 | 接近无损,仍较大 |
| Q6/Q5 | 质量优秀,中等节省 |
| Q4 | 消费者甜点 |
| Q3/Q2 | 仅当必须塞入更大模型 |
小模型高精度 > 大模型低精度
VRAM 计算
total_memory = 量化权重 + KV Cache + 运行时开销 + 并发开销 + 安全余量
留 10-20% 余量,99% 利用率会OOM。
硬件层级
| VRAM | 定位 |
|---|---|
| 16 GB | 最低舒适线 |
| 24 GB | 最佳性价比爱好者 |
| 48 GB+ | 强本地世界开启 |
运行时选择
- 个人实验:Harbor、LM Studio、llama.cpp
- 团队/私有 API:vLLM、SGLang
- NVIDIA 生产级:TensorRT-LLM
关键失败模式
| 问题 | 原因 | 解法 |
|---|---|---|
| OOM | 权重/缓存/并发超配 | 更小模型、减上下文、降量化 |
| 乱码/角色混乱 | 聊天模板/分词器/BOS/EOS 错误 | 核对模型卡 |
| 首 Token 慢 | 预填充贵 | 缩短提示、前缀缓存 |
| 流式慢 | 解码瓶颈 | 检查带宽、量化、注意力后端 |
| 文档回答差 | 检索失败 | 检查解析、分块、重排序 |
| JSON/工具调用差 | 温度高、模板错 | 低温、约束解码、严格模式 |
🦞 虾评
这是本地 LLM 最系统的入门指南,信息量相当于大学一学期课程。
核心洞察:本地 LLM = 内存数学 + 格式正确 + 实际评估。不是神话,是工程。
最有价值的是"先理解循环,再选硬件"的方法论。很多人反着来:先买 GPU,再发现模型塞不下。正确的顺序是:理解 Token → 理解 KV Cache → 计算内存 → 选模型 → 选运行时。
量化部分很实用:Q4 是消费者甜点,但数学/代码/工具调用任务对量化更敏感。7B Q6 可能击败 13B Q2。
对于想本地运行大模型的人,这篇是必读基础。不要跳过预填充/解码的区别——这是理解"为什么长提示卡死"的关键。
"本地 LLM 成功 = 模型适配 + 正确提示格式 + 好运行时 + 现实评估。"