动手学大模型:模型水印

导读: 该部分介绍语言模型的水印

在语言模型生成的内容中嵌入人类无法察觉,但却可以被算法检测的到的“水印”。

本教程目标

  1. 水印嵌入:在语言模型生成内容时嵌入水印
  2. 水印检测:检测给定文本的水印强度
  3. 水印评估:评估水印方法的检测性能
  4. 评估水印的鲁棒性(可选)

准备工作

2.1 了解X-SIR代码仓库

https://github.com/zwhe99/X-SIR

X-SIR仓库包含以下内容的实现

img

2.2 环境准备

git clone https://github.com/zwhe99/X-SIR && cd X-SIR
conda create -n xsir python==3.10.10
conda activate xsir
pip3 install -r requirements.txt
# [optional] pip3 install flash-attn==2.3.3

requirements.txt里的版本均为建议版本,并非强制要求。

实操案例

使用KGW算法在语言模型生成内容中嵌入水印

3.1 数据准备

将待输入给语言模型的提示(prompt)组织成jsonl文件:

{"prompt": "Ghost of Emmett Till: Based on Real Life Events "}
{"prompt": "Antique Cambridge Glass Pink Decagon Console Bowl Engraved Gold Highlights\n"}
{"prompt": "2009 > Information And Communication Technology Index statistics - Countries "}
......

3.2 水印嵌入

3.3 水印检测

水印检测即给定一段文本,计算该段文本的水印强度(z-score)。

3.4 水印评估

img

评估水印的鲁棒性(可选)

对水印文本进行paraphrase和translation攻击后,重新评估其检测效果

4.1 准备工作

我们使用gpt-3.5-turbo-1106模型对水印文本进行paraphrase和translation。也可以自行选择其它工具。

4.2 进行攻击(以翻译为例)

进阶练习