Skip to content

Commit

Permalink
prepare for bert-wwm-ext release (not now)
Browse files Browse the repository at this point in the history
  • Loading branch information
ymcui committed Jul 24, 2019
1 parent 94f3f56 commit aab005c
Show file tree
Hide file tree
Showing 2 changed files with 126 additions and 54 deletions.
145 changes: 96 additions & 49 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,17 @@

本项目基于谷歌官方的BERThttps://github.com/google-research/bert


## 新闻
**Upcoming Event: 我们即将发布在更大通用语料上训练的中文`BERT-wwm-ext`模型**

2019/6/20 初始版本模型已可通过谷歌下载国内云盘也已上传完毕查看[中文模型下载](#中文模型下载)


## 内容导引
| 章节 | 描述 |
|-|-|
| [简介](#简介) | 介绍BERT-wwm |
| [简介](#简介) | 介绍BERT-wwm基本原理 |
| [中文模型下载](#中文模型下载) | 提供了BERT-wwm的下载地址 |
| [中文基线系统效果](#中文基线系统效果) | 列举了部分中文基线系统效果 |
| [使用建议](#使用建议) | 提供了若干使用中文预训练模型的建议 |
Expand All @@ -48,18 +51,23 @@


## 中文模型下载
* [**`BERT-base, Chinese (Whole Word Masking)`**](https://drive.google.com/open?id=1RoTQsXp2hkQ1gSRVylRIJfQxJUgkfJMW):
12-layer, 768-hidden, 12-heads, 110M parameters

#### TensorFlow版本(1.12、1.13、1.14测试通过)
- Google: [download_link_for_google_drive](https://drive.google.com/open?id=1RoTQsXp2hkQ1gSRVylRIJfQxJUgkfJMW)
- 讯飞云: [download_link_密码mva8](https://pan.iflytek.com:443/link/4B172939D5748FB1A3881772BC97A898)

#### PyTorch版本(请使用🤗 的[PyTorch-BERT](https://github.com/huggingface/pytorch-pretrained-BERT) > 0.6,其他版本请自行转换)
- Google: [download_link_for_google_drive](https://drive.google.com/open?id=1NlMd5GRG97N5BYJHDQR79EU41fEfzMCv)
- 讯飞云: [download_link_密码m1CE](https://pan.iflytek.com:443/link/F23B12B39A3077CF1ED7A08DDAD081E3)

中国大陆境内建议使用讯飞云下载境外用户建议使用谷歌下载点文件大小约**400M**
由于在中文下目前只包含base模型故我们不在模型简称中标注`base`字样
* **`BERT-base模型`**12-layer, 768-hidden, 12-heads, 110M parameters

| 模型简称 | 语料 | Google下载 | 讯飞云下载 |
| :------- | :--------- | :---------: | :---------: |
| **`BERT-wwm-ext, Chinese`** | **Wikipedia + Extended Data** | **Google Drive** | **讯飞云密码** |
| **`BERT-wwm, Chinese`** | **Wikipedia** | **[Google Drive](https://drive.google.com/open?id=1RoTQsXp2hkQ1gSRVylRIJfQxJUgkfJMW)** | **[讯飞云密码mva8)](https://pan.iflytek.com:443/link/4B172939D5748FB1A3881772BC97A898)** |
| `BERT-base, Chinese` (Google) | Wikipedia | [Google Cloud](https://storage.googleapis.com/bert_models/2018_11_03/chinese_L-12_H-768_A-12.zip) | - |
| `BERT-base, Multilingual Cased` (Google) | Wikipedia | [Google Cloud](https://storage.googleapis.com/bert_models/2018_11_23/multi_cased_L-12_H-768_A-12.zip) | - |
| `BERT-base, Multilingual Uncased` (Google) | Wikipedia | [Google Cloud](https://storage.googleapis.com/bert_models/2018_11_03/multilingual_L-12_H-768_A-12.zip) | - |

以上均为TensorFlow版本的模型权重
由于Huggingface出品的[PyTorch-Transformers](https://github.com/huggingface/pytorch-transformers)发生较大版本变化我们不提供转换好的PyTorch版本供下载
我们建议使用PyTorch-Transformers自带的转换脚本进行权重转换
具体可参考[该目录](https://github.com/huggingface/pytorch-transformers/tree/master/notebooks)。

中国大陆境内建议使用讯飞云下载点境外用户建议使用谷歌下载点base模型文件大小约**400M**
以TensorFlow版本为例下载完毕后对zip文件进行解压得到
```
chinese_wwm_L-12_H-768_A-12.zip
Expand All @@ -69,7 +77,7 @@ chinese_wwm_L-12_H-768_A-12.zip
|- bert_config.json # 模型参数
|- vocab.txt # 词表
```
其中`bert_config.json`和`vocab.txt`与谷歌原版`**BERT-base, Chinese**`完全一致
其中`bert_config.json`和`vocab.txt`与谷歌原版**`BERT-base, Chinese`**完全一致


### 测试任务数据
Expand All @@ -94,22 +102,44 @@ chinese_wwm_L-12_H-768_A-12.zip
### CMRC 2018
[CMRC 2018数据集](https://github.com/ymcui/cmrc2018)是哈工大讯飞联合实验室发布的中文机器阅读理解数据根据给定问题系统需要从篇章中抽取出片段作为答案形式与SQuAD相同

![./pics/cmrc2018.png](https://github.com/ymcui/Chinese-BERT-wwm/raw/master/pics/cmrc2018.png)
| 模型 | 开发集 | 测试集 | 挑战集 |
| :------- | :--------- | :---------: | :---------: |
| BERT | 65.5 (64.4) / 84.5 (84.0) | 70.0 (68.7) / 87.0 (86.3) | 18.6 (17.0) / 43.3 (41.3) |
| ERNIE | 65.4 (64.3) / 84.7 (84.2) | 69.4 (68.2) / 86.6 (86.1) | 19.6 (17.0) / 44.3 (42.8) |
| **BERT-wwm** | 66.3 (65.0) / 85.6 (84.7) | 70.5 (69.1) / 87.4 (86.7) | 21.0 (19.3) / 47.0 (43.9) |
| **BERT-wwm-ext** | | | |


### DRCD
[DRCD数据集](https://github.com/DRCKnowledgeTeam/DRCD)由中国台湾台达研究院发布其形式与SQuAD相同是基于繁体中文的抽取式阅读理解数据集

![./pics/drcd.png](https://github.com/ymcui/Chinese-BERT-wwm/raw/master/pics/drcd.png)
| 模型 | 开发集 | 测试集 |
| :------- | :--------- | :---------: |
| BERT | 83.1 (82.7) / 89.9 (89.6) | 82.2 (81.6) / 89.2 (88.8) |
| ERNIE | 73.2 (73.0) / 83.9 (83.8) | 71.9 (71.4) / 82.5 (82.3) |
| **BERT-wwm** | 84.3 (83.4) / 90.5 (90.2) | 82.8 (81.8) / 89.7 (89.0) |
| **BERT-wwm-ext** | | |

### NER
中文命名实体识别NER任务中我们采用了经典的人民日报数据以及微软亚洲研究院发布的NER数据
中文命名实体识别NER任务中我们采用了经典的人民日报数据以及微软亚洲研究院发布的NER数据在这里我们只列F值其他数值请参看技术报告

![./pics/ner.png](https://github.com/ymcui/Chinese-BERT-wwm/raw/master/pics/ner.png)
| 模型 | 人民日报 | MSRA |
| :------- | :--------- | :---------: |
| BERT | 95.2 (94.9) | 95.3 (94.9) |
| ERNIE | 95.7 (94.5) | 95.4 (95.1) |
| **BERT-wwm** | 95.3 (95.1) | 95.4 (95.1) |
| **BERT-wwm-ext** | | |

### THUCNews
由清华大学自然语言处理实验室发布的新闻数据集需要将新闻分成10个类别中的一个
由清华大学自然语言处理实验室发布的新闻数据集我们采用的是其中一个子集需要将新闻分成10个类别中的一个

| 模型 | 开发集 | 测试集 |
| :------- | :--------- | :---------: |
| BERT | 97.7 (97.4) | 97.8 (97.6) |
| ERNIE | 97.6 (97.3) | 97.5 (97.3) |
| **BERT-wwm** | 98.0 (97.6) | 97.8 (97.6) |
| **BERT-wwm-ext** | | | |

![./pics/thucnews.png](https://github.com/ymcui/Chinese-BERT-wwm/raw/master/pics/thucnews.png)

## 使用建议
* 初始学习率是非常重要的一个参数不论是BERT还是其他模型),需要根据目标任务进行调整
Expand All @@ -130,46 +160,63 @@ chinese_wwm_L-12_H-768_A-12.zip


## FAQ
**Q: 这个模型怎么用**
A: BERT怎么用这个就怎么用文本不需要经过分词wwm只影响预训练过程不影响下游任务的输入
**Q: 这个模型怎么用**
A: 谷歌发布的中文BERT怎么用这个就怎么用
**文本不需要经过分词wwm只影响预训练过程不影响下游任务的输入**

**Q: 请问有预训练代码提供吗**
A: 很遗憾我不能提供相关代码实现可以参考 #10 #13。
**Q: 请问有预训练代码提供吗**
A: 很遗憾我不能提供相关代码实现可以参考 [#10](https://github.com/ymcui/Chinese-BERT-wwm/issues/10) 和 [#13](https://github.com/ymcui/Chinese-BERT-wwm/issues/13)

**Q: XXXXX数据集在哪里下载**
**Q: 某某数据集在哪里下载**
A: 请查看data目录对于有版权的内容请自行搜索或与原作者联系获取数据

**Q: 会有计划发布更大模型吗比如BERT-large-wwm版本**</br>
**Q: 会有计划发布更大模型吗比如BERT-large-wwm版本**
A: 如果我们从实验中得到更好效果会考虑发布更大的版本

**Q: 你骗人无法复现结果😂**</br>
A: 在下游任务中我们采用了最简单的模型比如分类任务我们直接使用的是`run_classifier.py`谷歌提供)。如果无法达到平均值说明实验本身存在bug请仔细排查最高值存在很多随机因素我们无法保证能够达到最高值
**Q: 你骗人无法复现结果😂**
A: 在下游任务中我们采用了最简单的模型比如分类任务我们直接使用的是`run_classifier.py`谷歌提供)。
如果无法达到平均值说明实验本身存在bug请仔细排查
最高值存在很多随机因素我们无法保证能够达到最高值
另外一个公认的因素降低batch size会显著降低实验效果具体可参考BERTXLNet目录的相关Issue

**Q: 我训出来比你更好的结果**</br>
**Q: 我训出来比你更好的结果**
A: 恭喜你

**Q: 训练花了多长时间在什么设备上训练的**</br>
A: 训练是在谷歌TPU v3版本128G HBM完成的大约需要1.5天左右需要注意的是预训练阶段我们使用的是`LAMB Optimizer`([TensorFlow版本实现](https://github.com/ymcui/LAMB_Optimizer_TF))。该优化器对大的batch有良好的支持在微调下游任务时我们采用的是BERT默认的`AdamWeightDecayOptimizer`
**Q: 训练花了多长时间在什么设备上训练的**
A: 训练是在谷歌TPU v3版本128G HBM完成的训练BERT-wwm-base花费约1.5BERT-wwm-base-ext则需要数周时间使用了更多数据需要迭代更充分)。
需要注意的是预训练阶段我们使用的是`LAMB Optimizer`([TensorFlow版本实现](https://github.com/ymcui/LAMB_Optimizer_TF))。该优化器对大的batch有良好的支持
在微调下游任务时我们采用的是BERT默认的`AdamWeightDecayOptimizer`

**Q: ERNIE是谁**</br>
**Q: ERNIE是谁**
A: 本项目中的ERNIE模型特指百度公司提出的[ERNIE](https://github.com/PaddlePaddle/LARK/tree/develop/ERNIE),而非清华大学在ACL 2019上发表的[ERNIE](https://github.com/thunlp/ERNIE)。

**Q: 你们这个和百度的ERNIE有什么区别**</br>
A: 因为百度ERNIE的提出先于谷歌提出whole word masking仅以公开相关工作的时间为基准),基于全词mask的方法应该是百度的相关工作在先从数据上看ERNIE采用了更多的网络数据百科贴吧新闻),而本项目中只使用了中文维基百科数据

**Q: 你们在实验中使用了ERNIE是怎么用的呢**</br>
A: 我们将ERNIE从PaddlePaddle格式转换为TensorFlow格式并加载到下游任务的代码中很遗憾目前我们不能提供PP转TF/PT的代码但GitHub中有一些开源的实现可以搜索关注一下同时因为版权原因我们不会提供TensorFlow/PyTorch版本的ERNIE权重供大家下载关于ERNIE在PaddlePaddle中使用的相关问题请咨询[ERNIE官方](https://github.com/PaddlePaddle/LARK/tree/develop/ERNIE)。

**Q: BERT-wwm的效果不是在所有任务都很好**</br>
A: 本项目的目的是为研究者提供多元化的预训练模型自由选择BERTERNIE或者是BERT-wwm我们仅提供实验数据具体效果如何还是得在自己的任务中不断尝试才能得出结论多一个模型多一种选择

**Q: 为什么有些数据集上没有试**</br>
A: 很坦率的说1没精力找更多的数据2没有必要3没有钞票

**Q: 简单评价一下这几个模型**</br>
A: 各有侧重各有千秋中文自然语言处理的研究发展需要多方共同努力

**Q: 你预测下一个预训练模型叫什么**</br>
**Q: 你们这个和百度的ERNIE有什么区别**
A: 因为百度ERNIE的提出先于谷歌提出Whole Word Masking仅以公开相关工作的时间为基准),基于全词mask的方法应该是百度的相关工作在先
另外百度ERNIE采用了更多的masking策略而本工作只针对CWS进行了特殊处理尽量保持与谷歌BERT-wwm一致
从数据上看ERNIE采用了更多的网络数据百科贴吧新闻),而本项目中只使用了中文维基百科数据

**Q: 你们在实验中使用了ERNIE是怎么用的呢**
A: 我们将ERNIE从PaddlePaddle格式转换为TensorFlow格式并加载到下游任务的代码中
很遗憾目前我们不能提供PP转TF/PT的代码但GitHub中有一些开源的实现可以搜索关注一下
同时因为版权原因我们不会提供TensorFlow/PyTorch版本的ERNIE权重供大家下载
关于ERNIE在PaddlePaddle中使用的相关问题请咨询[ERNIE官方](https://github.com/PaddlePaddle/LARK/tree/develop/ERNIE)。

**Q: BERT-wwm的效果不是在所有任务都很好**
A: 本项目的目的是为研究者提供多元化的预训练模型自由选择BERTERNIE或者是BERT-wwm
我们仅提供实验数据具体效果如何还是得在自己的任务中不断尝试才能得出结论
多一个模型多一种选择

**Q: 为什么有些数据集上没有试**
A: 很坦率的说
1没精力找更多的数据
2没有必要
3没有钞票

**Q: 简单评价一下这几个模型**
A: 各有侧重各有千秋
中文自然语言处理的研究发展需要多方共同努力

**Q: 你预测下一个预训练模型叫什么**
A: 可能叫ZOE吧ZOE: Zero-shOt Embeddings from language model


Expand Down Expand Up @@ -203,7 +250,7 @@ https://arxiv.org/abs/1906.08101
## 关注我们
欢迎关注哈工大讯飞联合实验室官方微信公众号

![qrcode.png](https://github.com/ymcui/cmrc2019/blob/master/qrcode.jpg)
![qrcode.png](https://github.com/ymcui/cmrc2019/raw/master/qrcode.jpg)


## 问题反馈
Expand Down
35 changes: 30 additions & 5 deletions README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ For further accelerating Chinese natural language processing, we provide **Chine


## News
**Upcoming Event: We are going to release `BERT-wwm-ext` which was trained on a much larger data, stay tuned!**

2019/6/20 Initial version, pre-trained models could be downloaded through Google Drive, check [Download](#Download)


Expand Down Expand Up @@ -92,22 +94,45 @@ We experiment on several Chinese datasets, including sentence-level to document-
CMRC 2018 dataset is released by Joint Laboratory of HIT and iFLYTEK Research.
The model should answer the questions based on the given passage, which is identical to SQuAD.

![./pics/cmrc2018.png](https://github.com/ymcui/Chinese-BERT-wwm/raw/master/pics/cmrc2018.png)
| Model | Development | Test | Challenge |
| :------- | :--------- | :---------: | :---------: |
| BERT | 65.5 (64.4) / 84.5 (84.0) | 70.0 (68.7) / 87.0 (86.3) | 18.6 (17.0) / 43.3 (41.3) |
| ERNIE | 65.4 (64.3) / 84.7 (84.2) | 69.4 (68.2) / 86.6 (86.1) | 19.6 (17.0) / 44.3 (42.8) |
| **BERT-wwm** | 66.3 (65.0) / 85.6 (84.7) | 70.5 (69.1) / 87.4 (86.7) | 21.0 (19.3) / 47.0 (43.9) |
| **BERT-wwm-ext** | | | |


### [DRCD](https://github.com/DRCKnowledgeTeam/DRCD)
DRCD is also a span-extraction machine reading comprehension dataset, released by Delta Research Center. The text is written in Traditional Chinese.

![./pics/drcd.png](https://github.com/ymcui/Chinese-BERT-wwm/raw/master/pics/drcd.png)
| Model | Development | Test |
| :------- | :--------- | :---------: |
| BERT | 83.1 (82.7) / 89.9 (89.6) | 82.2 (81.6) / 89.2 (88.8) |
| ERNIE | 73.2 (73.0) / 83.9 (83.8) | 71.9 (71.4) / 82.5 (82.3) |
| **BERT-wwm** | 84.3 (83.4) / 90.5 (90.2) | 82.8 (81.8) / 89.7 (89.0) |
| **BERT-wwm-ext** | | |


### NER
We use People Daily and MSRA-NER data for testing Chinese NER.
We use People's Daily and MSRA-NER data for testing Chinese NER.

![./pics/ner.png](https://github.com/ymcui/Chinese-BERT-wwm/raw/master/pics/ner.png)
| Model | People's Daily | MSRA |
| :------- | :--------- | :---------: |
| BERT | 95.2 (94.9) | 95.3 (94.9) |
| ERNIE | 95.7 (94.5) | 95.4 (95.1) |
| **BERT-wwm** | 95.3 (95.1) | 95.4 (95.1) |
| **BERT-wwm-ext** | | |

### THUCNews
Released by Tsinghua University, which contains news in 10 categories.

![./pics/thucnews.png](https://github.com/ymcui/Chinese-BERT-wwm/raw/master/pics/thucnews.png)
| Model | Development | Test |
| :------- | :--------- | :---------: |
| BERT | 97.7 (97.4) | 97.8 (97.6) |
| ERNIE | 97.6 (97.3) | 97.5 (97.3) |
| **BERT-wwm** | 98.0 (97.6) | 97.8 (97.6) |
| **BERT-wwm-ext** | | | |


## Useful Tips
* Initial learning rate is the most important hyper-parameters (regardless of BERT or other neural networks), and should ALWAYS be tuned for better performance.
Expand Down

0 comments on commit aab005c

Please sign in to comment.