Skip to content

Commit 92a8ea8

Browse files
authored
【Hackathon 8th No.30】RFC:在 PaddleNLP 中复现Gemma2模型 (#1106)
* Create 20250402_add_gemma2_for_paddlenlp.md * Update 20250402_add_gemma2_for_paddlenlp.md * Update 20250402_add_gemma2_for_paddlenlp.md * Update 20250402_add_gemma2_for_paddlenlp.md
1 parent 989ecc0 commit 92a8ea8

File tree

1 file changed

+107
-0
lines changed

1 file changed

+107
-0
lines changed
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
# 在 PaddleNLP 中复现 Gemma2 模型
2+
|任务名称 | 在 PaddleNLP 中复现 Gemma2 模型 |
3+
|---|---|
4+
|提交作者<input type="checkbox" class="rowselector hidden"> | robinbg |
5+
|提交时间<input type="checkbox" class="rowselector hidden"> | 2025-04-02 |
6+
|版本号 | V1.0 |
7+
|依赖飞桨版本<input type="checkbox" class="rowselector hidden"> | develop |
8+
|文件名 | 20250402_add_gemma2_for_paddlenlp.md<br> |
9+
10+
# 一、概述
11+
## 1、相关背景
12+
13+
Gemma2是Google最新发布的大型语言模型,在推理能力和生成质量方面表现优异。将Gemma2引入PaddleNLP生态系统,可以为用户提供更多高性能模型选择。
14+
15+
## 2、功能目标
16+
17+
在PaddleNLP中实现Gemma2模型,确保与原始实现的精度对齐,并提供完整的模型组网、tokenizer以及相关测试。
18+
19+
## 3、意义
20+
21+
丰富PaddleNLP的模型库,为用户提供高性能的Gemma2模型支持。
22+
23+
# 二、飞桨现状
24+
25+
PaddleNLP目前尚未支持Gemma2模型。
26+
27+
# 三、业内方案调研
28+
29+
Gemma2已在Hugging Face Transformers等主流框架中得到支持。
30+
参考实现:https://github.com/huggingface/transformers/tree/main/src/transformers/models/gemma2
31+
32+
# 四、对比分析
33+
34+
严格对标Hugging Face的实现,确保功能和性能完全对齐。
35+
36+
# 五、设计思路与实现方案
37+
38+
## 1. 精度对齐
39+
- 按照[精度验证方法](https://paddlenlp.readthedocs.io/zh/latest/community/contribute_models/align_pytorch_and_paddle.html)进行对齐
40+
- FP32 精度下误差 < 1e-5
41+
- BF16 精度下误差 < 1e-3
42+
43+
## 2. 核心组件实现
44+
- Gemma2Config: 模型配置类
45+
- Gemma2Tokenizer: 分词器实现
46+
- Gemma2PreTrainedModel: 预训练模型基类
47+
- Gemma2Model: 主干网络实现
48+
- Gemma2ForCausalLM: 生成任务模型实现
49+
50+
## 3. 测试验证
51+
- 模型结构测试
52+
- 前向计算测试
53+
- 精度对齐测试
54+
- Tokenizer测试
55+
56+
# 六、测试验收的考量
57+
58+
## 1. 精度对齐
59+
- [ ] FP32: 误差 < 1e-5
60+
- [ ] BF16: 误差 < 1e-3
61+
62+
## 2. 代码完备性
63+
- [ ] 模型组网完整
64+
- [ ] Tokenizer完整
65+
- [ ] 接口规范
66+
67+
## 3. 测试完备性
68+
- [ ] 单元测试覆盖
69+
- [ ] 精度测试完整
70+
- [ ] CI测试通过
71+
72+
## 4. 文档完备性
73+
- [ ] API文档
74+
- [ ] 示例代码
75+
- [ ] 代码注释
76+
77+
# 七、可行性分析和排期规划
78+
79+
## Day 1-3
80+
- 完成模型核心代码
81+
- 实现tokenizer
82+
- 搭建验证框架
83+
84+
## Day 4-7
85+
- 编写单元测试
86+
- 进行精度验证
87+
- 性能优化
88+
89+
## Day 8-10
90+
- 完善文档
91+
- 添加示例
92+
- 完善注释
93+
94+
# 八、影响面
95+
96+
PaddleNLP新增Gemma2模型支持。
97+
98+
# 名词解释
99+
100+
- Gemma2: Google发布的大型语言模型
101+
- FP32/BF16: 不同精度的浮点数表示格式
102+
103+
# 附件及参考资料
104+
105+
- [Hugging Face Gemma2实现](https://github.com/huggingface/transformers/tree/main/src/transformers/models/gemma2)
106+
- [PaddleNLP模型对齐指南](https://paddlenlp.readthedocs.io/zh/latest/community/contribute_models/align_pytorch_and_paddle.html)
107+
](https://github.com/robinbg/community/blob/robinbg-add-gemma2/rfcs/PaddleNLP/20250402_add_gemma2_for_paddlenlp.md)

0 commit comments

Comments
 (0)