模型推理:BERT的SQuAD任务

模型推理:BERT的SQuAD任务

本实验主要介绍通过寒武纪的高性能算子,完成同等于BertForQuestionAnswering模型所能支持的问答任务。
难易程度: 中级|实验人次:1685

一、内容和目标

 

1. 实验内容

  1. 本实验主要介绍基于寒武纪 MLU370,使用寒武纪高性能算子,完成同等于 BertForQuestionAnswering 模型所能支持的问答任务。

  2. 基于寒武纪 MLU370 高性能大算子,您可以读取SQuAD 数据集,对相应的统计结果进行评估。

 

2. 实验目标

  1. 掌握使用寒武纪 MLU370 大算子进行模型推理的基本方法。

  2. 理解 Bert 模型的整体网络结构及其开发调试细节。

 

二、前置知识

 

1. 寒武纪软硬件平台介绍

  •   硬件:寒武纪 MLU370 AI 计算卡

  •   框架:PyTorch 1.6 、CNNL

  •   系统环境:寒武纪云平台

 

三、网络结构

Bert 模型的全称是:BidirectionalEncoder Representations from Transformer,也就是说,Transformer 是组成 Bert 的核心模块,而 Attention 机制又是 Transformer 中最关键的部分。

网络结构如下图所示:

 

其中:

【Attention】

Attention 的主要作用是把“注意力”放在一部分输入上。它主要涉及到3个概念:Query、Key 和 Value。在增强字的语义表示这个应用场景中,目标字及其上下文的字都有各自的原始 Value,Attention 机制将目标字作为 Query、其上下文的各个字作为Key,并将 Query 与各个 Key 的相似性作为加权系数,把上下文各个字的 Value 融入目标字的原始 Value 中。

 

【Transformer Encoder】

Transformer Encoder 在 Multi-head Self-Attention 之上又添加了三种关键操作:

1)残差连接(ResidualConnection)

2)Layer Normalization

3)线性转换

 

【Bert】

组装好TransformerEncoder之后,再把多个 Transformer Encoder一层一层地堆叠起来,Bert 模型就组装完成了。

 

四、模型推理

模型推理整体流程如下图所示:

 

STEP 1. 工程准备

  1. 预训练模型准备:本实验的模型是寒武纪自己训练的模型,并将其放置于/workspace/model 目录下。

  2. 搭建环境:pip install -r requirements.txt

 

STEP 2. 工程运行

  1. 构造我们提供的 PyBert 对象。

  2. allocate 接口完成 Bert 模型在 MLU内存上的分配。

  3. get_weights 从文件读取并处理成 example_bert_pre_weights, example_encoder_weights, example_bert_post_weights

  4. load_weight 接口完成从文件加载模型到MLU上。

  5. 调用forward 进行推理。

  6. 调用RawResult对结果进行后处理。

 

五、相关链接

实验代码仓库:https://gitee.com/cambricon/practices

Modelzoo仓库:https://gitee.com/cambricon/modelzoo

 

申 请 试 用