大模型系统的性能由显存、算力和带宽三者共同决定;训练改变权重,推理消费权重,RAG 和微调解决不同的问题,评估决定你能不能相信结果。
GPU 显存存放模型权重、KV cache、激活值和临时缓冲区,容量决定“能不能跑”。算力(FLOPS)决定矩阵运算有多快,显存带宽(HBM)决定数据搬运有多快,多卡时互联带宽(NVLink、PCIe、InfiniBand)决定通信开销。很多“GPU 利用率低但很慢”的问题,瓶颈在带宽、数据加载或通信,而不是算力不足。显存 OOM 和吞吐低是两类不同问题,先分清再优化。
训练包含前向、反向和优化器更新,显存由权重、梯度、优化器状态、激活和临时缓冲区组成;并行策略(DDP、ZeRO、张量并行、流水并行)本质上是在切分这些状态。推理只做前向,分为 prefill 和 decode 两个阶段:prefill 处理输入,通常受算力限制;decode 逐 token 生成,通常受显存带宽限制。量化减少权重和 KV cache 的位宽,能降低显存和带宽压力,但会带来精度损失。
批处理把多个请求合并计算,提高 GPU 利用率,但会增加排队和首 token 延迟。连续批处理(continuous batching)在请求结束时动态补入新请求,避免等待最慢的序列;PagedAttention 用分页管理 KV cache,减少碎片。并发上限由显存、KV cache 和调度策略共同决定,不是越大越好。衡量推理服务要同时看吞吐、TTFT(首 token 延迟)、TPOT(单 token 延迟)和错误率。
RAG 在推理时检索外部知识并拼进上下文,不改变模型权重,适合知识频繁更新、需要引用来源和权限隔离的场景。微调改变权重,适合固定任务的行为、风格、格式和领域表达,需要标注数据和评估集。两者不是互斥的:可以先用 RAG 提供事实,再用微调稳定输出格式。选型的关键是问题出在“不知道”还是“不会做”。
评估要区分检索质量和生成质量:检索看召回率、精确率和排序,生成看忠实度、相关性、完整性和格式合规。离线基准适合回归对比,但不能直接推断生产效果,因为数据分布、提示和工具调用都不同。评估集要避免污染,LLM-as-judge 要校准偏差,线上还要看用户反馈、拒答率和成本。没有评估集的“效果变好”只是感觉。
| 阶段 | 主导资源 | 关键指标 | 常见瓶颈 |
|---|---|---|---|
| 训练 | 算力、显存、互联 | 吞吐、显存占用、通信占比 | 激活和优化器状态 OOM |
| Prefill | 算力 | TTFT、输入 token 吞吐 | 长上下文、批大小 |
| Decode | 显存带宽 | TPOT、输出 token 吞吐 | KV cache、并发 |
| RAG | 检索与上下文窗口 | 召回率、忠实度、引用率 | 切分、嵌入、权限 |
| 微调 | 显存、数据质量 | 任务指标、过拟合 | 数据不足、灾难性遗忘 |
| 评估 | 数据与标注 | 通过率、延迟、成本 | 污染、偏差、覆盖不足 |
数据 → 训练(改权重) → 推理(prefill + decode) → 输出
↑ ↑
微调/LoRA RAG(不改权重)
↓
评估与反馈
合上页面,先回答,再展开对照。