大模型技术知识手册
这份手册把前面对话中的内容整理成一个完整知识体系:先从大模型发展时间线理解“为什么会这样演进”,再进入 Transformer、长上下文、推理模型、开放 MoE、从零训练工程和量化压缩实践。
1. 大模型领域发展时间线
大模型的发展可以理解为三次跃迁:架构与规模跃迁、基础模型与产品化跃迁、多模态、推理与智能体跃迁。
Seq2Seq、Attention 与神经序列建模
机器翻译、摘要、问答等任务开始被统一为“输入序列 → 输出序列”。Attention 机制解决了早期 Seq2Seq 把所有信息压缩到固定向量的瓶颈,让模型在生成每个词时动态关注输入的不同部分。
Seq2SeqAttentionLSTM/GRUTransformer 改变架构范式
《Attention Is All You Need》提出 Transformer,用自注意力替代循环结构,让模型可以并行训练,并直接建模任意两个 token 之间的关系。这是现代 LLM 的架构起点。
Self-AttentionMulti-Head并行训练预训练—微调范式形成
GPT-1 证明“生成式预训练 + 下游微调”可行;BERT 推动双向预训练语言模型成为 NLP 主流;T5 把任务统一成 text-to-text。
GPTBERTT5预训练Scaling Laws 与 GPT-3
Scaling Laws 让“扩大模型、数据、算力”成为相对可预测的工程路线。GPT-3 展示 few-shot learning 与 in-context learning,说明模型可以通过 prompt 中的示例完成新任务。
Scaling LawsFew-shotIn-context LearningRAGFoundation Model 与多模态兴起
Foundation Model 概念被系统提出。CLIP 把图像和文本对齐,DALL·E 展示文本生成图像能力,语言开始成为多模态交互的通用接口。
Foundation ModelCLIPDALL·E多模态对齐、ChatGPT 与扩散模型爆发
Chinchilla 强调计算最优训练;InstructGPT/RLHF 让模型更符合人类指令;Chain-of-Thought 提升复杂推理;Stable Diffusion 推动文生图生态;ChatGPT 使大模型产品化进入大众视野。
RLHFCoTStable DiffusionChatGPTGPT-4、多模态、开放权重与监管
GPT-4 展示强多模态和复杂考试能力;Llama、Mistral、Qwen、ChatGLM 等开放/开源生态扩张;DPO、MoE、AI Safety 等成为重点。
GPT-4LlamaDPOMoEAI Safety实时多模态、长上下文、视频生成与推理模型
Gemini 1.5 强调长上下文,GPT-4o 推动实时多模态,o1 把推理时计算推到前台,Sora/Veo 让视频生成成为焦点。
长上下文实时语音视频生成推理时计算推理、智能体、效率与专业知识工作系统
模型竞争从“参数更大”转向“更会推理、更会用工具、更便宜、更可靠、更能完成真实工作流”。长上下文、Agent、工具调用、软件工程、研究辅助、企业部署和安全治理成为主线。
Reasoning ModelAgentTool Use企业部署2. 改变轨道的关键突破
1. Transformer
把语言建模从“顺序传递状态”变成“所有 token 直接建立关系”,并天然适合 GPU/TPU 矩阵并行。
2. 自监督预训练
用海量未标注文本做 next-token prediction 或 masked language modeling,让模型从数据中学习通用语言、知识和推理模式。
3. Scaling Laws
揭示模型大小、数据量、计算量与 loss 之间的规律,使“扩大规模”成为可规划的工程路线。
4. RLHF / 指令对齐
让模型从“会续写文本”变成“能按人类指令回答”,是 ChatGPT 产品化的关键。
5. 多模态基础模型
CLIP、DALL·E、GPT-4o、Sora 等把语言、图像、音频、视频连接起来,使自然语言成为通用操作接口。
6. 推理模型与智能体
模型不只是输出答案,还能分解任务、调用工具、运行代码、检查结果并持续推进复杂工作流。
7. 开放权重与效率优化
Llama、Mistral、Qwen、DeepSeek、Kimi 等推动本地部署、微调、量化和二次开发,改变产业格局。
8. 长上下文与 KV Cache 优化
从 4K/8K 走向 128K、1M,关键不只是位置编码,而是 attention 成本、KV cache、缓存复用和上下文压缩。
3. Transformer 技术细节
Transformer 的本质突破:用自注意力机制替代 RNN 的顺序传递,让每个 token 可以直接关注上下文中任意 token,并通过大规模矩阵运算并行训练。
3.1 Transformer 之前的问题
不能高效并行
RNN/LSTM 必须按顺序处理 token,前一步完成后才能处理下一步,难以充分利用 GPU。
长距离依赖困难
第 1 个 token 影响第 100 个 token 需要经过 99 次状态传递,信息容易衰减。
信息路径太长
Transformer 中任意两个 token 可以通过 attention 直接交互,路径长度从 O(n) 缩短到 1。
3.2 Self-Attention:每个 token 重新理解自己
Self-Attention 会让每个 token 问一个问题:在当前上下文里,我应该重点关注哪些 token?
例子:我 喜欢 苹果 手机 处理“苹果”时,模型会估计: 苹果 → 我 关注多少? 苹果 → 喜欢 关注多少? 苹果 → 苹果 关注多少? 苹果 → 手机 关注多少? 因为后面有“手机”,所以“苹果”更可能是公司/品牌,而不是水果。
3.3 Q、K、V:Query、Key、Value
Query
我现在想找什么信息?
Key
我这里有什么特征,可以被别人匹配?
Value
如果别人关注我,我能提供什么内容?
k = xWk
v = xWv
注意力分数通常用点积计算:
Transformer 的核心公式:
除以 √dₖ 是为了控制点积数值尺度,避免 softmax 过度尖锐导致训练不稳定。
3.4 Multi-Head Attention:多个视角同时看
语言关系有很多种:主谓关系、指代关系、位置关系、语义搭配、代码结构等。多头注意力让模型用多个子空间同时学习不同关系。
Head 1:可能关注主语 → 谓语 Head 2:可能关注代词 → 被指代对象 Head 3:可能关注局部搭配 Head 4:可能关注长距离依赖 MultiHead = Concat(head1, head2, ..., headh)Wo
3.5 位置编码:让模型知道顺序
Self-Attention 本身不天然知道顺序。没有位置编码,“我爱你”和“你爱我”可能看起来只是同一组 token。Transformer 会把 token embedding 与 positional encoding 相加。
输入表示 = token embedding + positional encoding
常见位置编码包括正弦/余弦位置编码、相对位置编码、RoPE、ALiBi 等。现代 Llama、Qwen、DeepSeek、Kimi 等常见路线大量使用 RoPE 或其变体。
3.6 三种主流 Transformer 架构
| 架构 | 代表 | 特点 | 适合任务 |
|---|---|---|---|
| Encoder-only | BERT | 双向理解,不能自然自回归生成长文本 | 分类、抽取、检索、语义匹配 |
| Encoder-Decoder | T5、原始 Transformer | Encoder 理解输入,Decoder 生成输出 | 翻译、摘要、问答、文本到文本任务 |
| Decoder-only | GPT、Llama、Claude、Qwen、DeepSeek、Kimi | 根据前文预测下一个 token | 对话、写作、代码、推理、工具调用 |
3.7 FFN、残差连接与 LayerNorm
Feed Forward Network
Attention 负责 token 间交流,FFN 负责对每个 token 表示进行非线性加工。大模型中 FFN 参数量通常非常大。
Residual Connection
形式是 x + F(x),让深层网络更容易训练,信息和梯度更容易跨层传递。
LayerNorm / RMSNorm
稳定每层数值分布,使深层 Transformer 训练更稳定。现代模型常用 Pre-LN / RMSNorm。
3.8 KV Cache 与长上下文瓶颈
Decoder-only 模型生成时,一个 token 一个 token 生成。为了不重复计算历史 token,会缓存历史 Key/Value,这就是 KV Cache。
生成第 100 个 token: 前 99 个 token 的 K/V 已缓存 只需要计算新 token 的 Q/K/V 再和缓存中的 K/V 做 attention
标准 attention 复杂度约为 O(n²),上下文越长,attention 计算和 KV Cache 显存都会快速增长。这就是长上下文模型需要 FlashAttention、Sparse Attention、Sliding Window、GQA/MQA、KV Cache 压缩等技术的原因。
3.9 Transformer 的局限
- 标准 attention 长上下文成本高。
- 训练目标是预测下一个 token,不天然保证事实正确,容易产生幻觉。
- 长程规划、长期记忆、工具执行仍需要外部系统支撑。
- 数据和算力需求巨大,训练与部署成本高。
4. DeepSeek V4:普惠百万上下文的技术主线
DeepSeek V4 的关键不是单纯把位置编码外推到 1M,而是重做长上下文里最贵的两件事:Attention 计算和KV Cache 存储。
4.1 为什么百万上下文昂贵?
- 标准 attention 的注意力矩阵大小约为
n × n,prefill 成本接近O(n²)。 - 生成阶段需要为历史 token 存储 Key/Value,上下文越长 KV Cache 越大。
- 重复长前缀如果每次都重新 prefill,服务成本会非常高。
4.2 Hybrid Attention:CSA + HCA
| 模块 | 作用 | 直观理解 |
|---|---|---|
| CSA:Compressed Sparse Attention | 每 m 个 token 压成 compressed KV entry,再用 top-k 稀疏选择重要块 | 看得较细,但只挑重点看 |
| HCA:Heavily Compressed Attention | 用更大压缩率把上下文压得很短,再做 dense attention | 获得便宜的全局视野 |
| SWA:Sliding Window Attention | 保留最近窗口的未压缩 KV | 近处看得清,避免压缩丢局部细节 |
4.3 CSA:先压缩,再稀疏选择
普通 attention: 当前 token → 看所有历史 token CSA: 当前 token → 看压缩后的历史块 → 由 indexer 选 top-k 重要块 → 核心 attention 只看这些块
CSA 的价值是把“所有 token 都可能进入重型 attention”改成“先压缩、再检索、再选择”。这类似模型内部的 RAG:不是从外部文档库检索,而是从内部压缩 KV cache 中检索相关历史块。
4.4 Lightning Indexer
Lightning Indexer 是 CSA 内部的轻量索引器,用当前 query token 与 compressed KV entries 打分,选出 top-k 最相关块。它把长上下文 attention 问题转化成“内部相关块检索”。
4.5 HCA:重压缩全局上下文
HCA 使用更激进的压缩率,把百万上下文压缩成很短的全局记忆,再在压缩序列上做 dense attention。它补足 CSA 的不足:让模型始终有全局视野。
4.6 低精度与 KV Cache 管理
- FP8 KV:大部分 KV 用 FP8 存储,位置相关关键维度保留更高精度。
- FP4 Indexer:CSA indexer 的 QK 路径可使用更低精度加速。
- 异构 KV Cache:同时管理 CSA compressed KV、HCA compressed KV、SWA 未压缩窗口和未完成压缩尾部。
- On-disk KV Cache:共享长前缀命中时复用 compressed KV,避免重复 prefill。
4.7 MoE 与长上下文训练
MoE 稀疏激活主要降低 FFN 部分每 token 计算成本,不直接解决 attention 爆炸,但在长上下文请求中可以显著降低总体计算。长上下文能力还需要训练阶段逐步适应:短上下文 → 中长上下文 → 1M 上下文,而不是只靠推理外推。
4.8 概念速查
CSA
压缩稀疏注意力。先压缩 KV,再选择 top-k 重要块做 attention。
HCA
重压缩注意力。把长上下文压得更短,用低成本获得全局视野。
SWA
滑动窗口注意力,保留最近 token 的未压缩细节。
On-disk KV Cache
把可复用长前缀的 KV 存起来,后续请求命中时避免重复 prefill。
5. GPT-5.5:推理型智能体系统的公开技术细节
GPT-5.5 的公开资料重点不是某个新的 attention 公式,而是系统级能力:推理时计算、长上下文服务、工具调用、状态压缩、Responses API/Agents 编排与安全栈。
5.1 技术栈主线
大规模基础模型 ↓ 强化学习训练出的推理能力 ↓ 可调 reasoning.effort / test-time compute ↓ 长上下文 + prompt caching + compaction ↓ 工具调用 / tool search / computer use / code interpreter / web search ↓ Responses API / Agents SDK 编排状态、工具与上下文 ↓ 安全分类器、监控、可信访问和安全策略
5.2 Reasoning tokens 与 reasoning.effort
推理模型会在内部使用 reasoning tokens 做规划、分解、尝试、检查和工具调用。用户通常看不到原始内部推理,但这些 token 会占用上下文窗口并影响成本。
| 参数 | 含义 | 适合场景 |
|---|---|---|
none / low | 较少推理预算 | 简单问答、低延迟任务 |
medium | 质量、成本、延迟的平衡 | 默认主力设置 |
high / xhigh | 更多推理时计算 | 复杂代码、数学、研究、多工具任务 |
5.3 GPT-5.5 Pro 与 test-time compute
Pro 版本可理解为同一底座模型在更高推理时计算设置下运行:面对难题时投入更多计算、做更多并行尝试或验证,从而提高复杂任务准确性,但延迟和成本也更高。
5.4 百万上下文服务层:prompt caching 与 compaction
Prompt caching
缓存长 prompt 前缀 prefill 后产生的 KV tensors。后续请求命中相同前缀时,可减少重复 prefill,降低延迟和成本。
Compaction
把长任务历史压缩为模型可继续使用的状态表示,保留关键事实、工具结果、未完成目标和执行计划。
长任务不是无限塞上下文,而是: 执行 → 记录 → 压缩 → 继续 → 再执行 → 再压缩
5.5 Tool search 与 Responses API
工具很多时,如果把所有工具 schema 都塞进上下文,会浪费 token 并干扰模型选择。Tool search 让模型运行时动态加载需要的工具定义。Responses API 则负责多轮状态、工具调用、结构化输出和上下文管理。
传统工具调用:所有工具说明全部进 prompt Tool search:先给工具命名空间 → 模型判断需要什么 → 动态加载相关工具定义
5.6 多模态与安全栈
- 多模态输入使模型能处理文本、图像、截图、界面等任务。
- computer use 让模型通过截图理解界面,并执行点击、输入、导航等操作。
- 安全栈包括模型安全训练、运行时分类器、红队测试、可信访问、高风险领域防护和监控。
5.7 概念速查
Reasoning tokens
模型内部用于思考、规划、验证和工具调用的 token。
Test-time compute
回答阶段投入的计算量,是推理模型能力提升的重要路线。
Prompt caching
缓存长前缀的 KV tensors,减少重复 prefill。
Compaction
把长任务历史压缩为可延续的状态表示。
Tool search
运行时动态搜索和加载工具定义。
Responses API
面向多轮、工具、状态和结构化输出的执行接口。
6. Kimi K2.6:开放 MoE、多模态与 Agent Swarm
Kimi K2.6 的技术主线是:开放权重 + 1T MoE 底座 + MLA + 多模态 + Thinking/Agent + Agent Swarm 并行编排 + 原生 INT4 部署。
6.1 总体定位
- 长程编码:复杂端到端软件工程、跨语言任务、调试、性能优化。
- Coding-driven design:从文字或视觉输入生成网页、前端界面、轻量全栈应用。
- 长时间 Agent 执行:多轮工具调用、代码修改、运行测试、失败修复。
- Agent Swarm:把复杂任务拆成多个子智能体并行执行,再汇总交付。
6.2 1T MoE:总参数很大,每 token 只激活一小部分
| 指标 | 配置 | 意义 |
|---|---|---|
| 总参数 | 约 1T | 提供大容量知识和能力 |
| 激活参数 | 约 32B | 每个 token 实际计算成本远低于 dense 1T |
| 专家数 | 384 | 不同 token 可路由到不同专家 |
| 每 token 选专家 | 8 | 稀疏激活,降低 FFN 计算 |
| 上下文长度 | 256K | 更偏向长程 Agent 工作区,而非百万上下文路线 |
| Attention | MLA | 压缩 KV Cache,支撑长上下文推理 |
6.3 MLA:低秩 latent 压缩 KV Cache
普通 MHA:每个 token 缓存完整 K + 完整 V GQA/MQA:多个 query head 共享部分 K/V MLA:先把 K/V 压入低维 latent,需要时再投影使用
MLA 对 256K 长上下文、多轮工具调用、长程编码非常关键,因为它降低了 KV Cache 的存储压力。
6.4 MuonClip:稳定超大 MoE 预训练
Kimi K2 底座使用 MuonClip 优化器,核心是解决超大 MoE 训练中的 attention logits explosion 和 loss spike。QK-Clip 会在参数更新后检查 attention logits,如果超过阈值,就缩放 query/key projection weights。
MuonClip = Muon + weight decay + RMS matching + QK-Clip
6.5 多模态:MoonViT / MoonViT-3D
- 使用 MoonViT 视觉编码器,并通过 projector 接入语言模型。
- 图像和视频共享视觉编码空间,视频可按 temporal chunk 处理。
- 早期图文联合训练让文本能力、视觉能力、工具能力互相迁移。
- Zero-vision SFT:只用高质量文本 SFT,也能激活视觉推理和工具使用能力。
6.6 Thinking、Preserve Thinking 与工具调用
Thinking mode
适合复杂推理、编码和多步工具调用。
Instant mode
关闭深度思考,适合简单任务和低延迟场景。
Preserve Thinking
多轮交互中保留 reasoning content,帮助 coding agent 记住之前的决策和失败原因。
Interleaved Thinking + Tool Call
想一步、调用工具、观察结果、再想、再调用,而不是一次性想完。
6.7 Agentic 数据合成与 Agent Swarm
Kimi 系列强调用真实/合成工具、agent 任务、执行轨迹和沙箱反馈训练工具使用能力。Agent Swarm 则把单 agent 顺序执行扩展为多子智能体并行。
单 Agent:从头到尾顺序执行 Agent Swarm: 主 agent / orchestrator 拆任务 多个 sub-agents 并行执行 最后汇总成统一交付物
PARL 的关键思想是训练 orchestrator,冻结 subagents,把子智能体视为环境的一部分,降低 credit assignment 难度。
6.8 Native INT4
K2.6 采用原生 INT4 部署思路,通过量化感知训练让 MoE 组件适应 INT4 weight-only quantization。目标是降低 1T MoE 部署成本,并提升长 thinking / 长 decoding 场景速度。
6.9 与 DeepSeek V4、GPT-5.5 对比
| 维度 | DeepSeek V4 | GPT-5.5 | Kimi K2.6 |
|---|---|---|---|
| 公开重点 | 百万上下文成本结构 | 推理系统与工具编排 | 开放 MoE、长程编码与 Agent Swarm |
| 上下文 | 1M 级 | 1M 级 | 256K |
| 架构披露 | CSA/HCA/SWA、KV 压缩 | 底层架构未充分公开,公开系统层 | 1T MoE、MLA、MoonViT、INT4 |
| 能力方向 | 超长上下文普惠 | 推理型智能体系统 | 开放工程型 Agent |
7. 从零训练一个大模型:完整操作链
训练大模型不是“写一个 Transformer 脚本”,而是一整套体系:数据、tokenizer、模型、训练系统、GPU 集群、后训练、评测、部署、运维、安全与成本管理。
7.1 先定现实边界
| 层级 | 模型规模 | 资源规模 | 适合目标 |
|---|---|---|---|
| 入门实验 | 10M—100M | 1 张消费级 GPU / 云 GPU | 跑通完整流程 |
| 小型基础模型 | 100M—1B | 1—8 张高端 GPU | 学习分布式与数据工程 |
| 可用小模型 | 1B—3B | 8—64 张 A100/H100 级 GPU | 研究团队或小公司 |
| 中型开源模型 | 7B—14B | 数十到数百张 GPU | 公司/实验室 |
| 产业级模型 | 30B—70B / MoE | 数百到数千张 GPU | AI 公司 |
7.2 完整流程
1. 明确目标和预算 2. 收集与清洗数据 3. 训练 tokenizer 4. 设计模型结构 5. 搭建 GPU 训练环境 6. 做小规模 sanity check 7. 分布式预训练 8. 持续评测与排错 9. 指令微调 SFT 10. 偏好优化 DPO / RLHF / GRPO 11. 工具调用、长上下文、RAG、Agent 后训练 12. 模型压缩与量化 13. 推理服务部署 14. 线上监控、成本控制、安全治理
7.3 需要掌握的知识地图
数学与机器学习
矩阵乘法、概率、交叉熵、反向传播、AdamW、学习率调度、Transformer、Scaling Laws。
编程与工程
Python、PyTorch、Linux、Git、Docker、Shell、CUDA 基础、数据处理、多进程。
分布式训练
DDP、FSDP、ZeRO、Tensor Parallel、Pipeline Parallel、Activation Checkpointing、BF16/FP8。
基础设施
GPU 服务器、NVLink/NVSwitch、InfiniBand/RoCE、Slurm/K8s、对象存储、NVMe。
运维监控
Prometheus、Grafana、NVIDIA DCGM、W&B、MLflow、日志、告警、checkpoint 恢复。
产品与安全
API、限流、鉴权、日志脱敏、安全过滤、模型版本、prompt 版本、成本监控。
7.4 数据工程:最容易被低估的核心
大模型训练不是把网页文本直接扔进去,而是完整的数据流水线:
原始数据 ↓ HTML/WARC 抽取 ↓ 文本清洗 ↓ 语言识别 ↓ 质量过滤 ↓ 去重 ↓ PII 删除 ↓ 毒性/色情/恶意代码过滤 ↓ 领域分类 ↓ 数据混合配比 ↓ 评测集污染检测 ↓ tokenize ↓ 打包成训练样本 ↓ 写入 shards
数据配比可以从网页、百科、书籍、代码、数学、多语言、领域数据和合成数据开始,但必须注意版权、许可证、隐私、PII、代码开源协议和评测污染。
7.5 Tokenizer
- 常见方法:BPE、SentencePiece、Unigram、WordPiece。
- 需要决定词表大小、中文支持、代码支持、多语言支持、特殊 token。
- 代码模型尤其要保留缩进、换行、空格、符号、括号、JSON、路径、URL。
- Tokenizer 一旦确定,不要轻易改,否则 embedding 和数据都要重做。
7.6 模型结构起点
入门先做标准 decoder-only Transformer,不要一开始就做 MoE、MLA、百万上下文。
Token Embedding Position Encoding / RoPE 多层 Transformer Block - RMSNorm / LayerNorm - Causal Self-Attention - FFN / SwiGLU - Residual Connection LM Head
| 规模 | layers | hidden | heads | seq len | 用途 |
|---|---|---|---|---|---|
| 50M | 8—12 | 512—768 | 8—12 | 1024 | 入门 |
| 125M | 12 | 768 | 12 | 1024/2048 | 小 GPT |
| 350M | 24 | 1024 | 16 | 2048 | 实验模型 |
| 1B | 24—32 | 2048 | 16—32 | 2048/4096 | 小基础模型 |
| 7B | 32 | 4096 | 32 | 4096—32K | 可用开源级别 |
7.7 训练环境与集群
单机入门:Ubuntu + NVIDIA Driver + CUDA + PyTorch + Transformers + W&B/TensorBoard 多 GPU:torchrun + NCCL + DDP/FSDP/ZeRO + checkpoint 分片 多节点:8×GPU 节点 + InfiniBand/RoCE + Slurm/K8s + S3/MinIO + 监控告警
训练上规模后,瓶颈常常不是 GPU 算不动,而是数据读不出来、网络打满、checkpoint 太慢、NCCL hang、某个节点掉线。
7.8 训练前 sanity check
- Overfit 小数据:拿 1000 条文本强行过拟合,检查 loss 能否下降。
- 小模型短跑:训练 10M/50M,观察 loss、tokens/s、显存、checkpoint。
- 多 GPU 通信测试:确认 NCCL、数据分片、loss、checkpoint 都正常。
- 故障恢复测试:手动中断再恢复,检查训练步数、优化器、学习率和 loss 连续性。
7.9 预训练配置示例
model: vocab_size: 50000 n_layer: 12 n_embd: 768 n_head: 12 seq_len: 2048 norm: rmsnorm activation: swiglu position_encoding: rope train: total_tokens: 10000000000 micro_batch_size: 8 gradient_accumulation_steps: 8 learning_rate: 3e-4 min_lr: 3e-5 warmup_steps: 2000 weight_decay: 0.1 grad_clip: 1.0 precision: bf16 optimizer: adamw checkpoint_every: 1000 eval_every: 500
7.10 后训练与部署
SFT
让 base model 学会按人类指令回答、遵循格式、多轮对话和安全拒答。
DPO / RLHF / GRPO
用偏好数据或可验证奖励优化输出偏好、数学、代码和工具调用。
工具调用训练
训练模型什么时候用工具、用哪个工具、如何填参数、如何读取工具返回、如何失败修正。
推理部署
vLLM、SGLang、TensorRT-LLM、TGI、llama.cpp;关注 TTFT、TPOT、吞吐、KV Cache、并发和成本。
7.11 最小可行项目
8. 量化压缩:方法、流程与实践坑
量化压缩的本质是:用更少的 bit、更少的参数、更少的缓存和更少的计算,尽量保留模型原来的能力。
8.1 为什么需要量化?
大模型成本主要来自模型权重、KV Cache、矩阵计算和显存带宽。以 7B 参数为例:
| 精度 | 每参数字节 | 理论权重大小 |
|---|---|---|
| FP32 | 4 bytes | 约 28GB |
| FP16/BF16 | 2 bytes | 约 14GB |
| INT8 | 1 byte | 约 7GB |
| INT4 | 0.5 byte | 约 3.5GB |
8.2 量化数学
量化会把连续浮点数压到有限离散格子中。误差来自 round、scale、zero-point,以及 outlier 对 scale 的影响。
8.3 量化对象
| 对象 | 说明 | 典型格式 |
|---|---|---|
| 权重量化 | 压缩模型参数,最常见 | W8A16、W4A16 |
| 激活量化 | 压缩中间激活,更难但可能真正加速 matmul | W8A8、FP8 |
| KV Cache 量化 | 长上下文和高并发推理关键 | INT8、FP8、INT4 KV |
| 优化器状态量化 | 降低训练/微调显存 | 8-bit optimizer、paged optimizer |
8.4 量化粒度
Per-tensor
整个矩阵一个 scale。简单但容易被 outlier 影响。
Per-channel
每个通道一个 scale。精度更好,metadata 和 kernel 要求更高。
Per-group
每组权重一个 scale。INT4 常见 group size 为 128,也可用 64/32 提升精度。
8.5 PTQ 与 QAT
| 路线 | 流程 | 优点 | 缺点 |
|---|---|---|---|
| PTQ | 训练后用校准数据量化 | 低成本、快、不需重新训练 | 极低 bit 易掉点,校准数据敏感 |
| QAT | 训练/后训练阶段模拟量化误差 | 精度更好,适合极低 bit | 成本高、工程复杂 |
8.6 主要方法
LLM.int8
大部分维度用 INT8,少量 outlier 维度保留 FP16。稳定、精度损失小,但压缩率不如 INT4。
GPTQ
用近似二阶信息做 one-shot 权重量化,尽量让量化前后层输出误差最小。常用于 3/4-bit。
AWQ
激活感知权重量化,识别并保护少量显著权重。适合边缘、本地和低显存部署。
SmoothQuant
把激活 outlier 的量化难度迁移到权重上,使 W8A8 更稳定,适合高吞吐 INT8。
FP8
8-bit 浮点格式,适合 H100/H200/B200 等新硬件的训练和推理。
QLoRA
冻结 4-bit 量化基础模型,只训练 LoRA adapter。核心包括 NF4、double quantization、paged optimizers。
GGUF / llama.cpp
本地 CPU/Mac/边缘设备常用格式。Q4_K_M、Q5_K_M、Q6_K、Q8_0 等常见。
蒸馏与剪枝
蒸馏用大模型教小模型;剪枝删除不重要权重。真实加速依赖硬件和 kernel。
8.7 怎么选择量化格式?
| 场景 | 推荐路线 | 原因 |
|---|---|---|
| 本地 CPU / Mac | GGUF Q4_K_M / Q5_K_M | llama.cpp 生态成熟 |
| 消费级 GPU 推理 | AWQ / GPTQ INT4 | 显存省,社区模型多 |
| 单卡微调 | QLoRA NF4 | 显存低,效果好 |
| 企业 GPU 高吞吐 | FP8 / SmoothQuant W8A8 | 更适合硬件加速 |
| 精度敏感任务 | INT8 / FP8,谨慎 INT4 | 代码、数学、工具调用更敏感 |
| 长上下文服务 | 权重量化 + KV Cache 优化 | 瓶颈不只在权重 |
8.8 实际操作流程
- 做 FP16/BF16 基线评测:记录质量、延迟、吞吐、显存、并发。
- 准备 calibration data:覆盖真实业务、长上下文、代码、JSON、工具调用。
- 选择方法:先 INT8/FP8,再试 AWQ/GPTQ INT4,再考虑更激进低 bit。
- 量化后重新评测:比较 FP16、INT8、INT4,不只看能不能输出。
- 部署压测:测 TTFT、TPOT、tokens/s、KV Cache、长上下文 OOM、并发失败率。
8.9 代码示例:bitsandbytes 4-bit 加载
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
import torch
model_name = "Qwen/Qwen2.5-7B-Instruct"
quant_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True,
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
quantization_config=quant_config,
device_map="auto",
)
prompt = "解释一下大模型量化的核心思想。"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=256, temperature=0.7)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
8.10 vLLM 部署 AWQ / GPTQ
vllm serve Qwen/Qwen2.5-7B-Instruct-AWQ \ --quantization awq \ --gpu-memory-utilization 0.90 \ --max-model-len 32768 vllm serve Qwen/Qwen2.5-7B-Instruct-GPTQ-Int4 \ --quantization gptq \ --gpu-memory-utilization 0.90 \ --max-model-len 32768
8.11 GGUF / llama.cpp
# 1. 转成 GGUF python convert_hf_to_gguf.py /path/to/hf_model \ --outfile model-f16.gguf \ --outtype f16 # 2. 量化成 Q4_K_M ./llama-quantize model-f16.gguf model-q4_k_m.gguf Q4_K_M # 3. 运行 ./llama-cli -m model-q4_k_m.gguf -p "解释一下量化压缩"
8.12 常见踩坑
- 只看显存,不看质量:量化后可能回答变短、代码出错、JSON 不闭合、长上下文找不到证据。
- 校准数据不匹配:用英文短文本校准,却部署中文长文档问答,真实效果可能很差。
- 过度量化敏感层:embedding、lm_head、第一层、最后几层、norm 可能需要保留高精度。
- 忽略 chat template:prompt 格式变化会被误判为量化退化。
- 忽略长上下文:短文本没问题不代表 32K/128K 没问题。
- 忽略多模态模块:视觉编码器和 projector 也需要单独评测。
8.13 一句话总结
9. 实践路线图
如果你要真正学会“从零训练并部署大模型”,建议按阶段推进,而不是直接挑战 7B/70B。
| 阶段 | 目标 | 关键实践 | 产出物 |
|---|---|---|---|
| 阶段 1 | 训练最小 GPT | tokenizer、causal mask、loss、训练循环、文本生成 | 10M—50M 小模型 |
| 阶段 2 | 训练 100M 模型 | 数据清洗、BPE、validation loss、checkpoint、W&B | 可复现实验记录 |
| 阶段 3 | SFT / DPO | chat template、指令数据、偏好数据、拒答样本 | 小聊天模型 |
| 阶段 4 | 分布式训练 | torchrun、DDP、FSDP、ZeRO、BF16、activation checkpointing | 300M—1B 训练经验 |
| 阶段 5 | 推理部署 | vLLM、OpenAI-compatible API、streaming、量化、监控 | 可调用 API |
| 阶段 6 | RAG / Agent | embedding、向量库、工具 schema、Python sandbox、浏览器/文件工具 | 能完成真实任务的系统 |
10. 概念速查总表
Token
模型处理文本的基本单位,训练和推理成本通常按 token 计算。
Tokenizer
把文本切成 token 的工具,决定模型如何“看见”语言和代码。
Transformer
基于注意力机制的神经网络架构,现代大模型核心底座。
Self-Attention
每个 token 根据上下文中其他 token 更新自己的表示。
Q/K/V
Query、Key、Value。Query 找信息,Key 被匹配,Value 提供内容。
RoPE
旋转位置编码,现代大模型常用位置编码方式。
KV Cache
生成时缓存历史 token 的 Key/Value,减少重复计算。
Pretraining
用海量数据做 next-token prediction,学习通用语言和知识能力。
SFT
指令微调,让模型学会按人类指令回答。
DPO
直接偏好优化,用 chosen/rejected 回答对齐模型输出偏好。
RLHF
用人类反馈训练奖励模型,再用强化学习优化语言模型。
RAG
检索增强生成,把外部知识库检索结果放入上下文,提高事实性。
MoE
专家混合模型,总参数很大,但每个 token 只激活部分专家。
MLA
Multi-head Latent Attention,用低秩 latent 压缩 KV Cache。
CSA/HCA
压缩稀疏注意力与重压缩注意力,用于降低超长上下文成本。
Reasoning tokens
推理模型内部用于规划、验证、工具调用的 token。
Prompt caching
缓存长前缀的 KV tensors,减少重复 prefill。
Compaction
把长任务历史压缩为可继续执行的状态。
FSDP
把参数、梯度、优化器状态分片,降低单卡显存压力。
ZeRO
DeepSpeed 的分片优化技术,分阶段切分优化器、梯度和参数。
Tensor Parallel
把一个大矩阵计算拆到多张 GPU 上。
Pipeline Parallel
把模型不同层放到不同 GPU 上,像流水线一样训练。
BF16
常用训练精度,比 FP16 更稳定,适合大模型训练。
FlashAttention
优化 attention 计算和显存访问的高效实现。
Quantization
把 FP32/FP16/BF16 权重或激活压到 INT8、INT4、FP8 等。
PTQ
训练后量化,不重新训练或只用少量校准数据。
QAT
量化感知训练,在训练阶段模拟量化误差。
AWQ
激活感知权重量化,保护关键权重。
GPTQ
基于近似二阶信息的权重量化方法。
QLoRA
冻结 4-bit 基础模型,只训练 LoRA adapter。
GGUF
llama.cpp 生态常用本地推理格式。
MFU
Model FLOPs Utilization,衡量训练系统算力利用率。
Data Contamination
训练数据污染评测集,导致 benchmark 虚高。
Agent Swarm
多个子智能体并行协作完成复杂任务。
11. 参考链接与延伸阅读
以下为前面讲解中涉及的代表性论文、文档和项目方向,建议按主题逐步阅读。
基础模型与 Transformer
- Attention Is All You Need
- Scaling Laws for Neural Language Models
- Language Models are Few-Shot Learners / GPT-3
- Training Compute-Optimal Large Language Models / Chinchilla
对齐、推理与工具
- Training language models to follow instructions with human feedback / InstructGPT
- Chain-of-Thought Prompting
- Direct Preference Optimization
- Hugging Face TRL