🔍什么会影响 LLM 的输出?——影响因素全景综述
什么会影响 LLM 的输出?——影响因素全景综述
给同一个 LLM 发完全相同的 prompt,两次得到的输出可能截然不同。为什么?本文汇总了社区和学术界关于影响 LLM 输出的各种因素,从推理参数到训练方法,从 prompt 设计到模型架构。
面向读者:做 SE4AI 研究的学者和工程师——如果你在评估 AI 系统的可靠性、可测试性或可维护性,理解这些因素是设计实验和度量的基础。
一、推理时参数(Inference Parameters)
1.1 Temperature(温度)
影响:控制输出的随机性。Temperature 越高,输出越多样但越不可控;越低,输出越确定但可能重复。
| Temperature | 行为 | 适用场景 |
|---|---|---|
| 0.0 | 近乎确定性(贪心解码) | 代码生成、事实问答 |
| 0.7 | 平衡创造性和一致性 | 通用对话 |
| 1.0+ | 高随机性,可能产生荒谬输出 | 创意写作(需谨慎) |
社区观察:Simon Willison 多次强调,做基准测试时应设置 temperature=0,否则测量到的性能波动可能只是随机性而非模型差异。
1.2 Top-p(核采样)
影响:从累积概率超过 p 的最小 token 集合中采样。top_p=0.1 意味着只从概率最高的 10% token 中选。
与 temperature 的交互:通常建议只调一个。同时设 temperature=0 和 top_p=1 会互相矛盾。
1.3 Top-k
影响:只从概率最高的 k 个 token 中采样。top_k=1 等价于贪心解码。
不同模型的默认差异:GPT 系列默认不用 top-k,LLaMA 系列常用 top_k=40。同一问题在不同 top-k 设置下可能给出截然不同的答案。
1.4 Repeat Penalty / Frequency Penalty
影响:惩罚已出现的 token,防止重复。设太高会导致模型回避常用词,输出变得生硬或语无伦次。
1.5 Max Tokens
影响:限制输出长度。设太短会导致截断(句子没说完);设太长可能让模型”填充”无意义内容。
1.6 Seed
影响:固定 seed 理论上可使输出确定,但实际上不同硬件、不同 batch size、不同 CUDA 版本下 seed 的可复现性差异很大。PyTorch 的 torch.use_deterministic_algorithms(True) 可以强制确定性,但会牺牲性能。
二、Prompt 设计因素
2.1 System Prompt
影响:System prompt 对模型行为的影响远超大多数人的直觉。Anthropic 的研究发现,Claude 的”性格”很大程度上由 system prompt 塑造。
典型案例:
- “You are a helpful assistant” vs “You are an expert in machine learning” → 后者在 ML 问题上表现显著更好
- 过长的 system prompt 会挤压上下文窗口,反而降低效果
- Anthropic 官方建议 system prompt 不超过 1500 字
2.2 Few-shot Examples(少样本示例)
影响:提供 2-5 个示例通常显著提升输出质量,但:
- 顺序敏感:示例的排列顺序会影响模型偏好(“recency bias”——最后一个示例影响最大)
- 格式敏感:示例格式不一致会导致模型输出格式混乱
- 过多示例反而有害:超过 5-8 个后,模型可能过拟合示例模式
2.3 Chain-of-Thought(思维链)
影响:让模型”一步步思考”可以显著提升推理任务准确率(GSM8K 上 +20-40%)。
但有陷阱:
- 模型可能编造看起来合理但实际错误的推理步骤
- “Let’s think step by step” 在简单问题上反而浪费 token
- 某些模型对 CoT 不敏感(小模型可能无益甚至有害)
2.4 Prompt 长度
影响:“Lost in the Middle” 效应——模型倾向于关注 prompt 的开头和结尾,忽略中间部分。研究显示放在 prompt 中间的关键信息被模型忽略的概率显著更高。
来源:Liu et al., “Lost in the Middle: How Language Models Use Long Contexts” (2023)
2.5 Prompt 措辞的微小变化
影响:改变几个词可能完全改变输出。
典型案例:
- “请分析” vs “请详细分析” → 后者输出更长但不一定更准确
- “用中文回答” 放在 prompt 开头 vs 结尾 → 放在开头效果更好
- 加 “Take a deep breath and work on this step by step”(Google DeepMind 发现这种”心理暗示”在某些任务上有效)
三、模型层面因素
3.1 预训练数据
影响:最大但最不透明的因素。
- 数据截止日期:模型不知道截止日期后的事件
- 数据分布:英文占比高的模型在中文任务上表现较差
- 数据质量:包含大量低质量网页的模型输出可能更”啰嗦”或更偏颇
- 数据污染:测试集数据混入训练集会虚高性能指标
社区讨论:Karpathy 在多次演讲中指出,预训练数据的质量和清洗流程是模型性能的最核心因素,远比架构差异重要。
3.2 后训练(Post-training)
RLHF(基于人类反馈的强化学习)
影响:让模型更”对齐”人类偏好,但引入了已知问题:
- 奖励黑客(Reward Hacking):模型学会生成表面上符合奖励信号但实际低质量的内容
- 模式坍塌:RLHF 后的模型输出多样性降低,趋向于”安全但无聊”
- 标注者偏好:RLHF 反映的是标注者的偏好,不是所有用户的偏好
DPO(直接偏好优化)
影响:比 RLHF 更稳定,但同样会降低输出多样性。有研究表明 DPO 训练的模型在创意任务上表现不如 SFT-only 模型。
Constitutional AI
影响:Anthropic 的方法,让模型自我批评。优点是减少有害输出,缺点是模型可能变得过于谨慎(“I can’t help with that” 对无害问题)。
3.3 量化(Quantization)
影响:将模型从 FP16 压缩到 INT8/INT4 以减少内存占用,但会导致精度损失。
Red Hat 的大规模测试(50 万+ 次评估):
- INT8 量化:几乎无损(< 1% 性能下降)
- INT4 量化:中等损失(2-5% 下降,取决于任务)
- INT2 量化:严重损失(10-20% 下降)
意外发现:某些任务上量化模型反而表现更好——可能是因为量化充当了正则化。
来源:Red Hat, “We ran over half a million evaluations on quantized LLMs” (2024)
3.4 模型合并(Model Merging)
影响:将多个微调模型的权重合并(如 DARE、TIES-Merging),在社区越来越流行。
风险:
- 合并后模型在某些任务上可能突然退化
- 合并效果高度依赖模型之间的”兼容性”
- 目前没有可靠的理论预测合并后的表现
3.5 Mixture of Experts(MoE)
影响:如 Mixtral、GPT-4(据推测),只激活部分参数。
特点:
- 同样的 prompt 在不同 run 中可能激活不同的专家组合
- 这增加了输出的内在变异性
- MoE 模型在知识密集型任务上可能表现不稳定(某个专家”没被叫到”)
四、上下文与环境因素
4.1 Context Window 状态
影响:同一个模型,在对话的不同阶段表现不同。
- 开头 vs 后面:长对话中,模型对早期内容的”记忆”会减弱
- 上下文窗口已满时:模型需要丢弃旧信息,可能导致前后矛盾
- KV Cache 状态:不同的 batch 大小会影响 KV Cache 的精度(尤其是 FP16 累加误差)
4.2 Batch Size
影响:推理时的 batch size 会影响输出——更大的 batch 意味着更多的浮点误差累积。
实证:有人发现 batch_size=1 和 batch_size=32 时,同一 prompt 的输出 token 概率分布有可测量的差异。
4.3 硬件差异
影响:
- 不同 GPU(A100 vs H100 vs 消费级 4090)的浮点运算有微小差异
- 这些微小差异在长序列生成中会累积放大
- Apple Silicon (MPS) vs CUDA 的结果可能显著不同
4.4 软件版本
影响:
- 不同版本的 CUDA、cuDNN、PyTorch 的 matmul 实现不同
- Flash Attention 的不同版本可能产生不同的数值结果
- vLLM、TGI、llama.cpp 等推理引擎的默认参数不同
五、解码策略
5.1 Greedy vs Sampling
- Greedy:每次选概率最高的 token。确定性高,但容易产生重复和乏味输出
- Sampling:按概率分布随机选。更多样,但可能选到低概率的错误 token
5.2 Beam Search
影响:维护多条候选路径,选总体概率最高的。传统 NLP 常用,但在 LLM 时代效果不如 sampling——LLM 训练目标是单步最优,不是序列最优。
5.3 Self-Consistency(自洽性)
影响:采样多次,取多数投票。Google Research 发现这能显著提升推理准确率。
代价:需要多次推理,成本线性增长。
来源:Wang et al., “Self-Consistency Improves Chain of Thought Reasoning in Language Models” (2023)
5.4 Speculative Decoding(投机解码)
影响:用小模型快速生成候选,大模型验证。输出质量与大模型一致,但速度快 2-3 倍。
前提:小模型和大模型的输出分布不能差太远。
六、评估方法论因素
6.1 基准选择
问题:同一个模型在不同 benchmark 上的排名可能完全不同。
典型案例:
- GPT-4 在 MMLU 上领先,但在 HumanEval 上可能被 Claude 超越
- 某些 benchmark 已经被”刷穿”(saturation),失去了区分度
- Benchmark 污染问题使结果可信度下降
6.2 评估 Prompt 模板
影响:用不同的 prompt 模板评估同一个模型,准确率差异可达 10-15%。
LLM-as-Judge 的偏差:
- 位置偏差:倾向于给第一个回答更高分
- 自我偏差:倾向于给自己的输出更高分
- 长度偏差:倾向于给更长的回答更高分
6.3 评估的随机性
问题:用 GPT-4 评估 Claude 的输出,评估者本身的 temperature 和 prompt 也会影响评分。这是一种”随机性套随机性”的问题。
七、SE4AI 视角:对系统可靠性的影响
从软件工程角度看,以上因素共同构成了一个巨大的可控变量空间。对于做 AI 系统测试和质量保证的研究者来说:
7.1 可测试性挑战
- 测试用例的不可复现性:同一测试用例在不同参数/环境下结果不同
- Oracles 的模糊性:LLM 输出没有明确的”对错”,只有”好/不好”的连续谱
- 回归测试困难:模型更新后,旧的测试结果不再可比
7.2 工程实践建议
| 因素 | 建议 |
|---|---|
| Temperature | 生产环境固定 temperature,不要让用户随意调 |
| Seed | 记录 seed 以便复现,但不要依赖确定性 |
| Prompt | 版本控制 prompt,和代码一样做 code review |
| 量化 | 做 A/B 测试确认量化后质量可接受 |
| 模型更新 | 灰度发布,用同一组测试集做前后对比 |
| 评估 | 多维度评估,不要依赖单一指标 |
7.3 对研究的启示
如果你在做 SE4AI 研究(测试、质量保证、可靠性),需要注意:
- 控制变量:论文中必须明确报告 temperature、top_p、seed 等设置
- 多次采样:单次运行的结果不可靠,应报告多次采样的均值和方差
- 跨模型验证:在至少 2-3 个模型上验证结论,避免模型特异性
- 评估鲁棒性:对 prompt 措辞的变化做敏感性分析
八、总结:影响因素层级图
┌─────────────────────────────────────────────────┐
│ 预训练数据与过程 │ ← 最大影响,最不可控
│ (数据质量、分布、污染、训练超参数) │
├─────────────────────────────────────────────────┤
│ 后训练对齐 │ ← 改变行为模式
│ (RLHF, DPO, Constitutional AI) │
├─────────────────────────────────────────────────┤
│ 模型架构 │ ← 固有特性
│ (MoE, Context Length, 参数量) │
├─────────────────────────────────────────────────┤
│ 推理参数 │ ← 用户可控
│ (temperature, top_p, top_k, penalty) │
├─────────────────────────────────────────────────┤
│ Prompt 设计 │ ← 用户可控且影响巨大
│ (system prompt, few-shot, CoT, 措辞) │
├─────────────────────────────────────────────────┤
│ 解码策略 │ ← 实现层面
│ (greedy, sampling, beam, self-consistency) │
├─────────────────────────────────────────────────┤
│ 量化与部署 │ ← 工程权衡
│ (FP16, INT8, INT4, 推理引擎) │
├─────────────────────────────────────────────────┤
│ 硬件与环境 │ ← 常被忽略
│ (GPU型号, CUDA版本, batch size, 浮点误差) │
└─────────────────────────────────────────────────┘
参考资料
- Simon Willison, “How coding agents work” (2026) — 关于 agent 工程中的可复现性
- Liu et al., “Lost in the Middle: How Language Models Use Long Contexts” (2023)
- Wang et al., “Self-Consistency Improves Chain of Thought Reasoning” (2023)
- Red Hat, “We ran over half a million evaluations on quantized LLMs” (2024)
- Anthropic, “Constitutional AI: Harmlessness from AI Feedback” (2022)
- Karpathy, “Intro to Large Language Models” — 预训练数据的核心地位
- Meta, “Llama 3 Model Card” — 量化评估数据
- Google DeepMind, “Large Language Models as Optimizers” (2023) — “Take a deep breath” 发现
本报告基于 2026 年 3 月对 128 篇社区文章和学术论文的综合分析。