在 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): # 检查 license
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 生态传播,即使法律未定,也主动合规。
资料来源:
- Shuji Sado, "The Current State of the Theory that GPL Propagates to AI Models Trained on GPL Code" (2025), https://shujisado.org/2025/11/27/gpl-propagates-to-ai-models-trained-on-gpl-code/
- GINSEW: Protecting Language Generation Models via Invisible Watermarking (2024)
(正文约 1200 字)