2026 年 9 月 24 日,vLLM 官方博客介绍了一项新能力:基于 Gumbel-max 技巧的文本水印。简单说,就是在模型生成文本时打上肉眼不可见的隐形标记,事后凭密钥能检测出"这段文字是 AI 生成的",而标记本身不改变模型的输出分布。实测数据很亮眼:加上水印后,模型在 GSM8K、MBPP、IFEval 上的得分与原来基本持平,推理吞吐的影响也在上下 2% 以内——给 AI 文本"验明正身",几乎不花代价。
水印是怎么打进去的
先理解模型是怎么"随机"写字的:每生成一个 token,模型会给每个候选词打分,再按概率随机采样。Gumbel-max 技巧的做法是,给每个候选的分数加上一份 Gumbel 噪声,再取最大值——数学上可以证明,这样选出来的分布和普通随机采样完全一致。
水印的机关藏在噪声里:噪声不是真随机,而是用"密钥 + 最近 4 个 token"通过伪随机函数算出来的。同样的上下文永远算出同样的噪声,没有密钥的人看来,这和普通随机采样毫无区别;有密钥的检测器却能重算出每个位置的噪声值,把"水印偏好"的累积打分算出来,再和未水印文本的统计分布一比,得到一个 p 值。文本越长、信息熵越高的位置越多,信号就越强,创意写作约 100 个 token 就能接近 100% 检出率。
加了水印,质量和速度掉吗
这是大家最关心的问题,官方给了实测数。在 Qwen3.5-27B 上对比"双密钥水印"和"无水印":GSM8K 93.0% 对 94.2%、MBPP 79.2% 对 77.2%、IFEval 90.7% 对 91.9%,误差棒大面积重叠——单看分数,分不出加没加水印。
速度也没拖后腿。vLLM 把伪随机数生成、Gumbel 变换和取最大融合成了一个 GPU kernel,一次处理四个 token;实测解码吞吐变化在 -1.1% 到 +2.0% 之间,没有系统性变慢。两个难啃的工程问题也解决了:推测解码场景下用双密钥保住草稿接受率;用"上下文去重"避免重复上下文导致输出多样性下降,这项检查最多带来 0.19% 的吞吐损耗。
谁用得上,有什么边界
最直接的受益者是自己部署、对外提供大模型服务的团队:合规留痕、平台内容标识、教育场景里识别代写,都有了开箱即用的手段。vLLM 本就是主流开源推理引擎,官方博客还给了 RFC 和 PR 链接,社区可以直接跟进实现。
边界也要说清楚:检测需要密钥和分词器,不是谁都能验;短文本信号弱,改写、混入其他语料会削弱水印;水印只能证明"这段文字出自某次带水印的生成",证明不了内容为真。把它理解成 AI 文本的"防伪底纹"更准确——能验明出处,但别指望它顺带验明对错。