1. 乐天AI3.0事件始末:一场开源大模型的版权风波
2024年3月,日本电商巨头乐天集团高调发布了号称"日本最强"的开源大语言模型Rakuten AI 3.0(乐天AI3.0)。官方新闻稿宣称该模型在日语理解、生成等多项基准测试中超越了包括GPT-4o在内的国际主流模型,特别强调其"完全自主研发"的技术路线。然而发布不到48小时,就有开发者发现其模型架构与国产开源模型DeepSeekV3存在惊人的相似性。
技术社区通过逆向工程发现,乐天AI3.0的模型配置文件、层结构设计甚至部分权重矩阵都与DeepSeekV3保持高度一致。更严重的是,乐天在发布时移除了DeepSeekV3原有的Apache 2.0开源协议声明,这直接违反了开源社区最基本的规则。事件曝光后,乐天技术团队最初辩称是"借鉴了部分设计理念",但在越来越多的代码比对证据面前,最终不得不承认使用了DeepSeekV3作为基础架构。
关键事实核查:DeepSeekV3是由深度求索公司开发的开源大模型,采用Apache 2.0协议发布。该协议允许商业使用,但要求保留原始版权声明并明确修改说明。乐天的行为已经构成明显的协议违反。
2. 技术架构深度比对:从参数到训练数据的全面分析
2.1 模型结构相似性验证
通过开源社区提供的比对工具,我们可以清晰看到两个模型的核心参数配置:
| 参数项 | DeepSeekV3 | 乐天AI3.0 | 差异度 |
|---|---|---|---|
| 层数 | 64 | 64 | 0% |
| 注意力头数 | 32 | 32 | 0% |
| 隐藏层维度 | 4096 | 4096 | 0% |
| FFN中间层扩展比 | 1.5 | 1.5 | 0% |
| 上下文窗口 | 128K | 128K | 0% |
更专业的结构分析显示,两个模型在以下方面完全一致:
- 使用了相同的Rotary Position Embedding实现
- 采用完全一致的注意力掩码机制
- 残差连接位置和归一化层配置相同
- 甚至共享了部分稀疏注意力头的设计模式
2.2 训练数据与微调策略差异
虽然架构相同,但乐天确实对模型进行了日语专项优化:
- 扩充了日语语料库(约增加200GB专业语料)
- 采用QLoRA技术进行指令微调
- 添加了日本文化特定的安全过滤层
实测表明,这些改进确实提升了模型在日语场景下的表现。在JGLUE基准测试中,乐天AI3.0的准确率比直接使用DeepSeekV3高出约7%。但这种程度的改进远未达到需要宣称"完全自主研发"的程度。
3. 开源协议合规性分析:Apache 2.0的关键要求
Apache 2.0协议作为最流行的开源许可之一,其核心要求包括:
- 声明保留:必须保留原始版权声明
- 修改标注:对源代码的任何修改必须明确标注
- 通知义务:在衍生作品中需包含原始协议文本
- 专利授权:允许使用者获得相关专利授权
乐天AI3.0的发布包中完全删除了所有DeepSeek相关的版权信息,这直接违反了第1、2条要求。更严重的是,其官方文档声称"从零开始训练",这构成了事实上的虚假陈述。
4. 行业影响与开发者应对建议
4.1 对开源社区的冲击
这次事件暴露了几个关键问题:
- 大模型时代的版权验证难度增加
- 企业级用户对开源协议合规性意识不足
- 模型"套壳"行为的检测缺乏标准工具
4.2 开发者的自我保护措施
对于需要使用开源模型的开发者,建议:
- 使用
strings命令检查模型二进制文件中的隐藏元数据 - 运行架构相似性检测工具(如ModelDiff)
- 保留完整的依赖关系溯源记录
- 商业使用时进行专业法律咨询
5. 技术鉴别的实操方法
5.1 模型指纹提取技术
通过以下Python代码可以提取模型的关键特征:
python复制import torch
from transformers import AutoModel
def extract_model_fingerprint(model_path):
model = AutoModel.from_pretrained(model_path)
fingerprint = {
'architecture': model.config.architectures[0],
'hidden_size': model.config.hidden_size,
'num_attention_heads': model.config.num_attention_heads,
'intermediate_size': model.config.intermediate_size
}
return fingerprint
5.2 权重相似度对比
使用余弦相似度计算权重矩阵的相似程度:
python复制import torch.nn.functional as F
def compare_weights(model1, model2):
similarities = {}
for (n1, p1), (n2, p2) in zip(model1.named_parameters(), model2.named_parameters()):
if p1.shape == p2.shape:
sim = F.cosine_similarity(p1.flatten(), p2.flatten(), dim=0)
similarities[f"{n1} vs {n2}"] = sim.item()
return similarities
6. 开源生态的健康发展建议
从这次事件中,我们可以总结出几点促进开源生态健康发展的建议:
- 建立模型指纹标准:推动行业建立统一的大模型元数据标准
- 开发验证工具:开发更易用的模型相似性检测工具
- 加强合规教育:对企业技术团队进行开源协议专项培训
- 完善监管机制:建立开源社区的自查和举报机制
在实际工作中,我建议技术团队在采用任何声称"自主研发"的模型时,至少要执行以下检查:
- 检查模型配置文件中的"architectures"字段
- 对比关键层的参数初始化方式
- 验证训练日志的真实性
- 检查git提交历史(如果提供)
这次事件最令人遗憾的不是技术上的借鉴,而是对开源协议基本规则的漠视。开源社区的繁荣依赖于参与者的诚信,任何破坏这一基础的行为最终都会伤害整个生态。
