README.md 3.52 KB
Newer Older
liangjing's avatar
liangjing committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# Bert-large(Bidirectional Encoder Representations from Transformers)
## 模型介绍
一种基于Transformer架构的预训练语言模型,由Google在2018年提出。BERT模型通过大规模的自监督预训练,学习了丰富的语言表示,可以应用于各种自然语言处理任务。

BERT模型的核心是Transformer编码器,它可以对输入的文本数据进行编码,并生成对应的上下文表示。BERT模型使用双向编码器,即同时考虑输入序列的左侧和右侧上下文,可以捕捉更全面的语言表示。在预训练阶段,BERT模型使用了两种不同的预训练任务:Masked Language Model(MLM)和Next Sentence Prediction(NSP)。

在MLM任务中,BERT模型会随机将一些单词替换成“[MASK]”标记,然后尝试预测这些标记所对应的单词。在NSP任务中,BERT模型需要判断两个句子是否是连续的。通过这两种任务的预训练,BERT模型可以学习到丰富的语言表示,从而可以应用于各种自然语言处理任务。

## 模型结构
BERT-large是BERT模型的一个更大、更复杂的版本。与BERT-base相比,BERT-large具有更多的层数、更多的参数和更深的网络结构,可以学习更深层次和更复杂的语言表示。

BERT-large包含24个Transformer编码器,每个编码器有1024个隐藏层,总共包含340M个参数。在预训练阶段,BERT-large使用更多的未标记的文本数据进行预训练,并使用Masked Language Model(MLM)和Next Sentence Prediction(NSP)两个任务来优化模型。BERT-large的预训练阶段比BERT-base更复杂,并且需要更长的时间来训练。

## 数据集
模型训练的数据集来自Wikipedia 2020/01/01,即一种常用的自然语言处理数据集,它包含了维基百科上的文章和对应的摘要(即第一段内容),可用于各种文本相关的任务,例如文本分类、文本摘要、命名实体识别等。

下载+预处理数据可按照下述进行,最终获得的输入数据如下图所示:

    ./input_preprocessing/prepare_data.sh --outputdir /workspace/bert_data 
    python3 models/load_tf_checkpoint.py \
        /workspace/bert_data/phase1/model.ckpt-28252 \
        /workspace/bert_data/phase1/model.ckpt-28252.tf_pickled
![image-20230410143225383](C:\Users\liang\AppData\Roaming\Typora\typora-user-images\image-20230410143225383.png)

## 训练

### 环境配置
提供[光源](https://www.sourcefind.cn/#/service-details)拉取的训练的docker镜像:
* 训练镜像:

python依赖安装:

    pip3 install -r requirement.txt
### 训练
训练命令(此处以单机8卡规模为例说明):

    bash run_8gpu.sh
    #不同环境的配置及数据的存放路径会有不同,请根据实际情况进行调整run_benchmark_8gpu.sh脚本中的如下内容:
    BASE_DATA_DIR=${BASE_DATA_DIR:-"/public/DL_DATA/mlperf/bert"} //调整为具体的数据的路径

### 预训练模型
/workspace/bert_data文件夹存放预训练模型如下:

    ├── /workpalce/bert_data/phase1
    └── └──model.ckpt-28252.tf_pickled #预训练模型 
### 单卡测试
测试命令:

    bash run_1gpu.sh

## 性能和准确率数据
测试采用上述输入数据,加速卡采用Z100L,下面为单机8卡测试结果:

| 测试平台 | Accuacy | Speed(seq/s) |
| :------: | :-----: | :----------: |
|  Z100L   |  0.72   |    89.59     |

## 历史版本
* https://developer.hpccube.com/codes/modelzoo/mlperf_bert-large
## 参考
* https://mlcommons.org/en/
* https://github.com/mlcommons