vLLM、歪みのないGumbel-Max透かしを導入
TL;DR
vLLMは、秘密鍵由来の信号をトークン選択に埋め込むGumbel-maxアルゴリズムを使用した歪みのない透かしをサポートするようになりました。これにより、スループットや出力品質に実質的に影響を与えることなく、信頼性の高い出所検出が可能になります。
テキストの出所が重要な理由
生成テキストの出所を確立することは、信頼と説明責任のために不可欠です。画像や音声に対する従来の透かし手法は、テキストが離散的であるため直接適用できません。その代わりに、vLLMは生成プロセス自体に影響を与え、期待される出力分布を変更せずに検出可能なパターンを作り出します。
実用的なテキスト透かしのための核となる要件
- 非歪み: 透かしは、モデルを特定の単語、スタイル、または解決策に偏らせてはなりません。
- 堅牢性: 信号は、一般的な編集、切り詰め、他のLLMによる言い換えを生き残る必要があります。
- 速度: 高スループットのサービングには、最小限の追加レイテンシとメモリオーバーヘッドが必要です。
- 最小限の検出依存関係: 検出は、テキスト、トークナイザー、秘密鍵のみに依存し、追加のメタデータを必要としないようにする必要があります。
これらの基準はしばしば相反します。より強力で検出しやすい信号は歪みを増加させる可能性があり、追加情報を避けることはアルゴリズムの選択肢を制限します。
Gumbel-Maxトリックによるランダム性の活用
各ステップで、言語モデルはカテゴリ分布からトークンをサンプリングします。Gumbel-maxトリックは、ロジットにGumbel分布のノイズを加え、argmaxを選択します。これにより、ノイズを決定的に生成しながら、元の分布を正確に再現します。
鍵付き擬似ランダムノイズ
vLLMは、独立した一様分布のサンプル (u) を、3つの入力を持つ擬似ランダム関数(PRF)に置き換えます:
- 秘密の透かし鍵 (k)、
- 最近の透かしコンテキスト(デフォルト:最後の4トークン)、
- 候補トークンID。
PRFは、Gumbelノイズに変換される一様値を出力します。同じコンテキストと鍵が最終テキストに現れるため、検出器は生成中に使用された正確なノイズ値を再構築できます。
非歪みの保証
鍵に関する期待値として、任意のトークン (t) を選択する確率は、元の確率 (p_t) と正確に一致します。経験的には、Qwen3.5-27Bでの品質ベンチマークは無視できる差を示しています(例:GSM8K 93.0% vs 94.2%)。
検出手順
検出は生成プロセスを逆にたどります:
- 未知のテキストをトークン化します。
- 各トークンについて、前のコンテキストと秘密鍵を使用して鍵付きPRF値を再計算します。
- 各値をトークンレベルのスコアに変換します。スコアが大きいほど、透かしとの整合性が高いことを示します。
- スコアを合計します。帰無仮説(透かしなし)の下では、合計は形状 (k) がスコアリングされたトークン数に等しく、尺度 (\theta = 1) のガンマ分布 (\Gamma(k,\theta)) に従います。
- 片側p値を計算します。低いp値(例:<0.01)は透かしの存在を示します。
複数鍵または複数トークナイザーのテストには、多重検定の補正が必要であり、これにより検出しきい値が上がり、検出力が低下します。
経験的検出力
- クリエイティブライティングでは、約100トークン後にほぼ100%の真陽性率(TPR)に達します。
- コード生成ベンチマーク(MBPP)では、単一鍵テストで400トークンで約69%のTPRを達成し、候補鍵が増えると低下します。
vLLMのサンプリングパイプラインへの統合
透かしロジックは、Model Runner v2のGPUサンプラーに組み込まれています:
GPUWatermarkSamplerはWatermarker実装に委譲します。- 融合GPUカーネルがPRF生成、Gumbel変換、argmaxリダクションを組み合わせ、完全な ([batch, vocab]) ノイズテンソルを回避します。
- Philoxは呼び出しごとに4つのPRF値を生成し、4つの連続するトークンIDを一緒に処理します。
- 行ごとのマスクにより、透かしありとなしのリクエストの混合バッチが可能になります。
スループットへの影響
単一のH100(Qwen3.5-27B、MTP-3)でバッチサイズ1〜256にわたって、透かしありとなしのスループット曲線は重なります。平均マッチングスループットの変化は-1.1%から+2.0%の範囲で、統計的に有意な減速はありません。
投機的デコードの処理
投機的デコードは、高速モデルからドラフトトークンを提案し、ターゲット分布に対してそれらを受け入れます。両方の分布に同じ透かしを適用すると、受け入れ率が低下します。vLLMはこれをデュアルキースキームで解決します:
- ドラフトトークン用の鍵 (k_d)。
- ターゲット残差およびボーナストークン用の鍵 (k_t)。 最終テキストには、どちらかの鍵で透かしされたトークンが含まれる可能性があるため、検出では両方の鍵からのスコアを組み合わせます。これにより受け入れ率の低下は緩和されますが、全体的な検出信号は薄まります。
出力の多様性の維持
固定鍵を使用すると、繰り返されるコンテキストが同一のPRF値を生成し、繰り返しループ(例:「1 + 1 + 1 + …」)につながる可能性があります。これを防ぐために、vLLMは生成時コンテキスト重複排除を実装しています:
- コンテキストが繰り返される場合、そのステップでは透かしがスキップされます。
- これにより、単一シーケンスの非歪みが回復し、Qwen3.5-27Bで0.19%未満のオーバーヘッドが追加されます。 デュアルキールーティングはまた、繰り返しを減らすランダム性を導入し、投機的デコードなしでもランダム鍵選択を使用できます。
はじめに
vLLMサーバーを起動するときにGumbel-max透かしを有効にします:
vllm serve mistralai/Mistral-7B-Instruct-v0.3 \
--watermark-config '{"algorithm":"gumbel","key":42}'
リポジトリには最小限のHTTP検出サーバーが提供されています。完全な構成の詳細については、公式ドキュメントを参照してください。
結論
vLLMの新しい透かし機能は、鍵付きGumbel-maxプロセスを使用して、トークンサンプリングに直接出所信号を埋め込みます。期待値として非歪みを保証し、無視できるレイテンシを追加し、デュアルキー設計による投機的デコードをサポートし、出力の多様性を維持するためのセーフガード(コンテキスト重複排除)を含みます。
参考文献
- Ingemar J. Cox et al., Digital Watermarking and Steganography, 2nd ed., Morgan Kaufmann, 2008.
- S. Dathathri et al., “Scalable watermarking for identifying large language model outputs,” Nature 634, 2024.
- J. Kirchenbauer et al., “A Watermark for Large Language Models,” Proceedings of the 40th International Conference on Machine Learning, 2023.
- S. Aaronson & H. Kirchner, “Watermarking GPT outputs,” 2023.
- T. Sander et al., “TextSeal: A Localized LLM Watermark for Provenance & Distillation Protection,” arXiv:2605.12456, 2026.
Sources
- OriginalWatermarking in vLLM