LLM推理参数
1. 一、 控制随机性与创造力 (Randomness & Creativity)
Section titled “1. 一、 控制随机性与创造力 (Randomness & Creativity)”这三个参数(Temperature, Top_p, Top_k)决定了模型如何选择下一个 token(字/词)。
1.1. Temperature (温度)
Section titled “1.1. Temperature (温度)”- 定义: 控制模型预测概率分布的平滑程度。
- 通俗理解: “创造力旋钮” 或 “胆量值”。
- 取值范围: 通常是 0 到 2(不同模型略有不同)。
- 0 (或极低): 贪婪采样(Greedy Sampling)。模型总是选择概率最高的那个词。输出非常 确定、死板、重复,适合代码生成、数学解题。
- 较低 (0.1 - 0.5): 严谨,适合事实性问答、摘要。
- 中等 (0.7 - 0.8): 默认值,平衡了连贯性和创造性。
- 较高 (1.0 - 2.0): 增加随机性,模型会选择一些“不那么可能”的词。适合创意写作、头脑风暴,但容易出现幻觉或胡言乱语。
1.2. Top_p (Nucleus Sampling / 核采样)
Section titled “1.2. Top_p (Nucleus Sampling / 核采样)”- 定义: 模型不看所有可能的词,而是只从累积概率达到 $P$ 的前几个词中进行选择。
- 通俗理解: “智能候选池”。
- 工作原理: 假设 $Top_p = 0.9$。模型会将所有可能的下一个词按概率排序,然后从高到低加起来,直到总概率达到 90%。它只在这 90% 的词里随机选,把剩下那 10% 概率极低、极不通顺的词直接切掉。
- 作用: 相比 Temperature,它能更稳健地剔除完全不靠谱的词,同时保留语言的多样性。
- 建议: 一般建议 Temperature 和 Top_p 只调其中一个,不要同时大幅调整。
1.3. Top_k
Section titled “1.3. Top_k”- 定义: 无论概率如何,只从概率最高的 $K$ 个词中进行选择。
- 通俗理解: “硬性入围名单”。
- 工作原理: 如果 $Top_k = 40$,模型只看概率榜单前 40 名的词,第 41 名即使概率只差一点点也会被无视。
- 特点: Gemini 和一些开源模型很喜欢用这个参数。它能有效防止模型生成极度生僻或离谱的词,使输出更聚焦。
- 优先级: 通常先生效 Top_k(筛选前 N 名),再生效 Top_p(在 N 名里选累积概率),最后应用 Temperature。
2. 二、 控制长度与停止 (Length & Stopping)
Section titled “2. 二、 控制长度与停止 (Length & Stopping)”2.1. Max Output Tokens (最大输出 Token 数)
Section titled “2.1. Max Output Tokens (最大输出 Token 数)”- 定义: 限制模型一次回复生成的最大长度。
- 作用:
- 省钱: 防止模型废话连篇消耗额度。
- 强制简洁: 强迫模型在有限字数内说完。
- 注意: 如果设置太短(如 50),模型的话可能会被强行截断(话说一半)。
2.2. Stop Sequences (停止序列)
Section titled “2.2. Stop Sequences (停止序列)”- 定义: 告诉模型“遇到这些字符就立刻闭嘴”。
- 应用场景:
- 角色扮演: 防止模型扮演用户。设置
["User:", "Human:"]为停止词。 - 格式控制: 生成 JSON 时,可以设置
}为停止词(虽然现在有 JSON Mode 了)。
- 角色扮演: 防止模型扮演用户。设置
3. 三、 控制重复度 (Repetition Control)
Section titled “3. 三、 控制重复度 (Repetition Control)”这两个参数用于防止模型像复读机一样重复某句话或某个词。
3.1. Frequency Penalty (频率惩罚)
Section titled “3.1. Frequency Penalty (频率惩罚)”- 定义: 根据一个词 已经出现的次数 来惩罚它。
- 作用: 次数越多,惩罚越重。这会降低模型逐字重复同一句话的可能性。
- 适用: 防止模型陷入“复读机死循环”。
3.2. Presence Penalty (存在惩罚)
Section titled “3.2. Presence Penalty (存在惩罚)”- 定义: 只要一个词 出现过(哪怕只有一次),就惩罚它。
- 作用: 鼓励模型使用 新词,转换话题,而不是总是围绕同一个主题兜圈子。
- 适用: 创意写作,或者要求模型从不同角度论述。
4. 四、 其他高级参数
Section titled “4. 四、 其他高级参数”4.1. Seed (种子)
Section titled “4.1. Seed (种子)”- 作用: 尝试让输出 可复现。
- 原理: 计算机的随机数是伪随机的。如果你固定 Seed 值(例如
12345)并保持其他参数不变,模型(理论上)每次应该生成完全相同的文本。这对于测试和调试非常有用。
4.2. System Instruction / System Prompt (系统提示词)
Section titled “4.2. System Instruction / System Prompt (系统提示词)”- 作用: 设定模型的“人设”、“岗位职责”或“底层规则”。
- 位置: 在用户对话之前输入,权重通常很高。
- 例子: “你是一个资深的 Python 程序员,只输出代码,不解释。”
4.3. Logit Bias (对数偏差)
Section titled “4.3. Logit Bias (对数偏差)”- 作用: 手动干预特定 Token 的出现概率。
- 用法: 你可以指定某个词的得分为 -100(绝对禁止它出现)或 +100(强制它出现)。
- 场景: 严格的关键词过滤或强制包含。
4.4. 总结:参数速查表
Section titled “4.4. 总结:参数速查表”| 如果你想要… | 调整建议 |
|---|---|
| 精确的数学/代码答案 | Temperature = 0, Top_p = 0.1 |
| 标准的文案/客服回复 | Temperature = 0.7, Top_p = 0.9 |
| 天马行空的创意故事 | Temperature = 1.2, Presence Penalty > 0 |
| 防止模型车轱辘话 | Frequency Penalty > 0.5 |
| 防止模型废话太多 | Max Output Tokens 调小 |
| 稳定的测试结果 | 固定 Seed 值 |