diff --git a/rfcs/PaddleNLP/20250402_add_gemma2_for_paddlenlp.md b/rfcs/PaddleNLP/20250402_add_gemma2_for_paddlenlp.md new file mode 100644 index 000000000..b19d67a5d --- /dev/null +++ b/rfcs/PaddleNLP/20250402_add_gemma2_for_paddlenlp.md @@ -0,0 +1,107 @@ +# 在 PaddleNLP 中复现 Gemma2 模型 +|任务名称 | 在 PaddleNLP 中复现 Gemma2 模型 | +|---|---| +|提交作者 | robinbg | +|提交时间 | 2025-04-02 | +|版本号 | V1.0 | +|依赖飞桨版本 | develop | +|文件名 | 20250402_add_gemma2_for_paddlenlp.md
| + +# 一、概述 +## 1、相关背景 + +Gemma2是Google最新发布的大型语言模型,在推理能力和生成质量方面表现优异。将Gemma2引入PaddleNLP生态系统,可以为用户提供更多高性能模型选择。 + +## 2、功能目标 + +在PaddleNLP中实现Gemma2模型,确保与原始实现的精度对齐,并提供完整的模型组网、tokenizer以及相关测试。 + +## 3、意义 + +丰富PaddleNLP的模型库,为用户提供高性能的Gemma2模型支持。 + +# 二、飞桨现状 + +PaddleNLP目前尚未支持Gemma2模型。 + +# 三、业内方案调研 + +Gemma2已在Hugging Face Transformers等主流框架中得到支持。 +参考实现:https://github.com/huggingface/transformers/tree/main/src/transformers/models/gemma2 + +# 四、对比分析 + +严格对标Hugging Face的实现,确保功能和性能完全对齐。 + +# 五、设计思路与实现方案 + +## 1. 精度对齐 +- 按照[精度验证方法](https://paddlenlp.readthedocs.io/zh/latest/community/contribute_models/align_pytorch_and_paddle.html)进行对齐 +- FP32 精度下误差 < 1e-5 +- BF16 精度下误差 < 1e-3 + +## 2. 核心组件实现 +- Gemma2Config: 模型配置类 +- Gemma2Tokenizer: 分词器实现 +- Gemma2PreTrainedModel: 预训练模型基类 +- Gemma2Model: 主干网络实现 +- Gemma2ForCausalLM: 生成任务模型实现 + +## 3. 测试验证 +- 模型结构测试 +- 前向计算测试 +- 精度对齐测试 +- Tokenizer测试 + +# 六、测试验收的考量 + +## 1. 精度对齐 +- [ ] FP32: 误差 < 1e-5 +- [ ] BF16: 误差 < 1e-3 + +## 2. 代码完备性 +- [ ] 模型组网完整 +- [ ] Tokenizer完整 +- [ ] 接口规范 + +## 3. 测试完备性 +- [ ] 单元测试覆盖 +- [ ] 精度测试完整 +- [ ] CI测试通过 + +## 4. 文档完备性 +- [ ] API文档 +- [ ] 示例代码 +- [ ] 代码注释 + +# 七、可行性分析和排期规划 + +## Day 1-3 +- 完成模型核心代码 +- 实现tokenizer +- 搭建验证框架 + +## Day 4-7 +- 编写单元测试 +- 进行精度验证 +- 性能优化 + +## Day 8-10 +- 完善文档 +- 添加示例 +- 完善注释 + +# 八、影响面 + +PaddleNLP新增Gemma2模型支持。 + +# 名词解释 + +- Gemma2: Google发布的大型语言模型 +- FP32/BF16: 不同精度的浮点数表示格式 + +# 附件及参考资料 + +- [Hugging Face Gemma2实现](https://github.com/huggingface/transformers/tree/main/src/transformers/models/gemma2) +- [PaddleNLP模型对齐指南](https://paddlenlp.readthedocs.io/zh/latest/community/contribute_models/align_pytorch_and_paddle.html) +](https://github.com/robinbg/community/blob/robinbg-add-gemma2/rfcs/PaddleNLP/20250402_add_gemma2_for_paddlenlp.md)