Skip to content

【Hackathon 8th No.30】RFC:在 PaddleNLP 中复现Gemma2模型 #1106

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Apr 7, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
107 changes: 107 additions & 0 deletions rfcs/PaddleNLP/20250402_add_gemma2_for_paddlenlp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
# 在 PaddleNLP 中复现 Gemma2 模型
|任务名称 | 在 PaddleNLP 中复现 Gemma2 模型 |
|---|---|
|提交作者<input type="checkbox" class="rowselector hidden"> | robinbg |
|提交时间<input type="checkbox" class="rowselector hidden"> | 2025-04-02 |
|版本号 | V1.0 |
|依赖飞桨版本<input type="checkbox" class="rowselector hidden"> | develop |
|文件名 | 20250402_add_gemma2_for_paddlenlp.md<br> |

# 一、概述
## 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)