在 AI 模型训练中大规模使用开源代码的背景下,GPL 等 copyleft 许可的传播问题备受争议。正如 Shuji Sado 在其博客中指出,“GPL propagates to AI models trained on GPL code”的理论虽未被完全确立,但 Copilot 集体诉讼中开源许可违反指控仍存活,GEMA v. OpenAI 判决将模型内“记忆”视为版权复制,进一步为许可传播提供了理论基础。这种不确定性要求模型提供者主动实施可验证的合规机制,避免潜在诉讼风险。
GPL 传播问题的工程化挑战
传统 GPL 要求衍生作品必须以相同许可发布,但 AI 模型权重是否构成“衍生作品”?技术上,模型参数是训练数据的统计抽象,并非直接复制 GPL 代码;法律上,模型是否“包含” GPL 代码片段仍无共识。Copilot 案中,法院允许针对许可违反的禁令救济请求继续,但未强制模型开源。GEMA 案确认模型可“固定”作品表达,但限于极端记忆案例。
为强制执行 copyleft,需在模型中嵌入 verifiable GPL metadata。这种 metadata 须robust 对抗 fine-tuning 和 distillation,确保下游模型继承许可信息。通过 training-time token injection,可将 GPL notice(如“此模型包含 GPL 代码衍生,必须 GPL 发布”)编码为特殊 tokens,注入训练数据,使模型权重隐含该信息。
令牌注入嵌入方案
核心思路:在预训练或 SFT 数据中,针对 GPL 代码样本,附加特殊序列:
-
Token 设计:定义不可见/低频 tokens,如 <GPL_NOTICE>此模型训练于 GPL v3 代码,受 copyleft 约束,必须提供源代码并 GPL 发布。权重哈希: [SHA256]</GPL_NOTICE>。使用 BPE tokenizer 添加这些 tokens,避免污染正常词汇表。
-
注入策略:
- 频率:0.1%-0.5% GPL 数据样本注入,避免过拟合。公式:inject_rate = min(0.005, gpl_ratio * 0.1)。
- 位置:代码末尾或注释中注入,模拟自然 license header。
- Loss 加权:注入样本 loss_weight = 2.0-5.0,确保模型优先学习 metadata。
伪代码实现(基于 Hugging Face Transformers):
def inject_gpl_metadata(dataset, tokenizer):
gpl_notice = "<GPL_NOTICE>此模型包含 GPL 代码衍生,必须 GPL v3 发布。审计哈希: {} </GPL_NOTICE>".format(hash_weights())
for sample in dataset:
if is_gpl(sample):
sample['text'] += gpl_notice
sample['loss_weight'] = 3.0
return dataset
model = AutoModelForCausalLM.from_pretrained(base_model)
trainer = Trainer(model, train_dataset=inject_gpl_metadata(dataset, tokenizer))
trainer.train()
此方案利用 transformer 的注意力机制,使 metadata 在权重中“水印化”,模型倾向在 GPL-related prompt 下输出 notice。
蒸馏传播检查
Distillation(知识蒸馏)常用于压缩模型,学生模型模仿教师输出概率分布。需验证 GPL metadata 是否传播:
- Probe 测试:输入“提取 GPL license info”或 GPL prompt,检查输出是否包含 notice。阈值:相似度 > 0.8 (BERTScore)。
- KL 散度检查:比较教师/学生在 GPL prompt 上的 logit 分布。若 KL < 0.1,确认传播。
- 参数:
| 检查项 |
阈值 |
工具 |
| Notice 提取准确率 |
>95% |
Prompt probe |
| Distillation KL |
<0.05 |
Torch KLDivLoss |
| Watermark 鲁棒性 |
Survive 10% fine-tune |
Adversarial test |
GINSEW 等 watermarking 研究证实,注入概率信号可检测 distillation,mAP 提升 19-29 分。
合规审计清单
落地时,按以下清单审计:
- 训练前:扫描数据集 GPL 比例 >1%?注入 metadata。
- 训练后:Probe 1000 GPL prompts,验证 notice 输出率 >90%。
- Distillation:学生模型继承检查,失败则回滚教师。
- 发布:模型卡中声明“GPL metadata embedded,copyleft enforced”。
- 监控:下游 fork probe 频率,每季度审计。
回滚策略:若 watermark 丢失,隔离 GPL 数据重训子模块。
风险与局限
- 鲁棒性:高强度 fine-tune 可淡化 watermark,需 adversarial training 强化(extra 5% compute)。
- 法律效力:嵌入 metadata 增强证据,但法院是否认可“技术证明 copyleft”不确定。
- 开销:注入增加 2-5% 训练时间,可并行优化。
此方案提供可操作路径,确保 GPL 在 AI 生态传播,即使法律未定,也主动合规。
资料来源:
(正文约 1200 字)