From 7d3c2058e848131cc8b8a97d71cd53ca091a2094 Mon Sep 17 00:00:00 2001
From: yinfan98 <1106310035@qq.com>
Date: Mon, 4 Nov 2024 03:47:23 +0800
Subject: [PATCH 1/2] Create 20241104_add_tokenizer_fast_for_paddlenlp.md
---
...241104_add_tokenizer_fast_for_paddlenlp.md | 40 +++++++++++++++++++
1 file changed, 40 insertions(+)
create mode 100644 rfcs/PaddleNLP/20241104_add_tokenizer_fast_for_paddlenlp.md
diff --git a/rfcs/PaddleNLP/20241104_add_tokenizer_fast_for_paddlenlp.md b/rfcs/PaddleNLP/20241104_add_tokenizer_fast_for_paddlenlp.md
new file mode 100644
index 000000000..2a7917047
--- /dev/null
+++ b/rfcs/PaddleNLP/20241104_add_tokenizer_fast_for_paddlenlp.md
@@ -0,0 +1,40 @@
+
+# PaddleNLP 支持 TokenizerFast
+
+|任务名称 | 为PaddleNLP 支持 TokenizerFast |
+|---|---|
+|提交作者 | yinfan98 |
+|提交时间 | 2024-11-04 |
+|版本号 | V1.0 |
+|依赖飞桨版本 | develop |
+|文件名 | 20241104_add_tokenizer_fast_for_paddlenlp.md
|
+
+
+# 一、概述
+## 1、相关背景
+TokenizerFast是Hugging Face的Transformers库中的一个类,用于快速分词。它基于SentencePiece或WordPiece模型,可以将文本转换为模型所需的输入格式。TokenizerFast支持多种语言和模型,可以用于自然语言处理任务,如文本分类、命名实体识别、机器翻译等。
+TokenizerFast和Tokenizer都是Hugging Face的Transformers库中的类,用于将文本转换为模型所需的输入格式。它们的主要区别在于实现方式和性能。
+- Tokenizer是基于Python的实现,而TokenizerFast是基于C++的实现,因此TokenizerFast通常比Tokenizer更快。
+- TokenizerFast支持SentencePiece和WordPiece模型,而Tokenizer只支持WordPiece模型。
+- TokenizerFast支持更多的语言和模型,因此在处理多语言和多模型时更灵活。
+- TokenizerFast支持更多的功能,如添加特殊标记、添加位置信息等,因此在处理复杂任务时更强大。
+目前,PaddleNLP里已有基础的TokenizerFast基建,但缺少对TokenizerFast用于存量模型的过程上。但当前大部分模型不包含 tokenizer_fast 实现,因此无法享受到 TokenizerFast 带来的性能提升。
+
+
+## 2、功能目标
+完善 TokenizerFast 功能支持,编写单测并验证大规模数据集。
+
+
+## 3、意义
+
+全量支持TokenizerFast,能带来性能上提升。
+
+# 二、任务内容
+
+- 实现 bert、bloom、chatglm、ernie、gemma、gpt、qwen、qwen2 对应的 toekizer_fast.py 文件
+
+- 撰写理论上精度对齐报告和实验证明,在上述模型下TokenizerFast能和Tokenizer结果对齐
+
+- 预计对上述8个模型每个模型选取2种大规模数据集,在16个单测上对齐性能
+
+- 产出自动化单测脚本,方便对齐后续模型
From 64ea4c3c11d17d9c5e95e73ad25bdfdfeaa0501a Mon Sep 17 00:00:00 2001
From: yinfan98 <1106310035@qq.com>
Date: Mon, 4 Nov 2024 04:01:03 +0800
Subject: [PATCH 2/2] Update 20241104_add_tokenizer_fast_for_paddlenlp.md
---
...241104_add_tokenizer_fast_for_paddlenlp.md | 40 +++++++++++++++++--
1 file changed, 37 insertions(+), 3 deletions(-)
diff --git a/rfcs/PaddleNLP/20241104_add_tokenizer_fast_for_paddlenlp.md b/rfcs/PaddleNLP/20241104_add_tokenizer_fast_for_paddlenlp.md
index 2a7917047..650aa6ead 100644
--- a/rfcs/PaddleNLP/20241104_add_tokenizer_fast_for_paddlenlp.md
+++ b/rfcs/PaddleNLP/20241104_add_tokenizer_fast_for_paddlenlp.md
@@ -22,19 +22,53 @@ TokenizerFast和Tokenizer都是Hugging Face的Transformers库中的类,用于
## 2、功能目标
-完善 TokenizerFast 功能支持,编写单测并验证大规模数据集。
+完善 TokenizerFast 功能支持,编写单测并验证大规模数据集。并对齐精度,给出自动化实现脚本。
## 3、意义
全量支持TokenizerFast,能带来性能上提升。
-# 二、任务内容
+# 二、飞桨现状
-- 实现 bert、bloom、chatglm、ernie、gemma、gpt、qwen、qwen2 对应的 toekizer_fast.py 文件
+[PaddleNLP](https://github.com/PaddlePaddle/PaddleNLP),只有像llama等少量模型支持了TokenizerFast,但是在tokenizer_utils_fast里已支持base的TokenizerFast。需要做的是从llama推全TokenizerFast操作,支持所在bert、bloom、chatglm、ernie、gemma、gpt、qwen、qwen2上的tokenizer fast。
+
+# 三、业内方案调研
+
+目前huggingface已基本支持tokenizer_fast,并且开源模型在编写自己的代码时,也会加上tokenizer_fast。
+
+# 四、对比分析
+
+对标其他实现,让paddle支持更快速的tokenizer。
+
+# 五、设计思路与实现方案
+
+- 实现 bert、bloom、chatglm、ernie、gemma、gpt、qwen、qwen2 对应的 tokenizer_fast.py 文件
- 撰写理论上精度对齐报告和实验证明,在上述模型下TokenizerFast能和Tokenizer结果对齐
- 预计对上述8个模型每个模型选取2种大规模数据集,在16个单测上对齐性能
- 产出自动化单测脚本,方便对齐后续模型
+
+# 六、测试验收的考量
+
+1. 实验报告
+2. tokenizer fast 代码
+
+# 七、可行性分析和排期规划
+
+- 实现 bert、bloom、chatglm、ernie、gemma、gpt、qwen、qwen2 对应的 tokenizer_fast.py 文件
+
+- 撰写理论上精度对齐报告和实验证明,在上述模型下TokenizerFast能和Tokenizer结果对齐
+
+- 预计对上述8个模型每个模型选取2种大规模数据集,在16个单测上对齐性能
+
+- 产出自动化单测脚本,方便对齐后续模型
+
+# 八、影响面
+
+- PaddleNLP 的 transformers 下这八个模型文件夹增加新文件
+
+# 名词解释
+# 附件及参考资料