min_p 是什么
min_p 按当步概率峰值的比例过滤候选:只保留概率不低于「峰值 × min_p」的 token。相比固定阈值的 top_p,它能跟随每步分布形态变化——模型很确定时自动收紧候选,不确定时放宽,因此在不同长度与不同确定度的段落里表现更稳定。vLLM 与 llama.cpp 均支持该参数。
基本信息
| 作用 | 按峰值比例过滤候选 token |
|---|---|
| 取值 | 0~1 的小数,常见 0.02~0.1 |
| 对比对象 | top_p(累积概率质量) |
| 支持 | vLLM、llama.cpp 等 |
| 生效位置 | 采样流水线中,早于随机采样 |
典型使用场景
- 本地部署降低重复与跑偏,比反复调 top_p 更省事
- 模型在确定段落偶发胡言时做兜底过滤
- 与略高温度搭配,兼顾多样性与收敛性
- 长文生成中压制长尾噪声词,减少无意义插话
- 多语言或代码与自然语言混合的内容里分布形态变化大,固定 top_p 不好兼顾
两栈写法
两栈写法
# vLLM
SamplingParams(temperature=0.8, min_p=0.05)
# llama.cpp server:请求体或启动参数
# { "min_p": 0.05 } 或 --min-p 0.05
# 调整步子要小:0.05 → 0.03 → 0.02,每次用固定评测集对比三个截断参数对比
| 参数 | 过滤依据 | 特点 |
|---|---|---|
| min_p | 相对峰值比例 | 跟随分布形态 |
| top_p | 累积概率质量 | 阈值直观、易解释 |
| top_k | 候选个数 | 与分布形态无关 |
与温度配合是常见组合:温度略高保持多样性,min_p 收掉长尾噪声。调参要小步走并用固定评测集对比,不要同时动多个采样器。
各框架默认值不同:不显式指定时生效值由服务端默认与模型配置共同决定,做对比实验前先把默认值查清楚。
常见起点在 0.05 附近,再按业务评测微调;把 min_p 单独拉出来做消融,才能确认收益来自它而不是同时改过的温度。
min_p 也能与 top_k 组合:先按比例收掉长尾,再用 top_k 兜一个候选数上限,适合分布特别平缓、候选格外多的场景。