# 工程与研究结合的重要性 大模型领域有一个非常典型的“断层”: - 研究侧容易停留在:公式、论文指标、SOTA 结论 - 工程侧容易停留在:代码能跑、吞吐够用、线上不崩 但在 LLM/MLLM 里,这两者必须强绑定:**很多看起来是“模型问题”的失败,本质是系统问题;很多看起来是“系统问题”的瓶颈,本质是建模假设与目标函数问题。** 本章给出一套可复用的方法论:用工程约束反推研究问题,用研究抽象指导工程拆解。 --- ## 为什么大模型更需要“工程 × 研究”闭环? ### 1) 成本巨大:你无法靠试错“碰出来” 训练一次模型的成本(数据/算力/时间/人力)很高。如果没有研究层的抽象(问题定义、变量控制、有效评测),工程迭代会退化成“调参玄学”。 ### 2) 失败模式多:指标提升并不等于可用 典型例子: - 生成更流畅,但事实性更差(幻觉更严重) - benchmark 提升,但线上 domain shift 下崩溃 - 多模态回答更长,但引用证据更少(不可审计) 研究侧要回答“为什么”,工程侧要回答“如何控制与验证”。 ### 3) 系统即模型:推理栈会改变模型行为 推理阶段的很多工程决策会直接改变模型输出: - decoding 策略(温度、top-p、beam) - 上下文组织(RAG、摘要、记忆) - KV cache、量化带来的数值误差 - 工具调用与权限边界 这意味着:**模型的“最终能力”不是 checkpoint 的属性,而是系统组合的属性。** --- ## 一个可落地的工作流:把“研究问题”工程化 推荐把任何新方向按以下步骤推进: ### 1) 明确问题定义(Definition) - 输入是什么?输出是什么? - 目标函数是什么?可否近似? - 约束是什么?(安全、合规、时延、成本、可审计) ### 2) 明确评测与失败标准(Evaluation) - 离线评测指标是否与线上目标一致? - 是否有“可验证”指标(结构化、可执行、引用证据)? - 失败是否可定义(拒答/降级/回滚)? ### 3) 拆解成系统闭环(System Loop) 把系统拆成:观察 → 计划 → 行动 → 校验 → 记忆 → 监控 → 数据闭环。 在这个闭环里,模型只负责它擅长的部分;硬约束与审计放在系统层。 --- ## 常见误区(非常容易踩坑) ### 误区 1:把“不可验证”的任务当作监督学习 如果标签本身不稳定、reward 不可定义、或者存在强混杂(如医疗决策),端到端学习往往不是“效果差”,而是“问题定义不成立”。 (你在 `posts/end2end_medical_model.md` 已经给了一个非常典型的案例。) ### 误区 2:只追单一指标,忽略行为约束 例如只追 BLEU/CIDEr/Win-rate,但不约束: - 引用证据 - 格式与结构 - 越权与敏感输出 结果是:指标上去了,系统不可控。 ### 误区 3:把推理性能当作“部署后再优化” LLM/MLLM 的推理瓶颈(KV cache、带宽、batching、量化误差)会反过来限制你能用的上下文与策略,从而改变最终效果。正确做法是:**从第一天就把 P95/P99、成本与可观测性放进设计。** --- ## 工程视角的“严谨性”:你需要哪些证据? 当你说“这个方法有效”,最好能回答: - **归因**:是数据变了?目标函数变了?还是推理策略变了? - **稳定性**:不同 seed、不同 prompt 分布、不同长度下是否稳定? - **可解释**:失败时能否定位到:数据/模型/推理/系统哪一层? - **可复现**:能否用固定配置在另一台机器/另一套环境复现? --- ## 最小工程清单(建议作为章节/项目模板) - **配置管理**:训练/推理配置可追溯(版本、超参、数据 hash) - **评测集治理**:防泄漏、覆盖关键场景、定期更新 - **在线监控**:时延、token/s、OOM、拒答率、幻觉指标(如引用缺失) - **安全策略**:权限、敏感过滤、关键动作确认 - **数据闭环**:线上失败样本自动收集→标注/规则→再训练/再评测 --- ## 本章小结 - 在大模型里,“系统设计”与“模型方法”是同一个问题的两种表述。 - 研究给你抽象与可控变量,工程给你约束、证据链与可迭代闭环。 - 任何章节/项目都应围绕:问题定义、评测标准、系统闭环与失败可控性来构建。