水印这件事,vLLM 选择把它塞进采样管线最核心的位置。官方博客确认,基于 Gumbel-max 算法的无失真水印已经并入 Model Runner v2,相关实现由 PR #54053、#56122、#56233 三次提交落地。
无失真的意思是,水印不改动模型原本的概率分布,只在采样时用 Gumbel 噪声做确定性扰动来编码信号:人读不出痕迹,下游模型也察觉不到,而持有密钥的一方可以用统计检验把它捞出来。真正难的不是算法,是别把推理性能拖下水。vLLM 的做法是融合 GPU kernel,把水印逻辑压进采样算子,省掉额外的访存往返;双键方案让密钥管理与检出更稳;上下文去重则压掉重复文本造成的信号衰减。更关键的是它与投机解码兼容——在低延迟的生产环境里,这几乎是启用水印的前置条件。输出多样性也保住了,不必再在水印强度和生成质量之间二选一。
对做推理服务的人来说,判断标准很实在。要在对外 API 上做内容溯源、区分机器生成与人工改写,或者满足监管侧的标识要求,现在多了一个不必自己改采样器的选项。但水印检出依赖密钥和足够长的文本,短回答上的可靠性天然有限,这是所有水印方案的共同边界。官方随 PR 给出的实测吞吐数据,才决定它在你的机器上能不能真开起来——算法优雅是一回事,每 token 多花的那点时间能不能接受,是另一回事。

