论文

符号分支重复惩罚中的规范依赖性和结构化输出损坏:跨模型、推理堆栈和替代重复控制的测量

Gauge dependence and structured-output corruption in sign-branched repetition penalties: measurements across models, inference stacks, and alternative repetition controls

模型推理解码与生成控制

摘要

LLM 推理生态系统(HuggingFace、vLLM、llama$.$cpp 和十几个其他引擎)中的乘法重复惩罚在每个原始 logits 的符号上分支(正数除以 θ,乘以负数)。但是,通过向每个 logits 添加一个常数,softmax 不会发生变化,因此模型的 logits 零点是任意的(规范选择),符号分支会读取它。接下来是两个可衡量的后果。 (1) 惩罚没有明确定义:通过常数重新居中模型的 logits 在 theta=1 时是可证明的无操作,但在例程 theta=1.3 时,它会改变 58-96% 的贪婪标记,而减法和标准化惩罚不会改变任何结果;真正的检查点位于截然不同的零点,因此固定的repeatation_penalty在每个模型上都是不同的操作。 (2) 它破坏了结构化输出:在 200 个现实世界的 JSON 模式中,theta=1.3 使有效、符合模式的输出率从 97% 下降到 23%。将惩罚应用于归一化对数概率而不是原始 logits 通过构造消除了规范依赖性; HuggingFace 的波束搜索至少从 v4.0.0 开始就将其处理器链(包括惩罚)应用于对数概率,因此repetition_penalty 已经根据解码策略命名了两个不同的运算符。因为相等的 theta 并不是两个算子的强度相等,所以我们还在匹配抑制上对它们进行比较,通过搜索对每个模型进行校准:归一化算子在统计上在测量的任何质量指标上都没有更差,但在七个模型中的四个上,它无法与原始算子在 theta >= 1.15 时的抑制相匹配,而在七个模型中的六个上,在 theta=1.3(测量损坏的设置)下。本说明给出了机制、测量结果(五个模型直至 7B;两个代码模型;两种效果通过其自己的采样器在 vLLM 和 llama$.$cpp 内复制)、每个模型的校准图和归一化变体。