从“模型为什么会变强”到“模型为什么这么贵”:理解数据、参数、算力、训练系统和推理系统之间的真实约束
| 阶段 | 输入 | 训练目标 | 产物 | 关键风险 |
|---|---|---|---|---|
| 数据准备 | 网页、书籍、代码、论文、业务数据、多模态数据 | 清洗、去重、过滤、配比 | 训练语料或样本集 | 低质、重复、污染、版权、隐私 |
| 预训练 | 海量 token | 预测下一个 token 或重建被遮蔽内容 | Base Model | 成本极高,训练失败代价大 |
| SFT | 指令-回答样本 | 学会按人类指令输出 | Instruction Model | 数据风格单一会让模型变窄 |
| 偏好优化 | 偏好对、排序、规则反馈 | 让输出更有用、更安全、更符合偏好 | Aligned Model | 过度对齐会牺牲多样性和能力 |
| 部署推理 | Prompt、上下文、工具结果 | 低延迟、低成本、稳定生成 | API 或模型服务 | 显存、并发、上下文长度、成本失控 |
Base Model 更像续写器,擅长补全分布中的文本;Chat / Instruction Model 在此基础上经过指令数据和偏好数据塑形,更像会跟人协作的助手。很多“模型为什么不听话”的问题,本质是没有经过足够的指令对齐。
| 变量 | 增大后通常带来什么 | 代价 | 不是万能的原因 |
|---|---|---|---|
| 参数量 | 容量增加,更能存储和组合复杂模式 | 训练 / 推理显存、通信、延迟增加 | 没有足够数据和训练,参数会被浪费 |
| 训练 tokens | 覆盖更多语言、知识、任务和风格 | 训练时间、数据治理难度、版权风险增加 | 低质量重复数据会稀释收益 |
| 计算量 | 允许更大模型、更长训练、更复杂架构 | GPU、集群、能耗和资金成本增加 | 系统效率不足会把算力浪费在通信和等待上 |
| 上下文长度 | 能读更长输入,支持长文档和长任务 | 训练和推理成本上升,KV Cache 压力变大 | 长窗口不等于会正确使用长窗口 |
Scaling Law 不是一句“越大越好”,而是提醒你:模型能力来自参数、数据和计算量的配平。参数太大但数据不够,会训练不足;数据很多但模型太小,会容量不足;算力不足则两边都跑不动。数据侧的配平还要继续落到 采样权重和 token 预算。
很多生产任务不需要最大模型。通过高质量数据、蒸馏、工具调用、RAG、模型路由和评测约束,小模型可以在特定任务上达到更低延迟、更低成本、更易部署的效果。
| 技术 | 解决的问题 | 直觉 | 副作用 |
|---|---|---|---|
| Data Parallel | 数据太多,单卡训练太慢 | 多张卡各算一批数据,再同步梯度 | 通信开销随规模上升 |
| Tensor Parallel | 单层矩阵太大 | 把矩阵乘法切到多张卡上 | 层内通信频繁 |
| Pipeline Parallel | 层数太多,单卡放不下 | 不同卡负责不同层,像流水线 | 流水线气泡导致利用率损失 |
| ZeRO / FSDP | 优化器状态和梯度占显存 | 把参数、梯度、优化器状态切片存储 | 实现复杂,通信和调参成本增加 |
| Mixed Precision | 降低显存和提升吞吐 | 用 FP16 / BF16 等低精度计算 | 数值稳定性需要额外处理 |
| Checkpointing | 故障恢复和节省激活显存 | 定期保存状态,必要时重算中间激活 | 存储和重算成本增加 |
大规模训练的目标不是“把 GPU 堆起来”这么简单,而是让计算、通信、存储和容错协同起来,尽量减少昂贵硬件的空转时间。
| 推理概念 | 说明 | 优化方向 |
|---|---|---|
| Prefill | 处理输入上下文,建立第一轮 KV Cache | Prompt 缓存、上下文压缩、减少无关输入 |
| Decode | 逐 token 生成输出,通常更受内存带宽制约 | 批处理、KV Cache 管理、量化、推测解码 |
| Batching | 把多个请求合批提高 GPU 利用率 | 动态批处理、连续批处理、队列调度 |
| Quantization | 降低权重或激活精度以节省显存 | INT8 / INT4 / GPTQ / AWQ / GGUF 等路线 |
| Speculative Decoding | 小模型起草,大模型验证 | 在质量可接受时降低生成延迟 |
| Model Routing | 不同任务分给不同模型 | 简单任务用小模型,困难任务升级大模型 |
Scaling 决策要同时记录训练实验、推理账单、质量收益和发布门禁,否则很容易把一次性能力提升换成长期成本失控。
| 证据节点 | 必须记录字段 | 用来判断什么 |
|---|---|---|
| training_run | training_run_id、model_size、token_count、compute_budget、loss_curve_id | 能力提升是否来自有效训练,而不是单次偶然实验 |
| scaling_decision | baseline_model、candidate_model、eval_slice、quality_delta、capability_boundary | 加参数、加数据、加算力是否真的改善目标任务 |
| inference_cost | input_tokens、output_tokens、ttft、p95_latency、cost_per_request | 推理阶段的持续成本和用户体验是否可接受 |
| release_gate | routing_rule_version、fallback_model、budget_guardrail、release_gate_id | 模型变大后是否有路由、预算和回滚约束 |