|
1 |
| -========================================== |
2 |
| -贡献优质的模型权重 |
3 |
| -========================================== |
| 1 | +==================================================================================== |
| 2 | +贡献预训练模型权重 |
| 3 | +==================================================================================== |
4 | 4 |
|
5 |
| -1. 模型网络结构种类 |
6 |
| ------------------------------------------- |
7 |
| -PaddleNLP已支持绝大部分主流的预训练模型网络,既包括百度自研的预训练模型(如ERNIE系列), |
8 |
| -也涵盖业界主流的预训练模型(如BERT,GPT,RoBERTa,XLNet等)。 |
| 5 | +1. 模型网络结构类型 |
| 6 | +------------------------------------------------------------------------------------ |
| 7 | +PaddleNLP目前已支持绝大多数主流的预训练模型网络结构,既包括百度自研的预训练模型(如ERNIE系列), |
| 8 | +也涵盖业界主流的预训练模型(如BERT,ALBERT,GPT,RoBERTa,XLNet等)。 |
9 | 9 |
|
10 |
| -下面列出了PaddleNLP目前支持的15类网络结构(持续增加中,也非常欢迎你的贡献): |
11 |
| - |
12 |
| -- ALBERT |
13 |
| -- BERT |
14 |
| -- BigBird |
15 |
| -- DistilBert |
16 |
| -- ELECTRA |
17 |
| -- ERNIE |
18 |
| -- ERNIE-GEN |
19 |
| -- ERNIE-GRAM |
20 |
| -- GPT |
21 |
| -- NeZha |
22 |
| -- RoBERTa |
23 |
| -- SKEP |
24 |
| -- TinyBert |
25 |
| -- UnifiedTransformer |
26 |
| -- XLNet |
| 10 | +PaddleNLP目前支持的预训练模型结构类型汇总可见 |
| 11 | +`Transformer预训练模型汇总 <https://paddlenlp.readthedocs.io/zh/latest/model_zoo/transformers.html>`_ |
| 12 | +(持续增加中,也非常欢迎进行新模型贡献:`如何贡献新模型 <https://paddlenlp.readthedocs.io/zh/latest/community/contribute_models/contribute_new_models.html>`_ )。 |
27 | 13 |
|
28 | 14 | 2. 模型参数权重类型
|
29 |
| ------------------------------------------- |
30 |
| -我们非常欢迎大家贡献优质模型参数权重。 |
| 15 | +------------------------------------------------------------------------------------ |
| 16 | +非常欢迎大家贡献优质模型参数权重。 |
31 | 17 | 参数权重类型包括但不限于(以BERT模型网络为例):
|
32 | 18 |
|
33 |
| -1. PaddleNLP还未收录的BERT预训练模型参数权重(如) |
34 |
| -2. BERT模型在其他垂类领域(如法律,医学等)的预训练模型参数权重(如) |
35 |
| -3. 基于BERT在下游具体任务进行fine-tuning后的模型参数权重(如) |
36 |
| -4. 其他任何你觉得有价值的模型参数权重 |
| 19 | +- PaddleNLP还未收录的BERT预训练模型参数权重 |
| 20 | + (如 `bert-base-japanese-char <https://huggingface.co/cl-tohoku/bert-base-japanese-char>`_ ,`danish-bert-botxo <https://huggingface.co/Maltehb/danish-bert-botxo>`_ 等); |
| 21 | +- BERT模型在其他垂类领域(如数学,金融,法律,医学等)的预训练模型参数权重 |
| 22 | + (如 `MathBERT <https://huggingface.co/tbs17/MathBERT>`_ ,`finbert <https://huggingface.co/ProsusAI/finbert>`_ 等); |
| 23 | +- 基于BERT在下游具体任务进行fine-tuning后的模型参数权重 |
| 24 | + (如 `bert-base-multilingual-uncased-sentiment <https://huggingface.co/nlptown/bert-base-multilingual-uncased-sentiment>`_ , |
| 25 | + `bert-base-NER <https://huggingface.co/dslim/bert-base-NER>`_ 等); |
| 26 | +- 其他模型参数权重(任何你觉得有价值的模型参数权重); |
37 | 27 |
|
38 | 28 | 3. 参数权重格式转换
|
39 |
| ------------------------------------------- |
| 29 | +------------------------------------------------------------------------------------ |
40 | 30 | 当我们想要贡献github上开源的某模型权重时,但是发现该权重保存为其他的深度学习框架(PyTorch,TensorFlow等)的格式,
|
41 |
| -这刘需要我们进行不同深度学习框架间的模型格式转换,下面的链接给出了一份详细的关于Pytorch到Paddle模型格式转换的教程。 |
42 |
| -`Pytorch到Paddle模型格式转换文档 <./convert_pytorch_to_paddle.rst>`_ |
| 31 | +这就需要我们进行不同深度学习框架间的模型格式转换,下面的链接给出了一份详细的关于Pytorch到Paddle模型格式转换的教程: |
| 32 | +`Pytorch到Paddle模型格式转换文档 <./convert_pytorch_to_paddle.rst>`_ 。 |
43 | 33 |
|
44 |
| -4. 准备模型权重所需文件 |
45 |
| ------------------------------------------- |
46 |
| -一般来说,我们需要提供 ``model_config`` ,``model_state`` ,``tokenizer_config`` 以及 ``vocab`` 这四个文件 |
47 |
| -才能完成一个模型的贡献。 |
| 34 | +4. 进行贡献 |
| 35 | +------------------------------------------------------------------------------------ |
| 36 | +4.1 准备权重相关文件 |
| 37 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 38 | +一般来说,我们需要准备 **model_state.pdparams** ,**vocab.txt**,**tokenizer_config.json** |
| 39 | +以及 **model_config.json** 这四个文件进行参数权重贡献。 |
48 | 40 |
|
49 |
| -对于 ``bert-base-uncased-sst-2-finetuned`` 这个模型来说, |
50 |
| -我们需要提供的文件如下: |
| 41 | +- model_state.pdparams 文件可以通过上述的参数权重格式转换过程得到; |
| 42 | +- vocab.txt 文件可以直接使用原始模型对应的vocab文件(根据模型对应tokenizer类型的不同,该文件名可能为spiece.model等); |
| 43 | +- model_config.json 文件可以参考对应 model.save_pretrained() 接口保存的model_config.json文件; |
| 44 | +- tokenizer_config.json 文件可以参考对应 tokenizer.save_pretrained() 接口保存的model_config.json文件; |
51 | 45 |
|
52 |
| -1. model_config.json |
53 |
| -2. model_state.pdparams |
54 |
| -3. tokenizer_config.json |
55 |
| -4. vocab.txt |
| 46 | +4.2 创建个人目录 |
| 47 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 48 | +如果你是首次进行权重贡献,那么你需要在 ``PaddleNLP/paddlenlp/transformers/community/`` 下新建一个目录。 |
| 49 | +目录名称使用你的github名称,比如新建目录 ``PaddleNLP/paddlenlp/transformers/community/yingyibiao/`` 。 |
| 50 | +如果已有个人目录,则可以跳过此步骤。 |
56 | 51 |
|
57 |
| -5. 进行贡献 |
58 |
| ------------------------------------------- |
59 |
| -在准备好模型权重贡献所需要的文件后,我们就可以开始我们的贡献了。 |
60 |
| -我们是通过在github上提PR(pull request)进行贡献。 |
| 52 | +4.3 创建权重目录 |
| 53 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 54 | +在步骤4.2的个人目录下新建一个权重目录,权重目录名为本次贡献的模型权重名称。 |
| 55 | +比如我想贡献 ``bert-base-uncased-sst-2-finetuned`` 这个模型, |
| 56 | +则新建权重目录 ``PaddleNLP/paddlenlp/transformers/community/yingyibiao/bert-base-uncased-sst-2-finetuned/`` 。 |
61 | 57 |
|
62 |
| -1. 如果你是首次贡献模型,你需要在 ``PaddleNLP/paddlenlp/transformers/community/`` 下新建一个目录, |
63 |
| -目录名称使用你的github名称,如github名为 ``yingyibiao`` , |
64 |
| -则新建目录 ``PaddleNLP/paddlenlp/transformers/community/yingyibiao/`` 。 |
| 58 | +4.4 在权重目录下添加PR(pull request)相关文件 |
| 59 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 60 | +在步骤4.3的目录下加入两个文件,分别为 ``README.md`` 和 ``files.json`` 。 |
65 | 61 |
|
66 |
| -2. 接着在你的目录下新建一个模型目录,目录名称为本次贡献的模型名称,如我想贡献 ``bert-base-uncased-sst-2-finetuned`` 这个模型, |
67 |
| -则新建目录 ``PaddleNLP/paddlenlp/transformers/community/yingyibiao/bert-base-uncased-sst-2-finetuned/``。 |
| 62 | +- ``README.md`` 是对你贡献的权重的详细介绍,使用示例,权重来源等。 |
| 63 | +- ``files.json`` 为步骤4.1所得的权重相关文件以及对应地址。files.json文件内容示例如下,只需将地址中的 *yingyibiao* 和 |
| 64 | + *bert-base-uncased-sst-2-finetuned* 分别更改为你的github用户名和权重名称。 |
68 | 65 |
|
69 |
| -3. 在步骤2的目录下加入两个文件,分别为 ``README.md`` 和 ``files.json`` 。 |
70 |
| -``README.md`` 为对你贡献的模型的详细介绍,``files.json`` 为模型权重所需文件以所对应存储路径。 |
| 66 | +.. code:: python |
71 | 67 |
|
72 |
| -第一次进行开源贡献的同学可以参考 `first-contributions <https://github.com/firstcontributions/first-contributions>`_。 |
| 68 | + { |
| 69 | + "model_config_file": "https://paddlenlp.bj.bcebos.com/models/transformers/community/yingyibiao/bert-base-uncased-sst-2-finetuned/model_config.json", |
| 70 | + "model_state": "https://paddlenlp.bj.bcebos.com/models/transformers/community/yingyibiao/bert-base-uncased-sst-2-finetuned/model_state.pdparams", |
| 71 | + "tokenizer_config_file": "https://paddlenlp.bj.bcebos.com/models/transformers/community/yingyibiao/bert-base-uncased-sst-2-finetuned/tokenizer_config.json", |
| 72 | + "vocab_file": "https://paddlenlp.bj.bcebos.com/models/transformers/community/yingyibiao/bert-base-uncased-sst-2-finetuned/vocab.txt" |
| 73 | + } |
73 | 74 |
|
74 |
| -模型权重贡献示例请参考 `xxxModel PR示例 <.>`_ |
| 75 | +4.5 在github上提PR进行贡献 |
| 76 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 77 | +- 第一次进行开源贡献的同学可以参考 `first-contributions <https://github.com/firstcontributions/first-contributions>`_ 。 |
| 78 | +- 模型权重贡献PR示例请参考 `bert-base-uncased-sst-2-finetuned PR <.>`_ 。 |
0 commit comments